Overview
Create a tiny ML audio recognition model that detects simple phrases like “house,” "bird," "happy," “yes,” and “no” powered entirely by a small solar panel. By limiting computation to available environmental energy, this project explores what it means to use AI within constraints, rather than treating it as an unlimited resource.
Keywords: TinyML, Solar Panel, Microcontroller, User-Centered Design
Team Members: Self-initiated project
Status: Completed Project (Live demo below)
Process
TinyML
Hardware: Arduino Nano RP2040 — chosen for Edge Impulse support and built-in microphone, avoiding external components.
I used a pre-collected Edge Impulse dataset to train a model detecting “yes” and “no,” using an MFE processing block and classifier. After some data hygiene, the results were strong.
Testing the model while conencted to computer
Tested the model with a battery to get idea for the real-time current draw required for classification
I realized adding more words was constrained more by RAM than runtime performance, since the model is preloaded. So I expanded the vocabulary to include “Happy,” “House,” and “Bird” to make it more interesting.
Energy
Using a 6V Solar panel, I tested the model being powered on a bright sunny day. The only external comments I had were in a LED so I knew I was fine in so far as voltage.
Challenge: But I was worried about the overall current draw of the system and if I would have enough. Sometimes it would restart itself.
Solution: I made the decision of swithcing out the red LED for a green one for less current draw. I also added in the Adafruit BQ25185 compnent with a 3.7V 1000 mA battery to help with current.
Current Calculations
Measured current draw (via battery):
Startup + setup: ~40 mA
Pulsing LED: ~39–40 mA
ML + e-ink: ~44 mA
Max power ≈ 4.5V × 0.044A ≈ 0.2W per classification
I suspect short spikes from the e-ink may not be fully captured.
Enclosure + Interaction
The key here is to show that AI is constrained by and negotiating with energy, not just obeying it. I also wanted to design a system that mimicked a familiar speech-to-text system so failures would clearly be read as energy limitations, not software issues
Design goals
Users should recognize “This is ML, it’s not just reacting.”
Users should understand “This runs on solar energy.”
Users should take away “Energy affects Intelligence.”
Solution: I added an eink display to show detected (and misheard) words.
Sketch Prototypes
Laser Cut Prototypes
The interaction mimics voice typing, and the user journey is as follows:
Press button [ similar to pressing the microphone icon]
LED pulses (ready state) [ similar to the colors and circle that surround the microphone when you click it]
Press again + speak
Output appears on e-ink like typed text [Similar to seeing your words typed out on the text box]
Final Notes
Continuous classification was possible, but I chose keyword spotting due to energy constraints
Memory is a key limitation (~1MB RAM), so vocabulary stayed small
Final system did not use the BQ25185 — improved solar conditions provided enough current
Future Considerations:
Explore continuous classification + writing while tracking energy spikes (especially from e-ink)
Better understand max current output from the solar panel in varying conditions
Compare energy cost of this system to inference in larger models (still unclear), and consider the energy required to train models as well