The Inspiration
Efficiency. The biggest question of sustainable energy. How can we optimize the output obtained by an energy source? The more efficient we can make sustainable energy systems, the more incentive there is to move towards them. Specifically, I targeted solar; moving away from passive or single-axis-tracking solar panel systems to dual-axis-tracking ones. But the problem is, dual-axis systems are uncommon and underutilized; I wanted to fix that by making a prototype of an affordable, simple dual-axis light-tracking setup.
The Project:
Two SG90 servos & a photoresistor sensor module being powered and processed by an Arduino Uno. Top platform moves in 2 axes (pitch and roll), with the photoresistor sensor mounted on top. Upon powering, the system automatically runs an array to find the highest source of light, and locks on to the target. Then, it continues to "jitter", making slight movements (delta) in each axis, moving its "lock" point if the change in position detects a higher brightness level, ensuring that as light levels change, the system stays on a local maximum.
How I built it
I started on the whiteboard. Drew out some sketches, figured out possible servo geometries. Then, I gathered parts. Due to the low on-campus part inventory, I salvaged old cardboard, jumper wires, and SG90 motors to construct the mechanism.
For the electrical components, I used an Arduino UNO ecosystem, powering the SG90's and the photoresistor module with the Uno's 5V pin with a breadboard. For the mechanical components, I used a simple, rapid-prototyping based process using tape, rubber bands, glue, and cardboard. On the programming side, I used the Arduino IDE to write C++ firmware with Claude Code.
Challenges & Failures
Iteration was key to this build. A significant challenge I faced was countering backlash; creating a mechanism that had little mechanical "slop", because tracking a light source accurately while dealing with slop is inefficient. To counter this challenge, I used rubber bands to add tension, stiffer items like pencils and thicker forms of cardboard to add rigidity, and used alternative taping/gluing methods to maximize mechanical robustness.
Additionally, finding parts was a challenge. Many components that I wanted to use, such as an IMU, were unattainable, causing me to pivot ideas during the Hackathon. Still, I used the resources I had to create a viable.
Accomplishments that we're proud of
As this is my first ever Hackathon, I'm most proud that I completed a working project. This isn't something that I had to quit on after making it halfway; I designed, built, wired, and programmed the whole thing, and it came out successful.
Additionally, the project serves as an important proof of concept. Using a phone flashlight, I'm able to allow the system to find the brightest source of light, and it locks on to my flashlight. Even as I move the light source, the system adapts.
What I learned
This project was a huge learning experience. Firstly, I learned the importance of proper planning and preparation. Because of the time constraint, I tried to "rush" through, and often made mistakes (like using the wrong material or forgetting to check out parts), that ended up costing me more time than if I had simply spent time in the beginning doing proper planning. Adding on to this, I developed documentation skills; the idea of taking pictures and notes throughout the build process, because those documents may end up being useful later. I also improved my firmware skills; writing code in C++ to interface with microcontrollers and hardware.
What's next for HelioDual
Integrating more than one photoresistor module will help avoid the "jitter" motion currently being used to detect change. Right now, I used only one photoresistor because that was the only module available. I also want to test with different types of dark covers over the photoresistor for isolating light; there's likely a way to optimize this. Right now, I have a single black cylindrical paper tube at an arbitrary 2.75cm length encapsulating the sensor.
Log in or sign up for Devpost to join the conversation.