Self-Watering Plant

by randofo in Circuits > Arduino

448352 Views, 1067 Favorites, 0 Comments

Self-Watering Plant

main1.jpg

Plants liven up any space by adding a sense of airiness and life. That is - of course - when you don't forget to water them, and they shrivel up and die. I am very bad at remembering to water plants. That is why I built this self-watering plant to do it for me. Using a soil sensor, and an Arduino-controlled water pump, I have created a system that will never forget to do it. Instead of remembering to water my plants when the soil goes dry, I only have to remember to once and a while refill the water reservoir. In this way, I have decreased my obligation to these plants and put it off to a much later date. Perhaps further iterations of this device can be connected to a rain barrel so that I won't even have to worry about refilling my reservoir, and the entire system can be fully automated.

Go Get Stuff

1A.jpg

You will need:

(x1) 8" x 6" x 3" project enclosure
(x1) Multipurpose PC Board
(x1) 5VDC SPDT micro relay
(x1) 9V battery connector
(x1) 9V battery clip
(x1) 9V battery
(x1) SPST mini toggle switch
(x1) 10K resistor
(x1) Size M coaxial DC power plug
(x1) Red and black 22AWG wire
(x1) 12AWG wire
(x1) Non-submersible electric water pump
(x1) Water storage container with lid
(x2) 8-32 x 2.5" bolts and nuts
(x8) 4-40 x 1" bolts and nuts
(x1) 4-40 x 3/8" bolt and nut
(x4) 1/4" spacers
(x1) Wire nut
(x2) 3' - 5' plastic tubing
(x1) #8 Terminal Ring
(x1) House plant to water

(Please note that some of the links on this page contain Amazon affiliate links. This does not change the price of any of the items for sale. However, I earn a small commission if you click on any of those links and buy anything. I reinvest this money into materials and tools for future projects. If you would like an alternate suggestion for a supplier of any of the parts, please let me know.)

Update 8/19/19: Schematic

SoilProbe.jpg

I've added a schematic by popular demand.

Trim the Pump

2A.jpg
2B.jpg

Trim away any unnecessary plastic mounting brackets from the front of the pump that may prevent it from being flush with the case (nozzles and corresponding hardware not included).

Drill or Cut

3A.jpg
3B.jpg
3C.jpg
3D.jpg
3E.jpg
3F.jpg

Line up the water pump with the base of one of the 6" x 3" sides of the case.

Drill or cut a hole large enough to fit the nozzles through.

Mark

4A.jpg
4B.jpg

Position the water pump, Arduino, 9V battery holder, and circuit board in the bottom of the case.

Make marks in each of their mounting holes.

The pump will probably not have a mounting hole, so just make a mark on each side such that it can easily be zip tied down.

Drill

5A.jpg
5B.jpg

Drill all of the holes that you have just marked with a 1/8" drill bit.

You may need to widen the zip tie holes to 3/16".

Drill More Holes

6A.jpg
6B.jpg
6C.jpg
6D.jpg

On the 6" x 3" side of the case that has yet to be drilled, drill two centered 1/4" holes about 1-1/2" apart.

Fasten

7A.jpg
7B.jpg
7C.jpg

Zip tie the water pump securely into the case.

Cut the Cord

8A.jpg
8B.jpg

Cut the pump's power cord about 6" from the pump's body.

Start the PCB

9C.jpg
9A.jpg
9B.jpg

Solder the 5V relay to the board.

Solder a 10K resistor to one of the relay's coil pins. This will be the relay coil's ground pin. This pin should eventually get connected to ground on the Arduino board.

Attach Wires

10A.jpg

Attach an 18" section of 12 AWG wire to the free pin of the 10K resistor. Solder a 6" section of red 22 AWG wire to this joint.

Attach an 18" section of 12 AWG wire to an unused part of the PCB. Solder a 6" section of red 22 AWG wire to this joint.

Split the Wires

11A.jpg
11B.jpg

Pass the cut power cord into the box through the 1/4" hole closest to the water pump.

Split the power cord such that each conductor is its own separate insulated strand for about 6".

Repeat this process for the cord going into the water pump.

They need to be separated because each cable is being wired to a different spot.

Wire the Power

12A.jpg
12B.jpg

Connect one of the strands from the water pump to the normally-open pin on the relay.

Connect one of the strands from the power cord to the common pin on the relay.

In this way, when the relay is powered up, AC power will be connected.

Attach

13.jpg
13B.jpg
13C.jpg

Attach the circuit board to the project box using 1/4" spacers, nuts and bolts.

