3D-Printed Arduino-Controlled Hydroponic Garden
Introduction: 3D-Printed Arduino-Controlled Hydroponic Garden
Building a device that waters plants is something we all have wanted to or tried to build. Forgetting to water plants is a common struggle, and, in a hydroponic system such as mine, a flow of water from above helps keep the clay substrate moist and allows for nutrients to reach the roots.
I wanted to build something that gives the plant a little bit of water every day. I needed something that could control the water and timing, so I turned to Arduino. However, I don't have a water pump or anything that could control water, so I had to get creative with 3D printing.
This project is a prototype solution that definitely has some issues and areas for improvement. I designed it to use minimal specialized parts and turn whatever I had in my parts bin into something that could actually work. There are always simpler and more efficient solutions on the market, but it's more fun and challenging to do it yourself!
This article covers less of the specific 'click-here' instructions but provides higher-level details and ideas for how to replicate my version of a solution. I hope it gives you some inspiration to try building one yourself!
Supplies
This project uses a Hydroponic Setup, an Arduino microcontroller with some modules, and some 3D printed parts.
Each of those will be explained in-depth in the steps, but this is the list of components:
Hydroponic Setup:
* LED light strips
* Power adapter
* Wall socket timer
* Growth medium/method (I used a wicking system)
* Plants!
Arduino:
* Arduino Board
* Power supply (battery or cable)
* Photoresistor
* Servo
* Resistor (10k ohms)
* Wires
3D Printed Parts*:
* L-Joint for Bottle
* L-Joint for straws
* Water Valve/equivalent controller
Other:
* Straws
* Plastic Water Bottle
* I haven't provided the STL files for the 3D designs I created for this project. They are prototypes that still have many iterations ahead of them. However, part of the fun is in creating your own parts, and I hope you have enough guidance from this article to create your own parts that work even better!
Step 1: Hydroponic Setup
The lighting system here uses two LED strips that connect to a +/- wall adapter supplying 12V. I have the adapter plugged into a timer intended for outdoor lights (e.g. Christmas lights), and have the lights on from 6:30 AM to 7:30 PM, giving the plants enough light to survive. There are two 30 minute breaks throughout the day that allow the lights to cool a little bit, which I am going to use as the trigger for the watering mechanism.
The actual plants use a system similar to the one in the second image The nutrients are not dissolved in the water, they are dispersed in the growing medium (calcined clay) in the form of small pellets. 120
As the roots grow, they move lower towards the reservoir, eventually growing straight into the reservoir. This means that, eventually, no water makes it up to the clay, and the nutrient pellets, which require moisture to release their nutrients, stay dormant. This means that the plant doesn't get any nutrients, which can lead to the plant not being able to survive. The watering mechanism helps keep the clay moist.
Step 2: Arduino
To water the plants, I'm using an Arduino. It uses a repetitive piece of code that checks the amount of light on the plants and actuates a servo if the conditions are met.
The condition for the light is whether the amount of light falls below a certain threshold, which indicates to the Arduino that the lights on the hydroponic setup are off for one of the two breaks during the day.
When the lights are off, the board tells a servo to turn to a specific angle, which opens a special 3D printed valve and lets water flow from the water bottle to the plant using gravity. The details of the parts and water tubes are shown in the next step, after this code breakdown:
1. Code establishes the servo and specific values that indicate angle values and light levels for reference
2. Code sets the valve to closed (just to be safe)
3. Code gets a measurement from the photoresistor, giving us light level
4. If the light level is less than the threshold, initiate the watering process
5. If it's greater than or equal to the threshold, do nothing
Throughout the code, you will see the use of the variable 'complete'. I used this to make sure the system doesn't water the plants every time it measures the light (every second) when the lights are off. That would turn into a watery mess. 120