Hyduino - Automated Hydroponics With an Arduino

285K1.6K85

Intro: Hyduino - Automated Hydroponics With an Arduino

So, you may be wondering...WHAT IS HYDROPONICS?

Basically, hydroponics is growing plants without the use of a traditional dirt medium by using a nutrient rich water solution. Those mediums used to "plant" in range from fiberglass to sand and from fired clay balls to nothing at all. Several branches of hydroponics include aeroponics, aquaponics, etc. But WHY would I want to take all this extra time and effort to grow my plants in this "special water"? Well, hydroponically grown foods not only taste better and are more nutritional, you can change the properties of your food, monitor what goes into your food and pollute less. You can also grow more in less space. This is especially great for those people that that have limited areas in their backyard to grow in. With the right plant selection, you can also keep pests away; a citronella plant has oils that keep away mosquitoes and other pests. Now if this wasn't enough for you to jump right in to hydroponics, listen to this: hydroponics uses 70 to 90 percent LESS water than conventional growing does.


Remember, if you like this Instructable, please be sure to Favorite it, Subscribe, and vote for it in the Microcontroller Contest!

STEP 1: Gather Your Supplies

To build the Hydruino, you're going to need to first gather some supplies.

These aren't necessarily the cheapest places to get these items, so if you're not in a rush, consider searching on a place like dx.com or on other eBay listings (may or may not be shippnig from China) to find the best possible deal.

STEP 2: Building

What I ended up doing was constructing basically a "table" for the system to sit on. The weight of the water in the drain pipe makes it heavy enough for it to easily stay on without a problem. The nice thing about this is that it can be easily scaled to almost any size and all the instructions stay the same (except for the actual construction of the system of course) - there would be no need to change the code...maybe just things like adding more lights, fans, etc.

I don't have a digital copy of all the dimensions of the pipe if you're looking to make a replica of what I've done, but I'll try to get everything entered in within the next couple of days.

For the reservoir, you'll need to drill two holes for the float sensors - one at the very lowest your water can be and one at the top - and also a hole for the solenoid to fit in (which you will glue in). To connect a garden hose to the solenoid, I used 3/4" hose to pipe adapter made by Orbit (found at Home Depot) and a 3/4" to 1/2" reducer to get it down to the right size.

Once you've constructed the frame, you'll want to wrap the entire thing in a transparent plastic, of which you'll have to cut out a couple holes for your fans. With the drain pipe, you'll want to drill out about 3 1/2" or so holes with a hole saw so your pots will fit in. Cut a hole in each end of the drain pipe - one is where water is pumped in from the reservoir, the other is where water drains out back in to the reservoir to be recirculated.

I never got finished with the container for everything to fit into, however, I'm sure that shouldn't be a problem for most of you to figure out. I took the cardboard that my relay shield came in and am working on getting everything to fit in there, since that's a really easy way to put it all together, but you can use whatever you'd like.

STEP 3: Wiring

Here is a list of the pins:

  • A1 - Photoresistor
  • A2 - pH Sensor
  • 7 - Lower Float Sensor
  • 8 - Upper Float Sensor
  • 20/21 - RTC
  • 43 - pH Min Peristaltic Pump (Relay)
  • 45 - pH Plus Peristaltic Pump (Relay)
  • 47 - Solenoid Valve (Relay)
  • 48 - Grow Lights (Relay)
  • 49 - Fans (Relay)
  • 50 - Temperature/Humidity Sensor
  • 53 - SD Card

For the float sensors, you're going to have to add in a resistor on each, as shown here, for it to work effectively with your Arduino.

STEP 4: Code

Attached is the most current Arduino code for the project. It will be updated based on feedback given by others; I don't expect my way to always be the best way! I haven't had weeks to test it "out in the real world" so there may still be a few kinks in it. Be sure to adjust the lux value for measuring the time for the supplemental lights...the optimal value may vary depending upon your sensor. Also, if you're using a different pH sensor, the calculations may need to be changed to fit that particular one. Big thanks to BillieBricks for working out a lot of the code.

Most Recent Update: v1.0 - November 10, 2014

STEP 5: Congratulations!

Congratulations! You've successfully (hopefully!) built your first (or second, or third...) hydroponics system! You're now able to grow your plants in a smaller area while also using less water. Remember that you'll have to keep track of how often to add nutrient mixture. This system could be easily modified or scaled to fit your needs/desires. Please feel free to leave feedback, especially on the code, as there is always room for improvement and it will only help everyone!

Also, please vote for me in the Microcontroller Contest! It would be amazing to have any of those prizes that they're giving out! Thank you!

75 Comments

I think this will be my first full instructable project. Great Job.

Good.... project...

I feel that there are many one who buy it with some plants with ethernet shield to control via internet.

For your next project, and the last word in hydroponics automation, combine this with one of the spectrometer projects on Instructables to give a readout of the nutrient concentrations and a mechanism for adding them based on the measurements. :-)

Super, will try this in the new year for veggies outside.

awesome job, thanks so much for sharing! how long did this project take you?

no problem! thanks for the compliment! It wasn't *too* time consuming after I had planned everything out. If you had all the parts or were able to go to a local store to get them, you should probably be able to finish it in a weekend.

It's funny finally seeing a project such as this on here. I have been toying with the idea for a little while and using the Mega ADK. However...have you looked into the use of a different light spectrum? The F3 light spectrum works fine to mimic summer early fall...but Nasa has released the X5. 6500 Kelvin white with blue mixture. Also...a varient of the octostroller would work but would require a beagle bone to drive it and a 60amp power supply for the 5v. Still yet...great design!! I've honestly debated on using MISO/MOSI and controlling other microcontrollers to do pH.

Once again...THANKS FOR SHARING!!!

Great project, I am working on my own, but if I didn't, I would probably have used your design.

One question though. In the pin numbers you mention pin 53 for SD chip select, but you use pin 51 and 52, which are used for communicating with the SD card. Is this a typo or is this really true, cause if it is, you won't be able to use the SD card.

You're totally right in pointing that out! Yes, apparently I mistyped the pin numbers in the list...thanks! Good luck on your project!

thank you! if you are still around all these years after, I would like to ask if you have ideas as to how to incorporate the internet/digital apps into the project to monitor from a phone? many thanks again!
Could you provide more details of TFT wiring
thank you

well i read many about this project, its sounds really good, i think i understand all to star working, except how to connect the 3.2" TFT LCD Shield, anyone can help me with that please? Thank you so much

I'm looking for the same thing did you get an answer

hello. i have this problem .... help please !!!!!

C:\Users\peeva\Downloads\FSR83MHI2G1F678\FSR83MHI2G1F678.ino: In function 'void setup()':

FSR83MHI2G1F678:123: error: 'class DateTime' has no member named 'get'

start_time = now.get ();

^

C:\Users\peeva\Downloads\FSR83MHI2G1F678\FSR83MHI2G1F678.ino: In function 'void LightControl()':

FSR83MHI2G1F678:1548: error: 'class DateTime' has no member named 'get'

seconds_for_this_cycle = now.get() - seconds_elapsed_total;

^

FSR83MHI2G1F678:1549: error: 'class DateTime' has no member named 'get'

seconds_elapsed_total = now.get() - start_time;

^

exit status 1

'class DateTime' has no member named 'get'

Hello Friend
have you found the solution for this error
if you have the correct .ino file please share or if you have any solution please share
More Comments