🌱 Arduino Automatic Watering System for 100 Plants

📦 What This Is
This is a low-cost, scalable automatic watering system using Arduino, designed to control up to 100 plants using a relay-based zone system. Great for gardens, greenhouses, or indoor farms.
🧰 Components Needed (for ~100 plants)
Component | Quantity | Notes |
Arduino Uno / Mega / Nano | 1 | Choose based on the IO pins |
4-Channel Relay Modules | 2–4 | One per zone or water pump |
Submersible Pump or Solenoid Valves | 4–6 | One per plant group |
Moisture Sensors (Optional) | ~4–6 | For automatic dry detection |
Transistors (e.g., TIP120) | Matching pump count | For motor control, if needed |
Diodes (e.g., 1N4007) | 1 per pump | For back-EMF protection |
Power Supply (12V or as required) | 1 | Depends on the motor specs |
Tubing & Splitters | As needed | To deliver water |
Jumper Wires, Breadboard / PCB | - | For wiring |
Water Tank or Reservoir | 1 | Central water source |
🧠System Overview
You divide your 100 plants into zones (e.g., 5 zones of 20 plants). Each zone is watered by a pump/valve, controlled by a relay. You can:
Water on a timer
Water manually
Water is automatically supplied via moisture sensors
âš¡ Wiring Summary
Each relay connects to one pump or valve
Relays are triggered via Arduino’s digital pins
Use external power for motors (not from Arduino)
Add diodes across the motors to prevent voltage spikes
(Optional) Connect moisture sensors to analog pins
💻 Arduino Code (Timer-Based Example)
const int relayPins[] = {2, 3, 4, 5}; // Up to 4 zones
const int numZones = sizeof(relayPins) / sizeof(relayPins[0]);
const unsigned long wateringDuration = 10000; // 10 sec per zone
const unsigned long intervalBetweenZones = 5000;
void setup() {
for (int i = 0; i < numZones; i++) {
pinMode(relayPins[i], OUTPUT);
digitalWrite(relayPins[i], HIGH); // Relay OFF (active LOW)
}
}
void loop() {
for (int i = 0; i < numZones; i++) {
digitalWrite(relayPins[i], LOW); // Turn ON
delay(wateringDuration);
digitalWrite(relayPins[i], HIGH); // Turn OFF
delay(intervalBetweenZones);
}
}
🌧 Optional: Moisture Sensor Automation
Use analog sensors like this:
int moisturePin = A0; // Sensor analog pin
int relayPin = 2; // Single zone example
void loop() {
int moisture = analogRead(moisturePin);
if (moisture < 500) {
digitalWrite(relayPin, LOW); // Turn on pump
delay(5000);
digitalWrite(relayPin, HIGH);
}
delay(10000); // Check every 10s
}
🧱 Tips for Scaling to 100 Plants
Group plants based on similar water needs
Use wider tubing splitters (e.g., 1-to-10)
Secure tubing so nozzles stay aimed at roots
Add flow restrictors if some plants get too much
Upgrade to ESP32 or Raspberry Pi for app/Wi-Fi control
🧰 Optional Upgrades
Feature | Tools Needed |
Real-time clock (RTC) | DS3231 module |
App/remote control | ESP32 or Bluetooth module |
LCD or OLED screen | I2C display module |
Web dashboard | ESP32 + Blynk / Firebase |
Battery backup | 12V UPS or power bank |
🔌 Safety Tips
Never power pumps directly from Arduino
Test the relay logic with the LED before the motors
Use common ground if using external power
Secure electronics in waterproof housing
✅ Final Thoughts
Easy to build, low maintenance
Expandable to any number of zones
You can 3D print pump holders or sensor mounts
Ideal for school projects, farms, and smart gardens
🧾 Credits
Created by: Nuwan & (ChatGPT AI)
Year: 2025
You are free to use, remix, and share with credit. 🌿
Subscribe to my newsletter
Read articles from Nuwan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
