loading

This DIY project is used to automate water delivery to plants keeping them hydrated and refreshed, its a must have for people going on frequent vacations and or having second home where administrating water daily is not feasible.

Step 1: List of Materials

  1. 3v to 5v DC pump
  2. Arduino Uno
  3. BC547 Transistor
  4. 2K 1/4W 1pcs
  5. 560K 1/4W 2pcs
  6. 1N4007 general purpose diode for clamping EMF
  7. Male to Male header wires
  8. Salin Piping (any medical store)
  9. Container for Water tank
  10. M3 mounting screws
  11. Power bank Larger the better

Total cost approx:500 INR or 7$ to 8$ excluding arduino and power bank

Step 2: Assembly

The whole project is based on 2 sub parts:

1)Timed water pump

2)Water level tank

1)Timed water pump:

The basic necessity of the given project was to deliver certain amount of water at predefined time, to achieve this i simply put a submersible water pump inside a water reservoir ie the water container now for the quantity of the water delivered i choose time as my unit as it simplifies the design. To deliver it in a timely fashion ie: in this case daily i simply wrote Arduino sketch with a large sleep in the loop function which basically does the following:

Wakeup:

Switch the pump on for 10 Seconds

Sleep for 2 hours

Repeat:

The problem with approach was the pump would run even when the water was not present and giving no indication to user to refill the water container. there comes the next part to play:

2)Water level tank:

There had to be some way to notify Arduino that there was no water in the tank to stop the watering cycle and beep or blink to the user to refill the water.

As simple circuit can be made to check this Resistive method: when water is present between 2 electrodes current will pass through it this happens cause of impurities in the water. when water is absent between the electrodes no current flows air is bad conductor of electricity thus open circuit. though this can easily be read by ADC pins of Arduino but i wanted to conserve those pins for future sensors upgrades to this projects so wanted to convert this digital inputs, i choose the simple method of pulldown resistors 560K which gave me a fair digital output.

Thus now Ardunio knowns when the tank is dry this helps it to stop the watering cycle and Beep a buzzer or Blink an led to indicate its dry.

Combined these two functions in sketch pseudo code for the same looks like below:

WakeUp:

Check water level in tank;

Is it empty then beep to the user:

Else it has water then switch on the pump:

Wait for 10 seconds:

Stop the pump

Sleep for another 2 Hours

Repeat cycle.

Step 3: Water Level Sensor

Step 4: Soil Moisture Sensor

Step 5: Soil Temperature Sesor

Step 6: Learnings and Improvements

1)Hydrostatic force inside the tank decreases as the level of water drops which doesn't make water delivery consistent compared when tank is full.

2)Placing the water tank above the level where it has to deliver water makes water to be delivered continuously simple physics at play here but i tend to forget it always placing the tank a level above the plants.

3)Need to port this to ESP8266 which will make it IOT project after which it can be monitored by freeboard.io

4)Need compact and elegant case design for this

5) Convert it to Solar charging

6)Improve the water delivery algorithm using soil moisture level, outside temperature and soil temperature parameters.

7)Deep Sleep Mode to conserve battery.

8)Better water level measurement contact-less using IR or Ultrasonic Sensors(Current method creates electrolysis which will erode the metal soon)

Step 7: Pump Driver Circuit

Step 8: Ambient Light Sensor

Step 9: Case Design

There are 4 parts to this projects

1)Tank with pump and water level sensor.

2)All electronics, controller and battery.

3)Soil sensors

4)Solar Panel

<p>be nice</p>
<p>Would it be possible for you to post the arduino sketch? I would like to use it as a foundation to build upon. <br>I imagine it is a straightforward sketch, but my arduino experience is very limited, and I often get overwhelmed trying to figure things out. </p>
<p>Here you go:(Currently i am porting it to ESP for this to be IOT enabled)</p><p>#define LowTankProbe 7</p><p>#define FullTankProbe 4</p><p>#define PumpSwitch 3</p><p>void setup() {</p><p>pinMode(LowTankProbe, INPUT);</p><p>pinMode(FullTankProbe, INPUT);</p><p>pinMode(PumpSwitch, OUTPUT);</p><p>Serial.begin(9600);</p><p>}</p><p>void loop() {</p><p>if (digitalRead(LowTankProbe))</p><p>{</p><p>Serial.println(&quot;Tank is low on water&quot;);</p><p>digitalWrite(PumpSwitch, LOW);</p><p>}</p><p>if (digitalRead(FullTankProbe))</p><p>{</p><p>Serial.println(&quot;Tank has too much of water, Draining water&quot;);</p><p>digitalWrite(PumpSwitch, HIGH);</p><p>}</p><p>if (!digitalRead(FullTankProbe) &amp;&amp; !digitalRead(LowTankProbe))</p><p>{</p><p>Serial.println(&quot;Water level normal, Pumping water&quot;);</p><p>digitalWrite(PumpSwitch, HIGH);</p><p>delay(5000);</p><p>digitalWrite(PumpSwitch, LOW);</p><p>delay(60000 * 2); //2hours sleep</p><p>}</p><p>}</p>

About This Instructable

4,071views

115favorites

License:

More by Laukik Ragji:DIY Plant Manager IOT Soil Moisture Plant Manager 
Add instructable to: