loading

A watering controller that can be home networked

Featured
Picture of A watering controller that can be home networked
Old Controller.JPG
New controller.JPG

A couple of weeks ago, I published a great little controller module that provided 6 relays able to be controlled from a computer via a network.  After I published it, I got to thinking that the same basic design, with a couple of changes could be pressed into service as a garden watering system controller.  So, I got to work, modified the design, and here you have it...  A sprinkler controller that runs by itself, that can be programmed and monitored from your computer via your home network.

This specific version of my sprinkler controller obeys some simple rules that have had to be implemented where I live.  I live in Australia, or more specifically in an inland region called the A.C.T, where our government have implemented an ODDS and EVENS watering regime.  Under the system if you live in an odd numbered house, you may water on an odd day of the month.  Likewise, if you live in an even numbered house, you may water on an even day of the month.  Everybody may water on the 31st.

This system, along with the mandatory replacement of sprinklers for dripper systems has sucesfully reduced the load on the cities limited inland water supply so that more drastic measures were not required.

Unfortunately, this system was unable to be implemented on my commercial water controller, it wanted to water on a Monday, or a Wednesday, so I was breaking the law, and subjecting myself to a potential fine every other week...  So I had to build my own controller.

This instructable shows how I built it - there certainly is enough detail shown so that you can make it yourself if you are enthusiastic, and willing to give it a go. 

Update:  the full source tree for the Kicad project is located here
 
Remove these adsRemove these ads by Signing Up

Step 1: How do you drive the solenoids?

Picture of How do you drive the solenoids?

The sprinkler controller is built on the base of my Adruino Ethernet controller.  The Arduino ethernet controller provided a basic network connected ATMega328 chip, and had a number of spare I/O lines. 

I extended the PCB design to provide 6 solid state outputs, each able to drive +12v at 300mA, which is enough for a watering solenoid.

Each solenoid output is driven from a NPN transistor, as shown by the attached picture.  To turn on the transistor, the port pin is simply driven high.  I decided to use individual transistors, as they cost $0.03 each, and if they are destroyed, they are individually replaceable easily.

There is also a DS1302 RTC chip on the PCB - it is simply driven directly off 3 pins of the Arduino.

The whole board is driven by a 12VDC plug pack transformer.

It is not sensible to describe the full details of the Ethernet controller here, just check out the Arduino Ethernet controller (which is basically an Arduino and a NuElectronics shield) for info.

You will find the full schematic diagram attached as a PDF.

Step 2: Making the board

Picture of Making the board
DSC_2088.JPG
DSC_2090.JPG

To make the PCB, I used press-n-peel and toner transfer, as I do for all of my projects.

Essentially, I print the PCB layout onto some toner transfer paper.  I use Press-n-peel Blue, which costs a bit of money, but is beautifully reliable.  That is then laminated onto some clean PCB stock the paper is removed, and the layout is touched up using a permanent marker where there are dust spots.

Then I etch the board using a mixture of 120mL Hydrochloric Acid, and 240mL of Hydrogen Peroxide (20%) - The excess copper is dissolved in about 5 minutes, then the board is thoroughly washed to ensure that all acid is removed.

Then I scrub the toner material off the board using steel wool, and protect the board using a solder through spray lacquer.

Finally, I drill the board using my trusty Dremmel (Which has been working great for 20 years)

I have made hundreds of boards using this method, and it works really well.  Just be very careful using acids - wear eye protection, old clothes, and gloves.  And make sure that you protect your stainless steel laundry sink.  I protect mine by filling it with 10Litres of water, that way when a couple of drops of acid end up in it while I am rinsing off a board, it is diluted by lots and doesn't damage anything.    :-)

Step 3: Soldering the components

Picture of Soldering the components
DSC_2093.JPG
DSC_2095.JPG
DSC_2101.JPG

Once the board has been made, I solder the parts onto it.

My board needed a few jumpers, because I can't make double sided boards at home, so I soldered them in first.

I used surface mount parts for some of the components.  These were soldered onto the back of the board next.  These components are simple to solder and it is well worth taking the effort to get them soldered - as I do more and more of them, I am finding it easier and easier.

There are many great instructables on how to solder surface mount parts, just have a look at one of them for ideas.

After the surface mount parts are soldered, continue by soldering the rest of the components. 

I have created an assembly manual that shows the steps that I used.  If I decide to make kits, this will be the manual that I will supply.  It is attached.

Step 4: Programming the micro


After all of the parts have been mounted, load the code into the micro.

