I noticed that not many people joined the challenge this year, so I decided to participate and hopefully encourage others to join as well.
As mentioned before, I’m unable to build anything physical this year. Instead, I’ll be developing software for the “anything goes” modification category.
If the community or organizers decide that software isn’t eligible, I might switch to the Hand Made (Basic Tools) category and join with the simple prototyping light. Otherwise, I’ll just use the competition timeframe as motivation to complete my project.
The Idea
My vision is to create a tool that allows people with no programming experience to generate firmware for flashlights and flash it to the device without any additional hardware.
The main goal is to make the process as simple as possible so that anyone who knows how to use a Windows PC can create their own custom firmware according to their personal preferences.
The Challenges
To achieve this, I need to solve three main problems:
- Firmware code generation
- The flashing (burning) process
- Installation and compatibility across different systems
The Approach
I’ve been thinking about this idea for some time and have done a bit of research. I believe it’s achievable by combining several open-source projects.
Flashing process:
This can be handled using CircuitPython, a beginner-friendly version of Python developed by Adafruit for microcontrollers. It allows you to write and run Python code directly on the device. Flashing the firmware is as simple as a drag and drop operation. Just like copying a file to a USB drive, you simply drop the code onto the driver MCU that is connected to your computer by a USB cable (same USB port use for charging).
Code generation:
My plan is to write a set of basic, parameterized functions for all necessary actions such as detecting switch clicks, long presses, and battery levels. The user will then be able to:
- Set the number of modes and light levels for each mode
- Define how to switch between modes
- Configure responses to events such as timers, temperature, or battery level
All these settings will be managed through a simple graphical user interface (GUI), so no programming knowledge will be required. Based on my research, this GUI can be built using standard Python libraries.
Compatibility and packaging:
To make the tool as accessible as possible, I plan to package the GUI and code generator into a single executable file, so users won’t need to install Python or any libraries. It looks like this can also be done entirely with Python.
The Learning Curve
Although Python seems to cover everything I need for this project, I have very limited experience with it, so I’ll be learning the language as I go.
What do you think?
I’d love to hear your thoughts, suggestions, or any advice from those with experience in Python or similar projects.






