Introduction: UWaiPi - Time Driven Automatic Plant Watering System

Hi there! Did you forget to water your plants today morning? Are you planning for a vacation but thinking who's going to water the plants? Well, if your answers are Yes, then I have a solution for your problem.

I am really glad to introduce uWaiPi - Time Drive Automatic Plant Watering System. It's a simple system you can make which could help you forgetting the task of watering your plants daily.

uWaiPi works on Raspberry Pi. With little knowledge on Raspberry Pi programming and moderate skills on electronics, you should be able to build the system at your home within 3-4 days.

Step 1: Parts List

The following items are required to build uWaiPi.

  • Raspberry Pi (version 2, 3, or Zero) with latest Raspbian installed
  • Mini WIFI USB adaptor (not required for Raspberry Pi 3)
  • 16x2 LCD module
  • M111 I2C IIC serial interface board module
  • Momentary push switch (3)
  • 5 V 2 Amp Power adaptor
  • 3-6 V 120 liters/hr mini brushless motor submersible pump
  • Long wires
  • PVC enclosure (180x100x50 mm)
  • Irrigation pipes and fittings

The following electronic components are required for building the circuits.

  • Resistor - 1 K Ohm (2)
  • Resistor - 1.5 K Ohm (3)
  • Resistor - 10 K Ohm (3)
  • Transistor - 2N 2222 (2)
  • Diode - IN 4001 (1)
  • Electrolytic capacitor - 0.1 uF 10 V (3)
  • Electrolytic capacitor - 1 uF10 V (2)
  • Ceramic capacitor - 1 nF (1)
  • Ceramic capacitor - 10 nF (1)
  • Vero boards
  • Male header pins
  • Female header pins
  • Jumper wires

Step 2: Raspberry Pi Setup

uWaiPi works on Raspberry Pi. It has been tested with the following versions of Raspberry Pi:

  1. Raspberry Pi 2 Model B
  2. Raspberry Pi 3
  3. Raspberry Pi Zero

You need to have a Mini WIFI USB adaptor for connecting the Raspberry Pi (except Model 3) to the internet.

You can download the latest version of Raspbian from here and install on your Raspberry Pi. You would find plenty resources online on how to install and configure Raspbian on Raspberry Pi.

Step 3: Building the Circuit Boards

Main circuit board

This board contains the circuits for controlling:

  1. the GPIO pins with the buttons
  2. the backlight of the LCD display
  3. the pump

LCD display circuit board

This board contains an array of capacitors to filter our any unexpected noises and voltage spikes for the LCD I2C signals.

You can refer to the attached diagram for the circuit board design. You can spend little more effort and create a custom PCB for building your circuits. The circuit board design diagram (fritzing format) can be downloaded from Git.

Step 4: Connecting Modules

Once the circuits boards are built, the modules can be connected through wires. I didn't want to solder the wires so that I can dismantle them easily. So I used male/female board pins and jumper wires instead.

First I soldered 16 female header pins on the LCD module and 16 male pins on the I2C module and mounted the I2C module directly at the back of LCD display module. Then similarly I mounted my custom LCD display circuit board on the I2C module. The connection should be as below:

DB5 -> I2C SCL

DB6 -> I2C SDA

DB7 -> I2C VCC

DB8 -> I2C GND

Then I connected the display module with the Raspberry Pi as below:

DB1 -> GPIO 5

DB2 -> GPIO 3

DB3 -> GPIO 4

DB4 -> GPIO 9

Then I connected the main circuit board with the Raspberry Pi and display module as below:

CB1 -> GPIO 2 (5 V)

CB2 -> GPIO 7

CB3 -> GPIO 14 (GND)

CB4 -> GPIO 6 (GND)

CB5 -> GPIO 1 (3.3 V)

CB6 -> Check button

CB7 -> Check button

CB8 -> Adhoc Run button

CB9 -> Adhoc Run button

CB10 -> Skip Next button

CB11 -> Skip Next button

CB12 -> Water pump

CB13 -> Water pump

CB14 -> I2C LED1

CB15 -> I2C LED2

CB16 -> GPIO 12

CB17 -> GPIO 11

CB18 -> GPIO 13

CB19 -> GPIO 15

Step 5: Packaging

Once you cross-check the connectivity, the next step is to put everything into a box. I used a white PVC enclosure which was kind of quite bigger than I needed. You can choose the box with appropriate dimensions. I cut a slot for the display, 3 big holes for the buttons in the front, and 2 smaller holes for the output line and power cord. I placed plastic spacers inside the box and fixed the circuit boards and Raspberry Pi using screws. I connected the LCD display with the help of hot-glue. I squeezed the wirings into the box and finally closed it with the help of screws. I printed the labels and stuck them on the box using glue-stick. I was quite happy with the neat and clean look of the enclosure.

Step 6: Installation

Once the components are packaged in the enclosure, you can connect to the Raspberry Pi through SSH connection over wifi. You can download the latest version of the application from Git. I have documented the detailed installation steps in the Readme file. Just follow the on-screen instructions to complete the installation. Please note you need to have root privileges on Raspberry Pi to be able to do the installation. Once completed, please restart your Raspberry Pi and you are ready to go.

Please note you need to provide the schedules and durations during the installation. You can setup multiple schedules. The system will activate the pump as per your schedule and water the plants.

Step 7: Final Packaging

Once everything is done, you can connect the pump to the output line and power up the system. It will take 30-40 seconds to start and auto-launch the application. You might need an extension wire to place the pump near to your plants. The pump can be submerged in a bucket of water and connected to the pipeline.

Step 8: Laying the Pipelines

This was the most painstaking step in my opinion. I purchased a DIY irrigation kit from Ebay which had all the necessary components for laying out the pipeline. I used a 12 mm big drip pipe for the main water connection and 4 mm smaller pipes for the branches. All the branches are fitted with micro connectors so that I can control the water flow for any specific plants. It took almost 4 hours for the measurements, cutting the pipes, connecting them, and laying out the pipelines. I used a small plastic tube to connect the pump outlet to the pipeline. My water pump was powerful enough to provide sufficient water for 16 plants. My balcony does not have any water faucet, so I had to use a bucket to store the water. One big bucket can water the plants 2 times a day for 2 weeks - which is quite good and reliable for any long trip.

Step 9: And You're Done!

Well, that's it. I kept my circuit box inside the room and used a long extension wire to connect uWaiPi with the pump. Now just switch it on and wait for 30-40 seconds for the application to get loaded. uWaiPi will take care of watering your plants based on your schedules. So now you can go on a long vacation without worrying about your plants.

Step 10: Using the System

During the installation, if you have enabled auto-restart feature, the application will automatically start on booting up the Raspberry Pi. It will follow the schedules and durations as configured by you.

The system can be controlled using the buttons. You can water the plants anytime on adhoc basis or skip the next schedules. The system takes care of any missed schedules and water the plants whenever switched on.

You can enable email features as well during the installation. With email features on, you would be getting notifications from the system upon watering the plants. You can also control the system (adhoc run or skip execution) by sending simple commands through email.

Step 11: Thank You!

A big Thank You if you have reached so far and planning to build or already built my system. Do let me know your valuable feedback and suggestions. I can be reachable at

Ujjal Dey