I use a FTDI USB-TTL cable for all of my Arduino programming work.  If you don't have a cable, you can use your Arduinoboard.  Simply unplug the micro from your board, plug in the ATMega328.  Program it as per normal, and then move the programmed chip into the sprinkler controller.

Easy!

Here is the code for the project as a PDE file.

Step 5: Testing and programming

Picture of Testing and programming
Time-closeup.PNG
Program-closeup.PNG

Now that you have the micro programmed, plug it into the board, and apply power.

The yellow led at the bottom of the board should flash a couple of times.  If it does - YAY IT WORKS - if it doesn't, check for solder shorts and misplaced components.

Connect an ethernet cable between the board and your computer.

Make sure that the IP of your computer is 192.168.1.1 (for the default range in the code), open a web browser to 192.168.1.2, and you should see the screen below!

If you can see it - you are there.  Set the clock, and define when you want the watering to happen, and create your program.

There you have it - you are there!!!!

If you decide that your home network is on address 10.0.0.x then you can simply modify the line in the PDE file to put the controller on the 10.0.0.x network and re-program the chip.

ie change these lines from this:

static uint8_t myip[4] = {192,168,1,2};      
static char baseurl[]="http://192.168.1.2/";

to

static uint8_t myip[4] = {10,0,0,12};
static char baseurl[]="http://10.0.0.12/";

Step 6: Parts List

Capacitors

10uF SM  x 4
18pF SM x  4
0.1uF SM x 3

Resistors
51R   x 4
270R x 12
470R x 6
2K7 x 1
10K x 3

Semiconductors
AtMega168 micro (DIP)   x 1
DS1302 RTC (DIP)  x 1
ENC28J60 Ethernet (DIP) x 1
74HC08 AND Gate (SOIC) x 1
GREEN LED 5mm x 6
YELLOW LED 5mm x 1
RED LED 5mm x 1
BLUE LED 3mm x 2
BC547 Transistor x 6
1N4004 Diode x 7
16Mhz crystal x 1
32768Khz Crystal x1
25 Mhz crystal x 1
78L05 Regulator x 1
78L33 regulator x 1

Hardware
2 Pin PCB screw connector x 4
3 Pin PCB screw connector  x 1
6 pin 0.1 inch pin array x 1
Small Pushbutton x 2
RJ45 MagJack from Sparkfun x 1
(http://www.sparkfun.com/commerce/product_info.php?products_id=8534)
8 Pin IC Socket  x 1
28 Pin IC Socket x  2

Step 7: PCB Artwork


Here are the PCB files for toner transfer

Step 8: Where to now?


I am glad you asked...

1.  I will be extending the code to be more general - Not everywhere on the world has the ODDS and EVENS system in place, and some people can water whenever they want.  The code changes should be pretty minor.

2.  In an ideal world I would understand how to make the interfaces better.  At the moment, string space on the ATMega328 is sooo limited that it has been a shoe horning exercise getting everything to fit.

3.  Adding recording data would be great - It would be cool to ask the watering controller how much water I used this month.

In all - lots of options to improve the project - but this is the point where I had to say - "That will do Pig, That will do'.

If you don't understand the reference above, you need to hire a copy of 'Babe from 1995' 


PS - There is no security on this device - making it accessible to the whole world via the Big Bad Internet (tm) would be a bad thing.  Would you give the Internet access to your tap out the back of your house???  I didn't think so :-)

Step 9: DC vs AC Solenoids.


There have been many comments on this Instructable regarding DC vs AC solenoids.

I am using Rainwater 24V AC Solenoids - and they operate well using 12V DC.

Essentially, when operating a solenoid outside it's design specification, you have to understand that your experience may vary, depending on the manufacturer.

As one posted indicated, the inductance of the coil is what limits the current flowing through the solenoid to a safe value when driven in an AC circuit.  In a DC circuit, there is no inductance, just the resistance of the coil.  I would never recommend operating a 24V AC coil at 24V DC, that will certainly overheat the wiring, leading to premature failure.

One commenter did mention that using a coil with DC will increase the amount of heat that it had to dissipate - This is correct, as long as you don't reduce the supply voltage.  Depending on the DC resistance of the coil, you may find that your specific coils run just fine.

My advice, use a 12V battery, and a multimeter measuring current, and see whether (a) the coil is pulled in enough to run, and (b) how much current is flowing when the coil is energized.  As long as there is less than about half an amp, then you are likely to have no problems.

I am working on a 24V AC version of this design, so that peoples concerns are alleviated - but that won't run using a solar cell as it needs an AC supply to operate.
1-40 of 73Next »
will1738822 months ago

This project is awsome. thanks for putting it out there. I re designed your idea and made it networked with security. No flaws sofar. I set it up to my phone and i can control the sprinklers before i get home or just to show off...

diy_bloke1 year ago

Your project is great, was and still is, but by now, selfbuilding it is just not wise anymore. the chip will cost me 4 euro, the magjack 5 (al locally sourced) but for an entire ready made board from china I now pay abt 4 euro.

https://www.dx.com/p/enc28j60-ethernet-lan-network...
Dont get me wrong, it is a great thing you did and at the time the best solution, but u have been overtaken by cheap foreign labour :-)

