Wednesday, June 19, 2024

Smart Irrigation System

Comment errors or corrections found for this circuit, and get the chance to win big!

This project is based on the AEIOU heuristic framework of Design Engineering Approach.

Design for Performance, Safety and Reliability is ensured in terms of segregation of the low voltage and the high voltage parts of the circuit.

Design for Manufacturability and Assembly is ensured in terms of compact sensors that can be installed within the fields.

Design for Aesthetics and Ergonomics is achieved in terms of remote access by farmers and seasonal and environmental based access to irrigation.

Design for cost and Environment is addressed by correct usage of water, that has now become a prized Natural Resource.

- Advertisement -

The system can be interfaced via Bluetooth Module using MIT App.

Cost of the Project: ₹1593/-

List of Components Used In Smart Irrigation System

Component Name Component Value Quantity
Arduino UNO 1
Bluetooth Module HC-05-09 1
Temperature and Humidity Sensor DHT-11 1
Soil moisture sensor FC-28 1
Peristaltic pump AB11 4
LEDs Red, Green and Yellow 3
Adaptor 1 A, 6 V 1
Connecting Jumpers
Breadboard 1


- Advertisement -

1. Sensors

(a) Soil moisture sensor

The soil moisture sensor is used to measure the volumetric water content of soil. It is used to monitor soil moisture content to control irrigation in greenhouses. A moisture sensor is used to sense the level of moisture content present in irrigation field. It has a level detection module in which we can set a reference value.

(b) Temperature and Humidity Sensor

The temperature and humidity sensor is necessary to reduce the watering frequency. That is when the weather gets cooler, less water is needed whereas vice versa in the other case.

2. Relay Module

The relay module is an electrically operated switch that allows you to turn ON or OFF a circuit using voltage and/or current much higher than a Microcontroller could handle. There is no connection between the low voltage circuit operated by the Microcontroller and the high power circuit. The relay protects each circuit from the other. Each channel in the module has three connections named NC, COM, and NO. Depending on the input signal trigger mode, the jumper cap can be placed at high level effective mode which ‘closes’ the normally open (NO) switch at high level input and at low level effective mode which operates the same but at low level input.

3. Peristaltic Pump

A peristaltic pump is a type of positive displacement pump used for pumping a variety of fluids. The fluid is contained within a flexible tube fitted inside a circular pump casing. It is reputed to pump water from a depth of about 31 feet.

Block Diagram

The Model works as follows:

The results of the moisture, temperature and threshold level can be calculated through the sensors used in the project. Analysis of soil parameters can be done and the needed nutrients can be calculated for the soil. The need of water supply of the soil can be calculated and hence appropriate irrigation is done through smart techniques.

Featured experimental result and analysis:

System configuration:

This module is used to configure all hardware devices. Soil moisture sensor, Temperature and Humidity sensor, Pump all are connected to major component arduino with Bluetooth connectivity.

Soil moisture and temperature sensing:

In this module we analyze the moisture content in the soil and it’s temperature. According to the sensor values further decision are taken.

Send the results on Arduino serial monitor:

Once the values of temperature and moisture are generated on serial monitor. The threshold can also be notified on serial monitor itself. And if result of Moisture, Temperature and Humidity goes below the threshold value the pump will automatically turn ON and if the level of Moisture, Temperature and Humidity increase upto threshold level of field then pump will automatically turn OFF.


In schematic, Red Wire- Vcc and Black Wire- Ground.
External supply is given to Arduino through 6V-1A Adaptor.
In place of motor, connect 6V peristaltic pump.

Actual Photograph

Author's Prototype for Smart Irrigation System
Author’s Prototype for Smart Irrigation System

Temperature, Humidity and Moisture Requirements of Major crops are listed:

Sr. No. Crop Name Temperature Moisture (%) Humidity(%)
1 Rice 21-37 20-25 60-80
2 Wheat 10-15 14-20 60-70
3 Bajra 20-38 20-25 55-70


A theoretic study of the parameters considered in our project is summarized by study of different literature materials and papers published.

References for the same is obtained from:

Construction & Testing

Fig.1. Circuit interface with Arduino with sensors
Fig.1: Circuit interface with Arduino with sensors for Smart Irrigation System
Fig. 2. Serial Monitor
Fig. 2: Serial Monitor for Smart Irrigation System
Android Application for Smart Irrigation System
Fig. 3: Android Application for Smart Irrigation System
Fig. 4: Application Icon
Android Application with result
Fig. 5: Android Application with the result

The readings are







Flowchart for Smart Irrigation System
Flowchart for Smart Irrigation System

App Blocks: (MIT App Inventor)

Software Used

Arduino IDE

Code Skeleton

#define Temperature and Humidity sensor A0 // Analog pin A0 of Arduino Uno
int sensor_pin = A0;
int output_value ;
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int pos = A1; // Define motor position
#define Sensor_PIN No.
void setup()
(ledPin1, OUTPUT); (ledPin2, OUTPUT); (ledPin3, OUTPUT); // Define the pinModes
pinMode(motorPin, OUTPUT); // set A1 to an output so we can use it to turn on the transistor
Serial.begin(9600); // Baud Rate
Serial.println(“Reading From the Sensor …”);
void loop()
Serial.print(“Define Sensor, \t”);
int chk = Read the Output of Sensor;
switch (chk)
case SensorNameLIB_OK:
Serial.print(“Checksum error,\t”);
Serial.print(“Time out error,\t”);
Serial.print(“Unknown error,\t”);
Serial.print(sensorname.humidity, 1);
Serial.print(sensorname.temperature, 1);
value= analogRead(sensor_pin);
value = map(value,550,0,0,100);
Serial.print(“Mositure : “);
if (Humidity value>10)
Sensorinput gets HIGH; //green LED ON
else {
Sensorinput gets LOW; //Digital Output
if (Sensor value>31)
Sensorinput gets HIGH; // Digital output
Serial.println(“Tempearture is HIGH”); //yellow LED ON
else {
Sensorinput gets Low;
if (value>50)
Sensorinput gets HIGH;
Serial.println(“Moisture is high”);// RED
else {
Sensorinput gets LOW;
if (output_value<10) { Serial.println(“output value is low”); Sensorinput gets HIGH; // Digital output delay(x); Sensorinput gets LOW; // Digital output delay(x); } else { Sensorinput gets HIGH; //Digital output } if(Serial.available()>0)
char data =;
if (data == ‘a’)
Motorinp pin gets HIGH; //Digital output
else if(data == ‘b’)
Motorinp pin gets LOW; //Digital output



  1. Bonsoir, mes félicitations à l’équipe EFY
    Enfin je voulais réalisé votre modèle là, hélas je rencontre un problème avec votre code pour l’arduino. Pouvez-vous m’aidez s’il vous plait. Merci d’avance.


Unique DIY Projects

Electronics News

Truly Innovative Tech

MOst Popular Videos

Electronics Components