Components and supplies
Water barrel
12V 24W power supply
Linear Regulator (7805)
Screw terminal with 4 pins
Resistor 100 ohm
Nylon spacers M3
DC Power Connector, Jack
12V= mini water pump
Resistor 10k ohm
Arduino Pro Mini 328 - 5V/16MHz
DIP / SIP Switch, 1 Circuits
I2C 16x2 Arduino LCD Display Module
Screw terminals with 2 pins
Power MOSFET N-Channel
Female header 12 positions, 1 row, 0,1"
Custom PCB
1N4007 – High Voltage, High Current Rated Diode
Cable, USB to TTL Serial Converter 5V
High Accuracy Pi RTC (DS3231)
Tactile Switch, Top Actuated
Tools and machines
Soldering Station Power Supply, For Weller WX Soldering System
Circuit Board Holder, Rework
Fume Extraction, 2.5 m Arms
Project description
Code
Untitled file
arduino
Watering system (one pump)
arduino
Although the PCB is suitable to drive two pumps, I needed only one. So I developed the code to drive only pump 1. Obviously you can modify the code to drive both pumps with different operational times. You can also extend scheduling selections using pins 7 and 8 of the DIP switch, that I didn't use yet. In the header you will find the schedule table.
Untitled file
arduino
Downloadable files
Schematics and circuits drawn using FRITZING
Schematics and circuits drawn using FRITZING
Geerber files for the PCB
Geerber files for the PCB
Schematics and circuits drawn using FRITZING
Schematics and circuits drawn using FRITZING
Geerber files for the PCB
Geerber files for the PCB
Comments
Only logged in users can leave comments
Anonymous user
2 years ago
Thank you for your kind explanation, I have a question I want to run the pump every 6 months. How do I set it up? .please answer about my question. thank you...
mbraccagni
2 years ago
I used the subroutine readDS3231time(byte *second,byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year) to read seconds, minutes, hours, the day of the week. The easiest solution, I think, is to use pin 8 or pin 9 or both as multipliers to set more then 8 days. If you modify line 98 as follow giorni = (4*digitalRead(5) + 2*digitalRead(6) + digitalRead(7) +1) * (digitalRead(8)*10 +1); you will count from 1 to 8 days (giorni) setting pin 8 = LOW, or 10, 20, 30, ... 80 days setting pin 8 = HIGH. 6 months are 180 days, so if you modify line 98 as follow giorni = (4*digitalRead(5) + 2*digitalRead(6) + digitalRead(7) +1) * (digitalRead(8)*10 + 1) * (digitalRead(9)*3 + 1); and set pins 5 = HIGH, 6 = LOW, 7 = HIGH, 8 = HIGH, 9 = HIGH, you will obtain 6 x 10 x 3 = 180. But if you don't need any regulation, you can also write: giorni = 180; and that's it! ATTENTION: the variable minutiMancanti is defined as integer! maybe you must redefine it as long integer, because 6 months are many more the 32000 minutes!!!!!!
jmajid
4 years ago
Thanks for sharing this project... it's very close to something I am looking to implement also, except instead of watering a plant, I am looking to add de-chlorinator to a pond and this has given me some ideas and a starting point. Much appreciated!
mbraccagni
2 years ago
I'm happy to be of service!
Anonymous user
5 years ago
Thank you for your kind explanation, I have a question I want to run the pump every 6 months. How do I set it up? .please answer about my question. thank you...
mbraccagni
2 years ago
I used the subroutine readDS3231time(byte *second,byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year) to read seconds, minutes, hours, the day of the week. The easiest solution, I think, is to use pin 8 or pin 9 or both as multipliers to set more then 8 days. If you modify line 98 as follow giorni = (4*digitalRead(5) + 2*digitalRead(6) + digitalRead(7) +1) * (digitalRead(8)*10 +1); you will count from 1 to 8 days (giorni) setting pin 8 = LOW, or 10, 20, 30, ... 80 days setting pin 8 = HIGH. 6 months are 180 days, so if you modify line 98 as follow giorni = (4*digitalRead(5) + 2*digitalRead(6) + digitalRead(7) +1) * (digitalRead(8)*10 + 1) * (digitalRead(9)*3 + 1); and set pins 5 = HIGH, 6 = LOW, 7 = HIGH, 8 = HIGH, 9 = HIGH, you will obtain 6 x 10 x 3 = 180. But if you don't need any regulation, you can also write: giorni = 180; and that's it! ATTENTION: the variable minutiMancanti is defined as integer! maybe you must redefine it as long integer, because 6 months are many more the 32000 minutes!!!!!!
kana003
8 months ago
hi, what a great project. Im doing a similar project for school and having a hard time getting the water pump to work with a soil mositure sensor. Could you please show you're attemt with a moisture sensor. thank you