automated garden
Year: 2020
Context: Personal Development, Product research
Role: Designer, researcher, benefactor,
blend computer automation with plants. play god. eat great produce
Challenge:
Designing an automated garden system for personal use, what started as simple irrigation control evolved into complete control of light, water, and environmental variables. As far as these plants are concerned they reside in heaven, not humid Richmond VA.
My role:
Led research, prototyping, and iterative testing across both hardware and software (as someone with very little coding experience). Creating a system that can sense, respond, and adapt to its environment autonomously, ultimately reducing my labor by 80% while increasing output quality and quantity and extending remote capabilities for additional control and monitoring
process:
This system contains more iterations than any other project I’ve worked on. At the time I’m writing this, my home assistant server which runs everything is on build 108.
Like any iterative approach, I started small, Can I turn a pump on and off once a day. From there, can I do it more than once a day? Can I control either the total on time or the time per cycle? Can I send notifications to myself when it waters? Can I sense if the pump turned on but nothing came out? As this system has grown in complexity and usefulness, I’ve learned more and more about how the plants respond to those things. These learnings drive new features, new features provide improved learnings, and the cycle repeats.
My lights used to turn on and off with a timer. Now, they fade in and out, balancing blues and reds to mimic sunrise and sunset. These signals tell the plants to produce, as if it’s a late June sunrise even in January. I utilize UV and IR lights in particular moments and environmental conditions to combat pests and increase yields. I integrated dehumidifiers and my HVAC system to balance daytime versus nighttime temperature/humidity. I turned hard-coded values into variables that adjust either from user input or certain conditions that require them. Is it perfect? Not at all, it’s far from it in fact. But, there is something so incredibly freeing about having built up and torn down this system time and time again - even despite being in over my head, not knowing what a webhook was or how to use one when I started this, each iteration has increased functionality of the system.
That’s not to say each iteration has made it better, I’ve had moments where what I thought would be a simple update turns into hours of errors I have to figure out (or, even worse, days of something not running that should be), but, at the end of each iteration, some sort of functional improvement is there, whether it just be cleaner code I can debug easier next time, or completely re-working how I’ve been approaching an action, or integrating a new type of sensor/IO device.
The challenge with this project has never been running out of things it could do, it’s been learning how, where, and why to implement those backlog items, and evaluating what is worth implementing and what isn’t. (Okay, and it’s a little bit fun to eat a tomato right off of the vine like a baby giraffe).
outcome:
A reliable, fully automated garden system that met the needs of both the plants and the user. The system adapts to changing conditions, provides continuous feedback, and reduced daily maintenance to almost zero.
Very consistent watering cycles with hydroponic nutrients creates an environment where the plant learns that it needs for nothing, and rather than focusing energy on storing nutrients for inevitable droughts, the plant will focus on creating more fruit - net result, increased yield in less time than a plant that is hand watered.
Plants use environmental signals such as duration of light/dark cycles, temperature/humidity, and wavelength of available light to predict when it should start flowering such that it’s able to produce full fruits before winter comes and the plant dies off. By controlling these factors, we can reduce seed-to-flower time, which in an indoor grow means optimizing the amount of electricity and space any given grow cycle takes. Even small improvements of a week or two can result in “cheaper” produce when considering a year-round cycle.
Physical Insight:
This project reinforced that automation is as much about experimentation as it is about logic. Iteration and feedback loops are essential: every failure teaches something about the interaction between system, environment, and user. Designing the system made me think like both engineer and gardener, bridging digital control with real-world variability. Pushing myself to learn these new sensors and coding language provided a fresh insight into where IOT systems can provide value improving not only my personal produce section, but many other home improvement projects that extend well beyond the garden.