Water system with webserver and multiple pumps completed

:seedling: IoT Self-Watering System β€” Complete Build

After about a week of tinkering, wiring, debugging, and finally getting the last AC adapter for the relays, my IoT self-watering system is complete and running reliably.
The setup combines soil-moisture sensors, water pumps, and a clean web interface so I can monitor and water plants automatically β€” or trigger pumps manually from anywhere on my network.


:nut_and_bolt: Components Used

  • 3Γ— RUNCCI-YUN Mini Water Pumps

  • 3Γ— Hygrometer Module V2.0 Soil-Moisture Sensors

  • 1Γ— ICQUANZX 16-Channel Analog/Digital Multiplexer Breakout (removed later due to unstable signals)

  • Arduino Uno R4 WiFi
    Soil-moisture sensors continuously sample soil conditions.

  • The Arduino Uno R4 WiFi collects sensor data.

  • Based on thresholds, the corresponding relay switches on a pump to water the plant.

  • A Raspberry Pi web server provides real-time monitoring, manual overrides, and timing configuration.

This allows the setup to run unattended β€” but I can still take direct control when needed.

Notes on the Multiplexer

At first, I routed all soil-moisture sensors through a 16-channel multiplexer.
However, the readings became unstable and noisy.
Instead of spending time filtering signals, I removed the multiplexer and wired sensors directly to the Arduino.
This made the system much simpler and more reliable.

:triangular_ruler: Circuit Design

1. PCB / Schematic Diagram

  1. Arduino UNO R4 WiFi as the main controller
  2. Soil sensors β†’ analog input
  3. Relays β†’ digital pins controlling pumps
  4. LCD (LCM1602 IIC) via I2C
  5. Power supply shared between Arduino + pumps

2. Wiring / Breadboard Diagram

Shows the physical layout: Arduino on breadboard, relays connected to pumps, sensors wired directly, and an external supply powering everything.

:laptop: Web Interface

The browser dashboard displays pump states, soil readings, and lets me start/stop pumps on demand.

:toolbox: Relays & Sensor Chassis

All relays used to switch the pumps:

Close-up of the 3D-printed chassis for soil-moisture sensors:

finally done…

I have video of it but dont know how to add them.

2 Likes

YouTube link is probably easiest.

Looks like a decent piece of work.:+1:

one minor remark,

in the GUI work with seconds (not with milliseconds), as that is a more natural unit.

Prevents also to type three extra 0’s in every field…

optionally use float seconds, so 3.5 seconds should be valid.

1 Like

I will update it Many thanks for heads-up! still a newbie!

You seem to be trying to "show off" rather than "share" your project. Where is the code for the Uno and the Pi?

Your schematic is a useless mess. Fritzing will not automatically draw it for you, you need to put in some effort. Fritzing will help you by adding all the components and indicating the connections from your breadboard view and also by highlighting any differences between your schematic and your breadboard view. But you have to organise the components and draw the connections to make a real schematic.