1 CT1721 Kit $399 1 Relay8 Board $29
Available at Comfile Technology
Estimated Time to Buy Parts: 30min
Estimated Time to Assemble: 20min
If you goto Home Depot, you will find lots of sprinkler valves, just pick one they are all the same I think...
Get a sprinkler or get whole bunch of them...
Connections
Connect the Relay8 Board to like shown below:
Then connect the sprinkler valve(solenoid) to the Relay8 board.
(yes, there's only 2 wires on the valve)
The valve is powered by the on-board 24V DC power of CT1721, but you will have to use 24VAC for the real thing. The Relay8 board supports both AC and DC, so you should be okay.
Then connect hoses, one to the water pump, the other going out to your sprinkler(s).
One valve can support more than 1 sprinkler, please refer to the following howto links on calculating exactly how many sprinklers you can activate at one time:
Simply download sprinkler6.zip and use CublocStudio to download the program which are Program006.cul(LADDER CODE) and Program006.cub(BASIC CODE).
I've used a combination of BASIC and Ladder in this program to make one helluva sprinkler program...I think...
Taking it Further...
The current program is pretty stable I think,
but hopefully, I can add a temperature sensor to stop the
sprinkler on hot days and add a humidity sensor for rainy days.
It must be working well since my friend is not complaining about it.
You can add up to 32 sprinkler valves, well the program is for 12 right now, you will have to modify it to fit 32...
That means at 5 sprinklers per sprinkler valves, you could possibly hook up 160 sprinklers and control them.
Well to take it even further, you can use modbus to connect 127 touch screen controllers and control 127 * 160 = 20,320 sprinklers! Well, that might not be case unless you own a golf course...
If you are having any trouble with above app, please e-mail max@zedomax.com
If you have any cool apps you'd like to share or want some kind of DIY, please e-mail to max@zedomax.com
We do accept free samples for DIYs, please email max@zedomax.com :)
BASIC Source Code:
[sprinkler006.cul]
Const Device = CT1720
#define PZ Pulsout 18,50
#define Bdelay 200
Usepin 32, Out, relay1
Usepin 33, Out, relay2
Usepin 34, Out, relay3
Usepin 35, Out, relay4
Usepin 36, Out, relay5
Usepin 37, Out, relay6
Usepin 38, Out, relay7
Usepin 39, Out, relay8
Usepin 40, Out, relay9
Usepin 41, Out, relay10
Usepin 42, Out, relay11
Usepin 43, Out, relay12
Set Ladder On
Dim TX1 As Integer, TY1 As Integer
Dim Contrast_Setting As Integer
Dim mode As Byte
Dim sec As Byte, min As Byte, hr As Byte, date As Byte, day As Byte, month As Byte, year As Integer
Dim sec2 As Byte, min2 As Byte, hr2 As Byte, date2 As Byte, day2 As Byte, month2 As Byte, year2 As Integer
Dim programtype As Byte
Dim prog(4) As Byte
Dim relay(4) As Integer '2 bytes or 16 bits
Dim relaynumber As Byte
Dim AUTO As Byte
Dim relaytimes(13) As Integer
Dim ProgramHour(4) As Byte
Dim ProgramMin(4) As Byte
Dim mm(12) As Byte
Dim disa(13,4) As Integer
Dim qqq As Byte
Dim mmode As Byte
Dim onebyte As Integer
Dim relaysON As Byte
relaysON=0
' ManualON=0
mmode=0
For qqq=0 To 11
relaytimes(qqq)=Eeread(2+(qqq*2),2)
If relaytimes(qqq)=65535 Then relaytimes(qqq)=1
_D(qqq)=relaytimes(qqq)
_M(qqq)=0
Next
' Timeset 0, 0x55
' Timeset 1, 0x59'Bin2bcd(6)
' Timeset 2, 0x02'Bin2bcd(6)
' _M(0)=1
'Delay 10
_M(0)=0
' Do
' Loop
' If AUTO>1 Then AUTO=0
relaynumber=0
mode=0
Cls
Contrast_Setting=Eeread(0,2)
If Contrast_Setting>1000 Then Contrast_Setting=580
Contrast Contrast_Setting
' Initialize all variables to 0, 0 is OFF 1 is ON
Delay 500
gPrint "v.0.0.6"
Delay 500
gPrint "v.0.0.6"
Delay 500
gPrint "v.0.0.6"
Delay 500
Cls
Set Pad 0,4,5 ' When input received, jump to welovemax!
On Pad Gosub welovemax
On timer(35) Gosub Display
mainmenu
If AUTO.bit0=1 Then Menureverse 4
If AUTO.bit1=1 Then Menureverse 5
If AUTO.bit2=1 Then Menureverse 6
If AUTO.bit3=1 Then Menureverse 7
CurrentTime 1
Do ' Infinite Loop
Loop
Display:
CurrentTime 0
If mode=5 Then
DisplayMTimes
End If
Return
welovemax:
'------Receive x, y values from TouchPAD!-----------------------------------------------
TX1 = Getpad(2)
TY1 = Getpad(2)
If mode=0 Then
If Menucheck(0,TX1,TY1) = 1 Then
PZ
Menureverse 0
mode=1
Delay 250
Cls
CurrentTime 1
setuptime
Elseif Menucheck(1,TX1,TY1)=1 Then 'Schedule Menu
PZ
Menureverse 1
mode=2
Delay 250
Cls
CurrentTime 1
schedulemenu
Elseif Menucheck(2,TX1,TY1)=1 Then
PZ
Contrast_Setting=Contrast_Setting+4
' Debug Dec contrast_setting
Contrast Contrast_Setting
Eewrite 0,Contrast_Setting,2
Menureverse 2
Delay BDelay
Menureverse 2
Elseif Menucheck(3,TX1,TY1)=1 Then
PZ
Contrast_Setting=Contrast_Setting-4
' Debug Dec contrast_setting
Contrast Contrast_Setting
Eewrite 0,Contrast_Setting,2
Menureverse 3
Delay BDelay
Menureverse 3
Elseif Menucheck(4,TX1,TY1)=1 Then
PZ
Menureverse 4
Delay BDelay
AUTO.bit0=AUTO.bit0 Xor 1
Elseif Menucheck(5,TX1,TY1)=1 Then
PZ
Menureverse 5
Delay BDelay
AUTO.bit1=AUTO.bit1 Xor 1
Elseif Menucheck(6,TX1,TY1)=1 Then
PZ
Menureverse 6
Delay BDelay
AUTO.bit2=AUTO.bit2 Xor 1
Elseif Menucheck(7,TX1,TY1)=1 Then
PZ
Menureverse 7
Delay BDelay
AUTO.bit3=AUTO.bit3 Xor 1
Elseif Menucheck(8,TX1,TY1)=1 Then
PZ
Menureverse 8
Delay 250
mode=5
Cls
CurrentTime 1
mmode=0
StatusMenu
TurnOFF
Elseif Menucheck(9,TX1,TY1)=1 Then
PZ
turnoff
Menureverse 9
Delay 250
End If
Elseif mode=1 Then
If Menucheck(0,TX1,TY1) = 1 Then
PZ
If hr<23 Then
hr=hr+1
Timeset 2, Bin2bcd(hr)
End If
Menureverse 0
Delay BDelay
Menureverse 0
Elseif Menucheck(1,TX1,TY1)=1 Then
PZ
If hr>0 Then
hr=hr-1
Timeset 2, Bin2bcd(hr)
End If
Menureverse 1
Delay BDelay
Menureverse 1
Elseif Menucheck(2,TX1,TY1)=1 Then
PZ
If min<60 Then
min=min+1
Timeset 1, Bin2bcd(min)
End If
Menureverse 2
Delay BDelay
Menureverse 2
Elseif Menucheck(3,TX1,TY1)=1 Then
PZ
If min>0 Then
min=min-1
Timeset 1, Bin2bcd(min)
End If
Menureverse 3
Delay BDelay
Menureverse 3
Elseif Menucheck(4,TX1,TY1)=1 Then
PZ
If month<12 Then
month=month+1
Timeset 5, Bin2bcd(month)
End If
Menureverse 4
Delay BDelay
Menureverse 4
Elseif Menucheck(5,TX1,TY1)=1 Then
PZ
If month > 1 Then
month=month-1
Timeset 5, Bin2bcd(month)
End If
Menureverse 5
Delay BDelay
Menureverse 5
Elseif Menucheck(6,TX1,TY1)=1 Then
PZ
If date<32 Then
date=date+1
Timeset 3, Bin2bcd(date)
End If
Menureverse 6
Delay BDelay
Menureverse 6
Elseif Menucheck(7,TX1,TY1)=1 Then
PZ
If date > 1 Then
date=date-1
Timeset 3, Bin2bcd(date)
End If
Menureverse 7
Delay BDelay
Menureverse 7
Elseif Menucheck(8,TX1,TY1)=1 Then
PZ
Menureverse 8
Delay BDelay
mode=0
Cls
mainmenu
If AUTO.bit0=1 Then Menureverse 4
If AUTO.bit1=1 Then Menureverse 5
If AUTO.bit2=1 Then Menureverse 6
If AUTO.bit3=1 Then Menureverse 7
currenttime 1
End If
Elseif mode=2 Then
If Menucheck(0,TX1,TY1) = 1 Then
PZ
Menureverse 0
Delay BDelay
Menureverse 0
mode=3
Cls
currenttime 1
programtype=0
programmenu
showbuttons
ProgramTime
Glocate 10,200
Dprint "Program ",Dec programtype+1
Elseif Menucheck(1,TX1,TY1)=1 Then
PZ
Menureverse 1
Delay BDelay
Menureverse 1
mode=3
Cls
currenttime 1
programtype=1
programmenu
showbuttons
ProgramTime
Glocate 10,200
Dprint "Program ",Dec programtype +1
Elseif Menucheck(2,TX1,TY1)=1 Then
PZ
Menureverse 2
Delay BDelay
Menureverse 2
mode=3
Cls
currenttime 1
programtype=2
programmenu
showbuttons
ProgramTime
Glocate 10,200
Dprint "Program ",Dec programtype+1
Elseif Menucheck(3,TX1,TY1)=1 Then
PZ
Menureverse 3
Delay BDelay
mode=3
Cls
currenttime 1
programtype=3
programmenu
showbuttons
ProgramTime
Glocate 10,200
Dprint "Program ",Dec programtype+1
Elseif Menucheck(4,TX1,TY1)=1 Then
PZ
Menureverse 4
Delay BDelay
mode=0
Cls
currenttime 1
mainmenu
If AUTO.bit0=1 Then Menureverse 4
If AUTO.bit1=1 Then Menureverse 5
If AUTO.bit2=1 Then Menureverse 6
If AUTO.bit3=1 Then Menureverse 7
Elseif Menucheck(5,TX1,TY1)=1 Then 'goto relay time setting