top of page

Plants need water to survive, but they cannot survive alone unless the environment provides what they need.

This idea was inspired by the new project that is being developed in Mars by NASA.

This automatic system allows the plants to be watered without any human supervision, and the method could be implemented in any environment if proper tools are used.

The purpose of this project is to supply an automatic system that reads the level of moisture in the soil, and subsequently supplies the perfect amount of water to maintain the plant alive.

Our automatic watering system uses a moisture sensor that automatically switches on the water pump when the level of moisture is below indicated system requirements. The soil moisture sensor consists of two leads that are used to measure the volume of water content in soil. These leads allow the current to pass through the soil, and in return the sensor calculates the resistance value to measure the moisture level. If there is more water in the soil, then the soil will conduct more electricity, which means there is less resistance along with high level of moisture. In the same way, if there is less water in soil then soil will conduct less electricity, meaning there is a high resistance value along with a low level of moisture.

As plant gets sufficient water and the sensor senses enough moisture in the soil, then the water pump will automatically stop.

This system will repeat as many times as needed to maintain the perfect level of moisture in the soil of the plant.

 

We have used a self-made water pump using a 5 Volt DC motor.

We decided to use a DC motor based water pump using a diode, a transistor and a combined circuit which operates the DC motor according to the Arduino code.

The DC motor has two leads; one positive and one negative. If we connect them directly to the Arduino board then it will damage the board. To overcome this problem, a NPN transistor is used to control the switching activity of the motor according to the code.

ARDUINO CODE:

 

int WATERPUMP = 13; //motor pump connected to pin 13

int sensor = 8; //sensor digital pin vonnected to pin 8

int val; //This variable stores the value received from Soil moisture sensor.

 

void setup() {

 

pinMode(13,OUTPUT); //Set pin 13 as OUTPUT pin

pinMode(8,INPUT); //Set pin 8 as input pin, to receive data from Soil moisture sensor.

//Initialize serial and wait for port to open:

Serial.begin(9600); // opens serial port, sets data rate to 9600 bps

while (! Serial);// wait for serial port to connect. Needed for native USB

Serial.println("Speed 0 to 255");

}

 

void loop()

{

if (Serial.available()) //loop to operate motor

{

int speed = Serial.parseInt(); // to read the number entered as text in the Serial Monitor

if (speed >= 0 && speed <= 255)

{

analogWrite(WATERPUMP, speed);// tuns on the motor at specified speed

}

}

val = digitalRead(8);  //Read data from soil moisture sensor

if(val == LOW)

{

digitalWrite(13,LOW); //if soil moisture sensor provides LOW value send LOW value to motor pump and motor pump goes off

}

else

{

digitalWrite(13,HIGH); //if soil moisture sensor provides HIGH value send HIGH value to motor pump and motor pump get on

}

delay(400); //Wait for few seconds and then continue the loop.

bottom of page