Hello, congratulations for the project, very good!!
Can you help me?
I want to do this project with atmega8, would pass me the HEX file? is it possible?

thank you
drj113 (author)  andregiovanni2 years ago
Hi,

Unfortunately, the project is designed for the Arduino platform, so I do not have any hex files.
gentry drj1131 year ago

Also, you really do need all 32K of memory on the Atmega 328. An Atmega8 wouldn't even have room for the ethernet library. Atmega328s are cheaper than Atmega8s (at Newark, Mouser, and Digi-Key in the US), and they're pin compatible, so just use an Atmega328.

dcms42 years ago
I was interested to see if this project could be done without connecting it to the net. I'd much rather just have the sketch control the system. Additionally i was trying to isolate the sprinkler control portion to make a shield instead of an all in one board. Would anyone care to be awesome and isolate the part of the schematic that would be used to make such a shield.
jrogers422 years ago
Newbie question:

Why does the part list say ATMega168 but the instruction mentions ATMega328 several times? Are these interchangeable?

drj113 (author)  jrogers422 years ago
The 328 is an upgraded 168 chip - more memory - cheaper :-)

ozdenmir2 years ago
Great instructable very well documented. I build the controller but I need help with the program. Is it possible to modify the pde to make the controller able to water every day? and how? Thanks.
zhenry13 years ago
Awesome! I've been planning a project like this for a while. I've got an old (20 years, maybe?) rainbird controller with 12 zones that looks to be expandable to 16. The zone switching and programming logic are on different boards, so I'm thinking I could connect the switch board to a computer or device like you have to run my own programmin. The whole zone switch board is connected to the scheduling logic with what looks to be a regular 24 pin ATX connector, with each zone going to a different pin. I'm needing some help figuring out how to connect the 24 pin ATX to a usb or serial interface so I can program the sprinklers with a computer, and eventually with a setup like you have.
zhenry1 zhenry13 years ago
Here are some pics
120614_0000.jpg120614_0001.jpg
diy_bloke3 years ago
Just out of general interest for the watering code in ACT. Is there just a code for using sprinklers or a hose on odd or even days or is it even forbidden to go around with a can to give thirstuy plants some relief.

As I am sure everybody is still allowed to take a bath everyday, would it be allowed ot water your garden with bathwater, even if it is not 'your day'?

I know it ha slittle to do with this project, I was just interested
drj113 (author)  diy_bloke3 years ago
Thats a briliant question.

The focus of the law was to reduce water consumption from a tap. You could bath every day, and use a watering can every day - it just affected fixed sprinklers.

It worked beautifully, changing peoples habits - we are now off water restrictions, but the usage is still low :-)

great. by just using some common sense i reduced my water consumption with 75%. Not that it makes much difference in my bill as the actual price of water is nothing comapred to the levy's rights and taxes i have to pay on it :-).

with regard to the use of bath water, i was just wondering if you'd be fined if police would see yr sprinklers working on an 'off day' even if you'd be doing it with bath water :-)

sprinklers are a very wasteful way of watering plants anyway

Anyway, that is purely academic now, as yr off water restrictions.
diy_bloke3 years ago
Great idea. I see you did not include the dipswitch that you have in your other arduino ethernet designs.
drj113 (author)  diy_bloke3 years ago
I decided that it wasn't needed for configuring this board, and that if I needed to, I could use the EEProm in the AtMega chip instead for config data.