Wire Nut

14A.jpg
14B.jpg

Attach the two free power cables from the pump and power cord together using a wire nut.

Prep the Cords

15A.jpg
15B.jpg

Kink the power cable on the inside of the box and cinch it in place with a zip tie to prevent it from being pulled back through.

Tie a knot in the two 12 AWG wires such that when they are passed through the remaining 1/4" hole there would only be tension on the knot (and not the circuit board) when you tug on them.

Prepare the Probes

16A.jpg
16B.jpg
16C.jpg
16D.jpg

Strip the end of each 12 AWG wire and clamp a terminal ring to the end.

Pass a bolt through each and fasten them in place firmly with the corresponding nuts.

Wire the Power

17A.jpg
17B.jpg
17C.jpg
17D.jpg
17E.jpg
17F.jpg
17G.jpg

Solder the red wire from the 9V battery connector to one terminal of the SPST switch. Solder a 5" red wire to the other terminal of the SPST switch.

Unscrew the cover from the M-type plug and slide the cover onto the end of the remaining red and black wires.

Solder the black wire to the outer ground connection on the plug. Solder the red wire to the inner power connection.

Screw the cover back on.

Install the Switch

18A.jpg
18B.jpg
18C.jpg

Drill a 1/4" hole in the 8" x 6" hole opposite the water pump.

Mount the switch into the hole using the mounting hardware.

Program

19A.jpg

Plug in your Arduino and upload the following code:

<pre>/*
  Self-Watering Plant
  by Randy Sarafan
  
  Reads a soil moisture sensor and turns on a relay that controls a water pump.
  
  The soil moisture sensor involves a 10K resistor between pins A1 and ground,
  and a probe connected to pin A1 and another connected to +5V. These probes 
  are embedded and inch apart in the plant's soil.
  
  For more information, check out:
  https://www.instructables.com/id/Self-Watering-Plant/
 */


// Analog input pin that the soil moisture sensor is attached to
const int analogInPin = A1;  

// value read from the soil moisture sensor
int sensorValue = 0; 

 // if the readings from the soil sensor drop below this number, then turn on the pump
int dryValue = 700   

void setup() {
  
  pinMode(12, OUTPUT);
  
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);                   

  //Turns on the water pump if the soil is too dry
  //Increasing the delay will increase the amount of water pumped
  if(sensorValue < dryValue){
    digitalWrite(12, HIGH);
    delay(10000);
    digitalWrite(12, LOW);
  }
    
  // print the sensor to the serial monitor:
  Serial.print("sensor = " );                       
  Serial.println(sensorValue);  

  //slow your roll - I mean... slow down the code a little
  delay(100);                     
}

Keep in mind that you may need to adjust the trigger threshold for your particular plant setup.

Install

20A.jpg
20B.jpg

Fasten the Arduino to the base of the project enclosure with nuts and bolts.

9V Clip

21A.jpg
21B.jpg

Attach the 9V battery holder securely to the bottom of the project enclosure with a 4-40 x 3/8" nut and bolt.

Plug It In

22A.jpg
22B.jpg
22C.jpg

Plug in the battery, and secure the battery in the battery holder.

If the Arduino lights up when you plugged in the battery, toggle the switch on the outside of the case to turn it off.

Wire It Up

23A.jpg

Now is time to plug everything into the Arduino.

Plug the black wire from the circuit board to the ground socket on the Arduino.

Plug the red wire from the relay coil into digital pin 12 socket on the Arduino.

Plug the red wire connected to the 10K resistor to analog pin 1 socket.

Plug the red wire connected to the soil probe into the +5V socket.

Case Closed

24A.jpg
24B.jpg
24C.jpg

Put the lid on top of the project enclosure and use the hardware that came with it to fasten it shut.

Drill

25A.jpg
25B.jpg

Drill a 3/8" hole in the top of the water container's lid.

Tubing

26A.jpg
26B.jpg

Cut the tubing in half.

Plug a tube into each of the pump's connector valves.

Probes

27A.jpg
27B.jpg

Insert the probes into your plant's soil about an inch apart.

Place Tube

28A.jpg

Place the tube from the output of the water pump onto the top of the plant's soil bed.

Insert Tube

29A.jpg

Fill your water container and insert the tube into the hole that you have previously drilled in the top.

Turn It On

30A.jpg
30B.jpg

Flick the switch to turn it on.

You should never have to water your plant again.

Now you just need to remember to refill the water reservoir.

Did you find this useful, fun, or entertaining?
Follow @madeineuphoria to see my latest projects.