Tested: OpenSprinkler 2.0 Arduino-Based Irrigation Controller

By Will Smith

After reading about the OpenSprinkler project in Chris Anderson's Makers book, Will had to test it out.

When I bought my house, almost six years ago, the built-in irrigation system was a selling point. It came complete with a fancy programmable controller and options galore, but since the lawn looked nice when we moved in, I left the sprinkler running its pre-set schedule—reliably firing off every Monday, Wednesday, and Friday morning for a few minutes per sprinkler zone.

For a long time, everything was great. The pre-set program was perfect during dry weather, and it was easy enough to manually turn off the sprinklers when it was rainy out and turn them back on when the lawn started to turn brown. Unfortunately, everything went sideways when the power went out and the unit’s built-in battery backup failed. The program that had worked well for two years was lost, and I had to recreate it using a handful of buttons and a big, friendly knob. It shouldn’t be too hard to make the sprinklers turn on for 5 minutes every Monday, Wednesday, and Friday, right? Wrong.

I'm a technology-savvy guy. I know my way around computers, could set the clock on my VCR (when I had a VCR) and I can almost always figure out how stuff works well enough to diagnose problems and fix them myself. I’m even capable of reading and following instructions when needed. However, this sprinkler system quickly became my nemesis. Trying to program a simple controller to turn on 6 sprinkler zones, sequentially, for five minutes each, was surprisingly difficult. One month I had each zone firing for 15 minutes, which left my yard soggy and my water bill too high. The next time, I had two separate programs running—one based on intervals and one based on days of the week. This too resulted in overwatering (and a nasty water bill too). Every time I’d fix one problem, something new would pop up. After a few false starts, I started researching replacement controllers. I quickly learned that most of the controllers are very simple devices—they send a signal by wire that opens solenoid attached to the valve. The valve stays opened (and thus the sprinklers stay on) as long as the controller pumps juice to the solenoid. When it's time to turn the sprinkler off, the controller cuts the signal, and the solenoid closes the valve.

The old and difficult to program sprinkler controller.

While the hardware was pretty straightforward, the other options didn’t look much better than what I already had. While I was tempted by Internet-connected sprinkler controllers at first, those models were all expensive, and didn’t seem better, they were just difficult to operate on the Internet. I eventually found the OpenSprinkler project, which replaces the traditional controller with a custom Arduino board. The controller costs $150, includes connections for up to 8 sprinkler zones, and will run as many programs as you can fit in the board’s memory (read: more than you could possibly need). The kit also allows for inexpensive expansion, which is important if you have more than the eight supported zones. Apparently, it also supports a rain sensor, if you happen to have one of those (I don’t).

The process to replace my old controller with the new one was much simpler than I expected. The kit included decent online instructions, but they weren’t tailored to any specific setup—they assume you understand how your sprinkler system works. The process was simple—I disconnected both of my old controllers from power, then opened the boxes and noted which wires were connected to each terminal. The wiring for my sprinkler system is fairly representative—each valve is controlled by a single wire, with a shared ground connecting all the valves at a location. Connecting the wires for six zones, two grounds, and the 24V power brick required (but not included with the kit) took about 40 minutes from start to finish. The last step was to connect the controller to my home’s wired network—there isn’t a Wi-Fi version, although you can connect to a wireless network using a bridge.

Once that was done, I powered up the controller and put it in test mode, which makes sure everything is hooked up properly by running each zone for a few seconds. The sprinklers ran perfectly through the test, , and the OpenSprinkler’s controller displays the device’s IP address, so that was simple to open up a web browser and program my watering plan into the new controller.

It took me about 5 minutes. Because the OpenSprinkler’s web server is running on a relatively slow Arduino, the site is pretty bare bones. There aren’t really any graphics, there’s no responsive HTML design, and you have to type the password for your controller on every single page. To put this in no uncertain terms, the web interface is clearly designed by engineers. That means you’ll almost certainly need to read some instructions online in order to the controller working properly, but once you understand it’s internal logic, you should be fine. It took me about 10 minutes to figure out how to configure my sprinklers to run for 5 minutes every three days.

I’m anxiously awaiting more advanced features that really take advantage of the Internet-connected nature of the OpenSprinkler. Of course, if I get impatient, I could always download the source code for the board and add my own updates. I don’t know how much innovation I can stand with my sprinkler system, but now I’m ready for it. Best of all, now I have plenty of room left on the controller so I can add automatic irrigation to my tomato patch.

Note: If you're thinking about ordering an OpenSprinkler kit, you may want to wait a few weeks for a version with a fancier plastic enclosure.