Doug
Thanks Doug, but darn, I found all the parts I need locally, so I have no excuse not to build it anymore :-)
If I wanted to replicate the PCB, is there are kind of scaling I need to apply or just print the Copper layer without scaling?
pgenns244 years ago
Hi,
This is a very good Instructable.
I am new at all this and i have been searching for the ENC26J60 library with all the members you are using, and i just can not find one. May be i am just missing a part of the project. Could you please help me to find de Library?
Thanks in Advance!
falk3n4 years ago
hi brother the problem is that in my country that connector Sparkfun not get so I drew a rj45 jack pc the problem is not if you have the same distribution that Sparkfun connector that is why for me is to record I was using a rj45 but the arrangement of transformers and that did not enter the address 192.168.1.2 is there any way to connect directly to a connector enc28j60 RJ45 transformer arrangement? thanks in advance
terys24 years ago
The same here led blinks and when i put default ip i can`t get in the web browser. The lan is light btw. If anyone can help.Thnx in advance
drj113 (author)  terys24 years ago
Hi,

Thats not great - did you use the Sparkfun jack? Does the link light light up when you insert the cable? Does it go out when you remove it?

Doug
falk3n4 years ago
brother do you know that installing the sprinkler system and I'm great the problem is that when I try to access the default ip 192.168.1.2 and nothing comes out and measures to see if I had any problems in the lines of the board and nothing in fact to turn the LEDs twinkle rj45 port and the yellow LED blinks then I do not understand clearly what is happening only in so I'm not equal to your system is that it got the magjack Sparkfun rj45 rj45 if not normal, you consider that I appreciate your response is that a hug
drj113 (author)  falk3n4 years ago
What RJ45 jack did you use? If you didn't use the one from Sparkfun, then what wiring did you use. The sparkfun jack has magnetic transformers in it, which was why I chose it - without the transformers, then there is a high likelihood that the project will not work.
termm4 years ago
Awesome project.
I love web controlled thingies.
terys24 years ago
Hi with what program i compile the .pde file .Thnx in advance
drj113 (author)  terys24 years ago
The .pde file is an Arduino sketch. It is designed to be loaded with the Arduino IDE.
falk3n4 years ago
I hope you are good friends very well I think it's great your project but you could be q up the libraries that the program gives me error e downloaded these libraries appear and persist errors by
drj113 (author)  falk3n4 years ago
No problems - Which libraries do you need?
CODIY4 years ago
Wonderful Instructable Doug! I am in the planning stages for a similar controller for my garden irrigation, though I plan to use zigbee to interface with the computer.

I was wondering on the odd/even day of the week determination whether you had considered using the modulo function. By dividing by 2, the modulo would always be either 1 or zero, so to determine whether to water or not, you would just have to determine if the modulo of the date results in a 1 or zero.
Wire543214 years ago
having alot of problems with the come "Time time;"

and do i need to download anything if so where?
Wire543214 years ago
Please Can you make one with 6-Zones. And possible with a port for bluetooth or can i use programming port?

A++ for pump mode
agis684 years ago
Excellent Job, well made and projected....5/5
inventgeek4 years ago
I have a strange problem with my setup. The web examples don’t work but the link lights come on. and the leds flash appropriately for the loading of the enc chip and if i load the ping sketch it will respond but destination as unavailable. the leds blink with traffic but it seems like part of this are not working right. anyone run into this type of issue?
drj113 (author)  inventgeek4 years ago
Hi,

The standard reason that people have problems wit hthis project is that they don't use a magjack - or that they have a transposition error between the TX and RX lines on the Ethernet side, or that the computer is on a diferent network number range to the project.

If the LEDs flash on boot, then the communications between the micro and the Ethernet controller are correct. just check the use of a Magjack, and make sure you are either (1) plugged into a hub, or (2) using a crossover ethernet cable from your computer.

Also, double check your network settings - it is important that you are on the same network as the project, as it has no routing capability. Also double check the address you set up in the code.

Take care,

Doug
how much if i asked you to make me one ?
gentry4 years ago
Awesome. This is exactly the project I wanted to do for our home irrigation system, since the commercial watering controllers have horrible UIs.

You mention that you protect your boards with a solder-through spray lacquer -- do you have a brand name or a supplier?

drj113 (author)  gentry4 years ago
It is an Australian Brand called Servisol.

It can be purchased from Jaycar.

http://www.jaycar.com.au/productView.asp?ID=NA1002&keywords=lacquer&form=KEYWORD
djairjr4 years ago
Amazing instructables!
It is possible do the same with wireless conection?
drj113 (author)  djairjr4 years ago

That is an awesome idea - I am sure that it could be done, using some of those inexpensive rf data link modules.  I am not aware of a way that I could get 802.11 actual wireless networking into the design.

With an rf data link module, I suspect that the architecture would change completely - we wouldn't have to implement a web server in the box, because we could simply implement a simple remote control protocol.

I don't think I would go to the extent of having wireless solenoid controllers.  The current drain when they are operating would destroy batteries very quickly :-)
1-40 of 73Next »