People’s Democratic Republic of Algeria
Ministry of Higher Education and Scientific Research
Ferhat Abbas Sétif 1 University
Department of Electrotechnics
Master 1 - Industrial and Process Automation
Project N°03
Automatic Plant Watering System
Using Arduino
Prepared By:
Messouaf Serine
Latreche Hamoud
Kaddour Rafik
Kara Anes
Keddache Badreddine
Academic Year 2024 – 2025
Introduction
Plants require consistent care to remain healthy. However, many people
forget to water them regularly due to busy schedules or travel. This project
solves that problem by implementing an automatic plant watering system
using Arduino. The system measures soil moisture, environmental parameters,
and water tank level to intelligently control a water pump, ensuring optimal
plant hydration with minimal human intervention.
Objective
The objective of this project is to design and build a fully automated plant
watering system that:
- Detects soil moisture levels.
- Monitors environmental conditions (temperature, humidity, and
pressure).
- Detects water level in the tank.
- Automatically activates a water pump when needed.
- Displays real-time data on an OLED screen.
Components Used
Component Quantity Description
Arduino Uno 1 Main microcontroller
Soil Moisture Sensor 1 Measures soil moisture
level
Ultrasonic Sensor (HC- 1 Measures water tank level
SR04)
1 Measures temperature,
BME280 Sensor humidity, and atmospheric
pressure
OLED Display (SSD1306 - 1 Displays system status and
I2C) sensor data
Relay Module 1 Controls the water pump
Water Pump (5V or 12V) 1 Delivers water to the plants
12V Power Supply or USB 1 Powers the Arduino and
Power pump
Breadboard and Jumper Several For circuit connections
Wires
Circuit Diagram
the circuit diagram used for the system
Environmental Monitoring & Display
the connection between the Arduino Uno, the BME280 sensor, and the 16x2 LCD. The I2C
lines (SCL/SDA) are used to communicate with the BME280 and LCD
Water Level Detection
the ultrasonic sensor connected to the Arduino to measure the distance to the water surface. It
also includes a status LED to signal the tank water status.
Soil Moisture & Pump Control
the soil moisture sensor and relay-controlled water pump setup. When the soil is dry, the
Arduino activates the relay to turn on the pump.
Working Principle
The Arduino reads the soil moisture level from the sensor. If the moisture
level is below a predefined threshold, the Arduino checks the water tank level
using the ultrasonic sensor. If sufficient water is available, it activates the
pump via the relay to water the plant.
Simultaneously, the BME280 sensor monitors environmental parameters like
temperature, humidity, and pressure. All real-time data is shown on an OLED
display for monitoring purposes.
Arduino Code
(The source code will be provided along with the project……)
Project Photos
Soil moisture sensor Water pump
Relay (Control the pump on/off) BME280
The Ultrasonic sensor OLED
Results and Testing
During testing:
- The system successfully detected low moisture and activated the pump.
- The OLED displayed real-time environmental data.
- The ultrasonic sensor reliably measured the water tank level.
Advantages
- Fully automated watering
- Low power consumption
- Real-time data monitoring
- Can be scaled to multiple plants
- Useful for remote plant care
Limitations
- Fixed watering duration
- Sensor accuracy may degrade over time
- No wireless communication or alert system
- Water tank must be refilled manually
Future Improvements
- Add Wi-Fi (ESP8266) or Bluetooth for remote monitoring
- Implement a real-time clock (RTC) to schedule watering
- Send notifications via SMS or app when the water level is low
- Add solar power for energy independence
Conclusion
This project successfully demonstrates an efficient, affordable, and easy-to-
use automatic plant watering system using Arduino. It is ideal for home
gardeners, educational purposes, and as a foundation for more advanced IoT-
based agricultural automation systems.