Monday 25 September 2017

EXAMPLE OF CODING IN ARDUINO UNO.


#include<LiquidCrystal.h>

 #define moisture_sensorPin A0
 #define float_switchPin A1
 #define motorPin 4
 #define soil_statusPin 2
 #define tank_statusPin 3

 LiquidCrystal lcd(13,12,11,10,9,8);

 const int avg_moisture = 800;

void setup()
{
 Serial.begin(9600);
 lcd.begin(16,2);
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print(" AUTOMATIC ");
 lcd.setCursor(0,1);
 lcd.print(" IRRIGATION S/M ");
 delay(2000);

  pinMode(moisture_sensorPin,INPUT);
 pinMode(float_switchPin,INPUT);
 pinMode(motorPin,OUTPUT);
 pinMode(soil_statusPin,OUTPUT);
 pinMode(tank_statusPin,OUTPUT);

 digitalWrite(motorPin,LOW);
 digitalWrite(soil_statusPin,LOW);
 digitalWrite(tank_statusPin,LOW);
}
void loop()
{
lcd.begin(16,2);

 lcd.setCursor(0,0);
 lcd.print(" MOISTURE - ");

 if(analogRead(moisture_sensorPin) > avg_moisture){
 lcd.print("HIGH");
 digitalWrite(soil_statusPin,HIGH);}

 if(analogRead(moisture_sensorPin) < avg_moisture){
 lcd.print(" LOW");
 digitalWrite(soil_statusPin,LOW);}

 lcd.setCursor(0,1);
 lcd.print("TANK LEVEL- ");

 if( digitalRead(float_switchPin) == HIGH){
 lcd.print("HIGH");
 digitalWrite(tank_statusPin,LOW);}
 if( digitalRead(float_switchPin) == LOW){
 lcd.print(" LOW");
 digitalWrite(tank_statusPin,HIGH);}

 digitalWrite(motorPin,LOW);

  if(analogRead(moisture_sensorPin) < avg_moisture && digitalRead(float_switchPin) == HIGH)
 {

 while(analogRead(moisture_sensorPin) < avg_moisture && digitalRead(float_switchPin) == HIGH)
 {
 lcd.setCursor(0,0);
 lcd.print(" MOISTURE - LOW");
 lcd.setCursor(0,1);
 lcd.print(" MOTOR IS ON ");
 digitalWrite(soil_statusPin,LOW);
 digitalWrite(tank_statusPin,LOW);
 digitalWrite(motorPin,HIGH);
 }

 if(analogRead(moisture_sensorPin) > avg_moisture){
 lcd.setCursor(0,0);
 lcd.print(" MOISTURE - HIGH");
 lcd.setCursor(0,1);
 lcd.print(" MOTOR - OFF ");
 digitalWrite(soil_statusPin,HIGH);
 digitalWrite(motorPin,LOW);
 delay(3000);}

 if(digitalRead(float_switchPin) == LOW){
 lcd.setCursor(0,0);
 lcd.print(" TANK LEVEL- LOW");
 lcd.setCursor(0,1);
 lcd.print(" MOTOR - OFF ");
 digitalWrite(tank_statusPin,HIGH);
 digitalWrite(motorPin,LOW);
 delay(3000);}

}
 delay(500);

}

In this programming part, to facilitate communication between Arduino and LCD module, we make use of a built in library in Arduino <LiquidCrystal.h>. During interfacing  the library is first initialized and then define pins using the command LiquidCrystal lcd(RS, E, D4, D5, D6, D7), pins are assigned in this order.

The Arduino reads the sensor output through the analog input pins using analogRead function. For example “analogRead(moisture_sensorPin);” converts the voltage (in the range 0 to 5V) at the  A0 pin into a number (in the range 0 to 1023) This way the voltage at A0 is compared to a fixed number (avg_moisture) for identifying the current status of the soil.

Monday 18 September 2017

EXAMPLE OF SOIL MOISTURE SENSOR CIRCUIT.

HOW MOISTURE SENSOR WORKS IN A CIRCUIT.

DRY CONDITION

when no moisture or water, the probe are dry. Circuit is open, no current flows into the base of the transistor, so the LED is off.


WET CONDITION

when there is moisture or water, the probe gets short circuit when in contact with moisture or water. Circuit is closed, current will flow into the base of the transistor, LED turns on.

Thursday 14 September 2017