A smart sprinkler system for the rest of us... No soldering involved ! Just pile up a couple of shields on top of an arduino and control your sprinkler system from anywhere.

A couple of friends wanted to replicate the sprinkler system presented in this instructable but were scared by the complexity of it.

Well, it truly isn't complicated and it does not even require to solder anything if you pick the right parts... Since I long wanted to make the system more compact, I took the opportunity to make this solder-free arduino instructable. The system is very similar to (exactly the same as?) the previous instructable and just as open (supports scheduling, twitter etc...).

Connecting this arduino to your sprinkler system will allow you to remotely turn your garden watering on and off from any web-enabled device. From there you can make it as fancy or as simple as you wish.

Enjoy !

Step 1: Collect Parts

For this instructable you will need:
- 1 x arduino board
- 1 x ethernet shield (e.g. Ethernet Shield V1.0 for Arduino from http://www.nuelectronics.com )
- 1 x relay shield (http://seeedstudio.com/wiki/Relay_Shield)
- 1 x 10vDC adaptor (a recycled phone charger)
- 1 x momentary push button

You will not need:
- a soldering iron.
<p>How could we add to this system a water level sensor, so if use water from a bucket it checks if the level of water is to low and than notifies me trough let say pushbullet.</p>
<p>Hi:</p><p>I have used the barometrically operated micro switches from Washing machines to indicate if a tank of water is full. It does require a minimum of approx ten inches of water column to act, but the switch offers both NO and NC positions to operate. (Normally Open, and Normally Closed. Closed means On.)</p>
<p>sir,in my project of smart sprinkler ,the sprinkler should automatically get on for a set duration(for ex- if i set the timer on for 5-6 am everyday the sprinkler should get on automatically on the assigned days.)So, can it be done using a RTC(real time clock module for arduino.)??It wil keep a good eye on the activities of the user</p>
<p>where is the HTML code's please tell me i could not find the HTML code</p>
<p>Would it be possible to make it so it can control 8 valves? </p>
<p>Did you ever find out if this could be modified to 8? I need a system that can handle 12 zones. </p>
<p>I am very interested in this project could you email me the details to muzjanny@gmail.com</p>
<p>Hi,</p><p>I&rsquo;m irinakim and I&rsquo;m work in the Wiznet.</p><p>Thank you for using our product.</p><p>I want to upload the previous post together.</p><p>Can I post your product on our Web site?</p>
I still cant find the _arp code on the zip file is it possible to clip it out from somewhere else?
<p>Did you come right with tracking down the piece of code in the end as I have unzipped the correct etherShield_1.1.zip into the library directory and still nothing. When you open the ethershield.h you can see its missing these :</p><p>void ES_make_arp_answer_from_request(uint8_t *buf); // Added by Stuart</p><p>uint8_t ES_eth_type_is_ip_and_my_ip(uint8_t *buf,uint16_t len); // Added by Stuart</p><p>void ES_make_tcp_ack_from_any(uint8_t *buf,uint16_t len); </p><p> but i still get a compiling issue with Arduino IDE on line [es.ES_make_tcp_ack_from_any(buf);] saying:no matching funciton for call 'EtherShield::ES_make_tcp_ack_from_any(uint8_t[1001])'</p><p>I may be setting this up incorrectly :/</p>
<p>Nice job, I'm curious has the momentary button method changed in any way? <br>gd job..... </p>
Hey, <br> <br>its pretty good idea, so i thought to apply for my lawn, but i am getting error which says that &quot;Timer1 was not declared in the scope&quot;.....just for your reference, i already include the TimerOne.h file in my library.
<br> Make sure your TimerOne.h file contains:<br> <strong>extern TimerOne Timer1</strong><strong>;</strong><br> <br> and that your TimerOne.cpp file contains:<br> <strong>TimerOne Timer1;</strong><br> <br> If they don't, use the version of TimerOne.zip I have added to this instructable (extract into hardware\libraries)<br> <br> Good luck !<br> <br> N.
Hey thanks for replying so fast, however i used your eterShild library for my eternet shield, it is still give me below errors, what should i do? <br> <br>Web.cpp: In function 'void loop()': <br>Web:183: error: 'class EtherShield' has no member named 'ES_make_arp_answer_from_request' <br>Web:187: error: 'class EtherShield' has no member named 'ES_eth_type_is_ip_and_my_ip' <br>Web:205: error: 'class EtherShield' has no member named 'ES_make_tcp_ack_from_any' <br>Web:242: error: 'class EtherShield' has no member named 'ES_make_tcp_ack_from_any' <br>Web:243: error: 'class EtherShield' has no member named 'ES_make_tcp_ack_with_data
Make sure the file hardware/libraries/etherShield/etherShield.h contains: <br> <br>[...] <br>class EtherShield <br>{ <br> public: <br>[...] <br>void ES_make_arp_answer_from_request(uint8_t *buf); <br>uint8_t ES_eth_type_is_ip_and_my_ip(uint8_t *buf,uint16_t len); <br>etc... <br>[...] <br> <br>If it does, then your script is not including it, given the errors you have. <br> <br>If it doesn't, then replace the whole hardware/libraries/etherShield by the zipped file I attached to this instructable. <br> <br>N.
<p>Hi could you please tell me if you have continued with this project??? I am receiving these same errors and have spent ages trying to sort them out with no result. I have even used Arduino IDE 0022 and still the same issues. Have you got a more up to date script?? many thanks</p>
<p>Would there be any way to run the sprinklers on a timer, i.e. you type in a turn-on and turn-off time in the web application and the Arduino would turn on and off at these times?</p>
<p>i like it :)</p><p>did similar but requirements were slightly different. now we're working on Ardu Yun platform as hope it to be more efficient in web/remote management</p><p>see here: https://www.instructables.com/id/Watering-Garden-with-GARD-A-WATER-Arduino-Project/ </p>
Hi, I have tried to find the ehershield.h library and I think you might be using an older version of the library. I have checktout the latest with SVN from : http://ethershield.googlecode.com/svn/trunk/ Can you please give a link, or just upload the ehershield you have been using? Some of the class members are not there like:<br> ES_make_arp_answer_from_request<br> ES_eth_type_is_ip_and_my_ip<br> ES_make_tcp_ack_from_any<br> ES_make_tcp_ack_with_data Thanks,<br> MarKo
I just added the library (etherShield_1.1.zip).<br><br>I hope this helps.<br><br>Regards,<br>N.
<p>The etherShield.h included in etherShield_1.1.zip still doesn't include the declarations of the functions mentioned above. Can you please recheck this?</p>
<p>How much does that valve costs??</p>
I thought this was for a FIRE sprinkler, and I did a double take! Hahaha.
I think you could've done this without the ethernet shield, by using the serial port header on the router to communicate with the Arduino. Of course you would have had to write code to run on the router under dd_wrt, open_wrt ..etc
Seeing that this relay shield only has 4 relays, couldn't you use this 16 relay one?<br> <br> <a rel="nofollow">http://www.amazon.com/gp/product/B0057OC66U/ref=ox_sc_act_title_2?ie=UTF8&amp;psc=1&amp;smid=A10EAPE4CAYC9P</a>
This looks pretty promising for me. Just wondering, would it be possible to extend this circuit to ALSO come on briefly upon a motion sensor being triggered? I'd like this for animal/pest control. I'm somewhat experienced with Arduino programming.
You may have uploaded etherShield_1.1.zip but it doesn't fix the problem!
I have tried and compiled my code and... it compiles. <br>For the avoidance of doubt I am using the arduino ide 0022. <br>What ide are you using ? <br>N.
Nice job, I'm curious has the momentary button method changed in any way? <br> <br>I found I had to disconnect mine because I ran it in cat5 to the solenoids which caused false triggers with brown outs all the time. <br> <br>Thanks
Hmm, if you are having problems like this, it is probably because your cat5 acts as a big antenna. Instead of using the internal pull up, you could consider using a resistor at the end of your cat5, so that no wire is open-ended. <br> <br>Use a twisted pair for the permanent connection (Vcc and A0 if you are using my code) and connect it to a resistor (pull-up) at the far end of your cable. <br> <br>Pressing the button will connect A0 to ground (when this happens, the resistor is between ground and vcc, right?). <br> <br>It turns out that the only difference (not on purpose though) between version 1 and version 2 of my system is this very point: I use the pull-down resistor of the momentary button's shield instead of the arduino's internal one. <br> <br>I hope this helps, <br> <br>Regards, <br> <br>N.
What is the voltage of your solenoid valves? 24? <br>
yep, 24v AC (from Gardena)
cool! what are you using each of the three zones for? can you automate each of them separately?
Thanks. <br> <br>The 3 zones is because I don't have enough pressure at the tap to water the entire garden at once. So I turn on one zone at a time. <br> <br>I automate watering with a script in the crontab of my linux box (detailed in my other 'ible): <br> <br># m h dom mon dow command <br>01 19 * * 0-6 /bin/bash sprinkler.sh -on 1 <br>21 19 * * 0-6 /bin/bash sprinkler.sh -on 2 <br>41 19 * * 0-6 /bin/bash sprinkler.sh -on 3 <br>51 19 * * 0-6 /bin/bash sprinkler.sh # everything off <br> <br>Regards, <br>N. <br>

About This Instructable




More by nicoo:Hacked roomba + arduino snowballs into a Eurobot 2013 entry... Flashing bootloader into Arduino UNO R3 Arduino Sprinkler System + Web control 
Add instructable to: