Plant Irrigation System with NodeMCU_ESP8266

Inspect Gerbers

Tracespace View

Assembly Guide

Interactive HTML BOM

Order PCBs:

Compare PCB Prices:

Buy Parts

No parts to buy have been specified in this project's BOM yet.

 
ReferencesQtyDescriptionManufacturerMPN
D11100V 0.15A standard switching diode, DO-35
D21Light emitting diode
J1 J22Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)
J51Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)
J41Generic screw terminal, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)
K11Ultra-miniature, Highly Sensitive SPDT Relay for Signal Circuits
Q1 Q320.1A Ic, 45V Vce, Small Signal NPN Transistor, TO-92BC547-ND

NodeMCU_PIS

Plant Irrigation Shield for the NodeMCU_ESP8266.

This project combines one soil sensor (resistive or capacetive), one 5V pump in a water tank and a floating switch to detect the water level. Depending on the soil measurment and the configured nominal value the pump can be controlled while the floating switch prevents the pump from running dry. All configurations can be controlled via MQTT.

Schematic

schematic

Layout

top bottom

Assembling

IMG_20200221_150840.jpg IMG_20200221_150518.jpg

  • Assemble all parts according BOM
    • there are some slight more variants depending if you want to use an capacetive or resestive soil moisture sensor
    • the status LED is optional
    • the pullup/pulldown resistors should only be placed if needed
    • leave JP1 open

Software

you could run Tasmota and set a few configurations

tasmota_config_pis.png

and set some extra parameter in console

# set nominal value
mem1 750

# turn pump on/off depending mem value
Rule1 on analog#a0>%mem1% do power1 1 endon on analog#a0<%mem1% do power1 0 endon 

# turn rule1 off when water empty // todo: turn status LED on
Rule2 on Power2#State=0 do Rule1 1 endon on Power2#State=1 do Backlog Rule1 0; Power1 0 endon

Rule1 on
Rule2 on

Changing mem1 value (can also be done via MQTT) results in new nominal value, every plant may need other value depending on size, soil, sunlight, ... so you need to play a bit to find a good value.