An Arduino-based automated irrigation system that monitors soil moisture levels and activates a water pump when the soil is too dry — ensuring plants always get the right amount of water without manual effort.
🔗 Live Simulation on Tinkercad: Click to open
This system uses a soil moisture sensor connected to an Arduino Uno to continuously monitor soil conditions. When the moisture level drops below a set threshold (sensor value < 100), the Arduino triggers a relay that switches on a DC motor (acting as a water pump). Once the soil is sufficiently moist, the pump turns off automatically.
| Reference | Component | Quantity |
|---|---|---|
| U1 | Arduino Uno R3 | 1 |
| SEN1 | Soil Moisture Sensor | 1 |
| M1 | DC Motor (Pump) | 1 |
| K1 | Relay SPDT | 1 |
| D1 | Red LED | 1 |
| R1 | 330 Ω Resistor | 1 |
| P1 | 5V Power Supply | 1 |
| BAT1 | Coin Cell 3V | 1 |
| Sensor Pin | Arduino Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| AO (Analog Out) | A0 |
| Relay Pin | Arduino Pin |
|---|---|
| IN (Signal) | Pin 7 |
| VCC | 5V |
| GND | GND |
| Component | Arduino Pin |
|---|---|
| LED (+) via 330Ω resistor | Pin 8 |
| LED (-) | GND |
- Connected through the Relay output terminals
- Powers on when relay is triggered
- The soil moisture sensor reads analog values from the soil via pin A0.
- Higher sensor values = dry soil; lower values = wet soil.
- If the reading drops below 100 (dry soil threshold):
- Pin 7 goes HIGH → Relay activates → DC motor (pump) turns ON
- Pin 8 goes HIGH → LED turns ON (visual indicator)
- When moisture is sufficient (value ≥ 100):
- Both pins go LOW → pump and LED turn OFF.
- The system checks continuously with a small delay for stability.
git clone https://github.com/your-username/automatic-plant-watering-system.git
cd automatic-plant-watering-system- Open
src/plant_watering.inoin Arduino IDE - Select Board: Arduino Uno and the correct Port
- Click Upload
Set baud rate to 9600 to watch live soil moisture readings.
No hardware? Try it directly on Tinkercad: 👉 Open Simulation
automatic-plant-watering-system/
│
├── src/
│ └── plant_watering.ino # Arduino sketch
│
├── docs/
│ └── project_report.md # Detailed project documentation
│
├── diagrams/
│ └── circuit_description.md # Pin connections reference
│
├── README.md # This file
└── LICENSE # MIT License
- 🏠 Home indoor/outdoor plant care
- 🌾 Small-scale greenhouse automation
- 🌱 Agriculture and precision farming
- 🎓 Embedded systems and IoT learning projects
- 🤖 Robotics and automation prototyping
- The threshold value (100) may need tuning based on your specific soil moisture sensor.
- Works best for small-scale, single-plant setups.
- No real-time clock — runs continuously without scheduling.
- DC motor current draw may require an external power source for larger pumps.
- Add a real-time clock (RTC) for scheduled watering
- Use Wi-Fi (ESP8266/ESP32) for remote monitoring via app
- Add a water level sensor to prevent dry-run pump damage
- Support multiple zones with multiple sensors and relays
- Integrate temperature & humidity sensors for smarter decisions
- Build a mobile app dashboard for live data and alerts
Dhruv Thakur Birla Vishvakarma Mahavidyalaya (BVM)
This project is licensed under the MIT License — see the LICENSE file for details.