Inspiration
Zion's been interested in plants and gardening for a while, and saw the opportunity to use his experience with embedded hardware in a practical setting. We're all passionate about making data-backed decisions, so this idea was a natural conclusion. Making it fun and user-friendly was a big push for us, as we wanted to create an MVP that provides value to anyone while keeping it simple.
What it does
Using a variety of sensors communicating over I2C, we collect data every 10 minutes from a plant. That data is sent to our web app, hosted on Railway, which is projected to a mini touchscreen. We have a set database of plant information within, pulled from the open-source MiFloraDB dataset. This data is used to establish parameters for safe ranges for our sensor inputs, alerting users about failures and what to do about them. Interaction with the dashboard is all handled with a fish audio voice-to-text. Another feature we implemented was the ability to ask a Gemini agent about taking care of your plant better given your observations, contextualized with the last 24 hours of data entries and the database of best practices for that type of plant.
How we built it
Zion (the ESP32 and sensors) Zion wrote the firmware: it reads the DHT11, the SEN63C air sensor, and the Stemma soil probe every 10 minutes and publishes the readings over MQTT. Readings that a sensor stops refreshing are dropped instead of repeated forever, warm-up CO2 values aren't sent, the soil probe reconnects on its own, and time sync falls back to a public server. A PC test runs the real loop against fake sensors.
Connor (the Pi) Connor built the central piece. The Pi runs Mosquitto, the touchscreen kiosk that shows the plant on the 2.8" screen, and the controller that relays every reading to the cloud. A setup script saves the token safely and tests it. From there, readings go to an ingest service on Railway, into the Tiger database, and out to the dashboard. The Pi screen reads the ESP32 directly, so it keeps working without internet. Only the mic and Gemini need the cloud.
Eli (the app, cloud and product) Eli led the product and the glue: the device screen with the on-screen mic button, alerts and wilting plants, the greenhouse dashboard, and the voice setup flow. We added the ingest service on Railway, which stores readings in the Tiger database, and shows the real pot as a LIVE plant on the dashboard. Plant knowledge from the MiFloraDB open data now lives in Tiger. Gemini matches what you say to one of 12 plants and answers questions from the plant's care notes, the live readings and the last 24 hours. If the cloud is down, the screen falls back to its local matcher.
Challenges we ran into
Building with new tools was difficult - our software lead, Eli, hasn't worked with any of the api's but gemini before, and is new to using so many different calls. Time was the major difficulty for us as first-time hackers. Zion underestimated the time necessary to get the hardware stack running, and Connor underestimated how much sleep he needs.
Accomplishments that we're proud of
Full implementation and scalability planning Practical application across wide markets Multidisciplinary cooperation and organization Building an AI-enabled hardware system designed for a field none of us are too comfortable in. Making technology we would use.
What we learned
Working in a team with vastly different skills helps with owning our own parts of a project. Connection is easy if you're all on the same page from the get-go, meaning documentation is everything. Ideation is incredibly powerful. By reserving our first 30 minutes of hacking for ideation and discussion, we were able to develop a compelling idea we were all motivated to build.
What's next for Greenhouse AI
Open source our design after some cleaning, allowing users to contribute to a vast database of plant data and monitor the health of their plant with real data-backed features in a user friendly manner. Scale to the dashboard version, working with greenhouses similar to the one we live across the street from to better automate their tasks and monitor plant health.
Built With
- c++
- dht11
- esp32
- fishaudio
- gemini
- mifloradb
- mosquitto
- mqtt
- node.js
- platformio
- postgresql
- python
- railway
- raspberrypi5
- react
- sen63c
- stemma-soil
- tigerdata
- timescaledb
- typescript
- vite
- websockets