I was thinking about a more flexible sprinkler controller for a very long time. We have circuits which would benefit from different patterns, from the normal lawn watering to drip circuits for some flower/veggie beds to some pots and even some soaker-hoses for trees.
When I saw Daniel’s setup @ Garden Automation, I knew that this is a setup I would like;-) (Daniel is an organizer/marshal @ RobotGarden in Livermore, were I hang around once in a while.)
I looked a bit more into OpenSprinkler and especially into the different setups. I liked the `real OS’ setups better than the Arduino-like version. And in the end, it came just down to availability. When I was ready, the BeagleBone Black was just on it’s way to the revision facelift. It was not in stock anywhere. So I settled on the Raspberry Pi as base-board. I have both running here already, so it did not make a big difference;-)
So the current setup consists of the Pi, the OpenSprinkler Pi with a zone extension board, a SainSmart LCD Module For Arduino 20 X 4 with I2C daughter board and an USB WiFi dongle. The WiFi dongle is inside the box as indented, but the LCD module did not fit:-( I might look at a higher version of that box eventually. For now, it’s kept in place by two rubber bands;-) I want to use the LCD to display status info. It currently displays the hostname, the IP address and the current date/time. Eventually it should also display info about the running/upcoming program & station etc.
The WiFi connection is not as reliable as I would have liked:-( So I’ll have to play with that a bit more. But I’m not sure, if it’s the Pi or the access point:-( Something between the two. I saw times, when I could not ping the Pi from my laptop but it would answer to pings from the AP (the laptop was used to log into the AP’s web interface, so it could talk just fine to it).
I needed to control 11 sprinkler circuits, so I had to get the Zone Expansion Board. But the extra 16 zones looks like a bit of overkill;-)
The OpenSprinkler Pi board (from V1.2, I believe) also includes a 4-channel ADC (8 bit) and an relay. So I want to use one channel connected to a photo resistor and the relay to control the lights outside our garage. even while the relay is rated for it, I did not like the idea of running mains power into the OpenSprinkler box. So I control another relay (in the old mechanical timer box) with the included relay. That seems to work ok.
I also added an AM2301 temperature/humidity sensor along with the existing rain sensor. I hope to use that eventually in calculating the watering needs. So far, I can just get reasonable looking values from it with the Adafruit library😉
So overall, the bits & pieces work together. I’ll need to get some cable fasteners next time I hit Home Depot. Unfortunately, we don’t have any of the blue wall colour left over, so the footprint of the old sprinkler controller will stay for now:-(
Now it’s just up to writing/adapting the software to do what I want;-)
As always, it’s good when you can control your own world;-)
— Marco
Update: I got some blue paint;-) So the setup looks a bit more finished now. Also, that image shows the info on the display a bit better. The software is still not at the state wher I would be happy, but I have a working setup, so that will probably move slower now:-(
Update 08/20/2014: OK, a collected order from Digikey included a new case and my LCD display has a final place. It fits pretty good. I only had to remove the two top screw holes. Some more pictures as it looks right now.
Update 05/01/2016: The first photo resistor died during the winter after about two year:-( Apparently, they are not really made for outdoor use. I replaced it with the same model but I tried to encase it in some clear epoxy. It seems to be working as expected during the day, but I might have to adjust the “dusk value” a bit because the epoxy is not as clear as I had hoped. Let’s see if that is a bit more stable.
Cool project and nice writeup, thanks for posting.
Very cool project!
Nice Job… Is the LCD connected to the I2C pins on Rasberry Pi?
Is there any code alterations for this.
I just cant seem to get the LCD working.
Sorry but im quite new to this and I hope you can help…
Thanks
The LCD is connected via I2C and driven by the LCDd daemon. It’s using the hd44780 driver. Hope that helps;-)
Hi Marcos, thanks for your reply. I have the same equipment and am having a lot of difficulties getting this going. Can you possible provide a link or some detailed instructions on how I can achieve this.
Many Thanks..
Try your display with an Arduino first. There are different versions and you have to find out it’s I2C address. Once you have it working there, it should be easy to get LCDd up & running;-)
My relevant parts of the /etc/LCDd.conf are
[server]
DriverPath=/usr/lib/lcdproc/
Driver=hd44780
Bind=127.0.0.1
Port=13666
User=nobody
WaitTime=5
ServerScreen=off
ToggleRotateKey=Enter
PrevScreenKey=Left
NextScreenKey=Right
and
[hd44780]
ConnectionType=i2c
Port=0x27
Device=/dev/i2c-1
Speed=0
Keypad=no
Contrast=0
Backlight=yes
OutputPort=no
Size=20x4
CharMap=hd44780_default
DelayBus=true
KeyMatrix_4_1=Enter
KeyMatrix_4_2=Up
KeyMatrix_4_3=Down
KeyMatrix_4_4=Escape
But as I said, your I2C address might be different!