ESP8266 WiFi Plant Irrigation System




In this tutorial we will show how to build plant irrigation system with ESP8266 Arduino library and EasyIoT server (Windows or Raspberry). With web interface we can control water pump and soil humidity remotely. Now you can go on holiday and irrigate plant with your smart phone.

Main function are:

  • automatic/manual irrigation mode
  • remotely controlled in WEB interface (computer or smart phone)
  • measure soil moisture with history chart option
  • soil humidity threshold settings

See more tutorials at

Also see improved version:

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Materials

  • Custom ESP Arduino board with ESP-01 interface ( or standard Arduino board + relay modue)
  • ESP8266 module
  • water pump
  • soil moisture sensor module
  • regulator module 0-30V
  • 12V power supply

See buying guide for details.

Step 2: Build

In our case we use custom Arduino board with ESP-01 interface. It uses Atmega328 at 8Mhz. Good thing about this board is that 3.3V regulator, ESP-01 interface and MOSFET are on board. It's very suitable for ESP8266 projects. Datasheet for custom board can be found here. Custom board is produced in EU, so shipping time is faster than for orders in China.

Be sure to use correct firmware version for ESP8266 module. See ESP8266 firmware flashing tutorial for details.

Custom Arduino board is suitable for EasyIoT ESP8266 Arduino library. The only thing I'm missing is reset pin connected to one Arduino DO pin. This can be solved with one short wire between digital pin 2 and reset pin on ESP8266. Board has by default solder jumpers for serial connection between ESP8266 and Arduino HW ports. In my case I want to debug program so I keep solder jumpers unconnected and added two wires to DO pins (10 and 11) for software serial. Voltage power for board is between 5 and 12V.

Humidity sensor is standard soil moisture module. We will use module analog output connected to A0 on Arduino board. Power supply for module is 3.3V connected with 3.3V power supply on custom board.
To control water pump we will use on board MOSFET transistor. Simply connect one motor wire to custom board and other motor wire to 4.5V power supply. You can use step down adjustable regulator. If you do not have custom board use relay module.

Step 3: Program

Program can be found on our GitHub. You do not need special adjustments, just set server IP, AP username and password in Esp8266EasyIoTConfig.h.

Step 4: EasyIoT Server Configuration

You need EasyIoT server (windows or Raspberry pi version). You can download EasyIoT server here. After installation in WEB user interface just add irrigation system under ESP8266 EasyIoT drivers. See tutorial how to add module. If you done everything correctly you should see something like this. Name modules like on picture below.

Home Automation

Participated in the
Home Automation

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    9 Discussions


    9 months ago

    hi may i have your schematic diagram for this project?


    2 years ago

    Hi sir can I know the circuit diagram please


    4 years ago on Introduction

    Very nicely done! I've come home to a few dead plants before, so this looks incredibly useful. Thanks!

    1 reply
    hayder ali

    2 years ago

    i need a code of this would anybody send me the code is my id.


    3 years ago

    where we should connect regulator module


    4 years ago

    hi guys....

    i need some help.. will b glad if sum1 helps me out...

    ya actually i must let u know dat im in d 9th grade... n im working on a project based on arduino but im facing sum problms with my code....

    my project is about the automatic irrigation system... one who is dealing wid arduino may find this out veryyy familiar but im trying to do sum thing different with it...

    d basic thing is dat the moisture sensor checks the moisture level of the soil and if it finds it low than the required level... the submersible pump pumps d water and irrigates the plant

    .... but wht im doing different is dat..... im going to connect an HC-05 module (bluetooth) and i want that my IRRIGATION SYSTEM AUTHENTICATES ONLY WHEN AN ANDROID DEVICE GETS CONNECTED TO IT....

    and i want this output through an app called bluetooth terminal of an android device..

    Automatic irrigation system..

    Farm no.1

    (having 24 plants)

    System initialising....

    Calculating soil moisture...

    soil moisture=xyz

    Alert!! Soil moisture is low.. // ( if or else needed )

    Calculating temperature...


    temperature favourable for irrigation.... // ( no need of using "if" or "else"... idea is to show the temperature.. thats all... )

    Soil moisure is low.. plants need to be irrigated...

    Irrigation system initialising..




    irrigation done!!!!

    NEW soil moisture=xyz

    NEW temperature=xyz

    // and after this a delay of 5 sec.. and the system starts again..

    Automatic irrigation system..

    Farm no.1

    (having 24 plants)

    System initialising....

    Calculating soil moisture...

    soil moisture=xyz

    YUP!! the moisture level is good.. no need of watering...

    Calculating temperature...


    temperature favourable for irrigation....

    but the moisture level is well off... no need of irrigation..

    NEW soil moisture=xyz

    NEW temperature=xyz

    PLS someone help me out for code... i know that the superiors will no more than half an hr.. for it.....

    pls send me the code on my email..

    i hope that sum people wud even hv liked this idea... SO plssssss help me people..

    Akin Yildiz

    4 years ago on Introduction

    i just ordered 2 of these pumps, looks interesting and can work down to 3V is incredible. do you think this would pump less water. the speed is not an issue for my project as long as it can work with just 3.3V :)