Inspiration

Twenty years ago Italy covered its roofs with solar panels. Today those systems are being upgraded, and the old panels come down while still delivering around 80% of their original power. They are too inefficient for a roof, so they become waste. At the same time, hotter summers and irregular rain are stressing low, shade-loving plants. We asked: what if the panel nobody wants on the roof went to work on the ground, protecting a plant?

What it does

Solar Tracker is a two-axis solar panel that takes care of the plant growing underneath it.

  • Tracks the sun to produce energy, shading the plant while it does.
  • Gives light back when needed: a photoresistor under the panel detects when the plant gets less light than its species needs, and the panel turns edge-on to let the sun through.
  • Reacts to the weather: it stays tilted in the rain so water drains into a collection tank, and goes flat when strong gusts are forecast.
  • Recognizes the plant from a photo: one model identifies the species (1,081 species) and loads its care profile, a second one tells whether it looks healthy or wilted.
  • Waters on demand across four drip lines, using the collected rainwater, based on the plant's needs and the air conditions.
  • Shows everything on a web page served by the board, with manual control of the panel.

A demo mode plays a full simulated day in about four minutes, with real sensors, motors and LEDs.

How we built it

Everything runs on a single Arduino UNO Q, using both of its brains:

  • The STM32 microcontroller (Arduino sketch on Zephyr) reads two AHT20 temperature and humidity sensors and the photoresistor, drives two SG90 servos, the status LEDs and the four valve outputs, and enforces the safety rules.
  • The Qualcomm Linux side (Python) computes the sun position, fetches Open-Meteo forecasts, decides the panel pose and the watering, and runs two MobileNetV3-Small models with ONNX Runtime.

The two sides talk through Arduino RouterBridge, and the whole thing is packaged as an Arduino App Lab app with a plain HTML/JavaScript web page. We trained the plant-health model ourselves on a houseplants dataset and reused a species classifier trained on Pl@ntNet-300K. The panel mount and enclosures are 3D printed, and we designed two PCBs in KiCad: an L293D valve driver and an INA219 power monitor. The decision logic is covered by 41 automated tests that run on a PC without the board.

Challenges we ran into

  • Servos: the standard Servo library froze the sketch on this board, so we drive the servos directly from a Zephyr hardware PWM timer.
  • Two identical sensors: both AHT20s share the same fixed I2C address, so the second one runs on a separate software I2C bus.
  • 3.3 V board, 5 V shield: some pins are not 5 V tolerant, which forced us to rethink the pinout and read the photoresistor digitally.
  • Power: the UNO Q is a Linux computer, not a low-power microcontroller. Our small solar charger cannot keep up with it yet, so sizing battery and charger became a design problem of its own.
  • AI on the edge: the quantized species model hit a runtime compatibility error, and the species model does not know some common garden plants such as basil and tomato.

Underwater

Built With

Share this project:

Updates

Submission history