#include <DHT.h>
#include <LiquidCrystal_I2C.h>
int dhtpin = 2;
float Temperature;
float Humidity;
DHT dht22(dhtpin, DHT22);
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int Soilmoisturepin = A0;
const int airQualitypin = A1;
const int UVlightpin = A2;
const int LDRpin = A3;
const int Waterpumprelay = 3;
const int Fanrelay = 4;
const int Growlightrelay = 5;
const int buzzerpin = 6;
int soilMoisturelimit = 500;
int airQualitylimit = 600;
int uvLightlimit = 200;
int lightlimit = 400;
int temperaturelimit = 30;
void setup() {
Serial.begin(9600);
dht22.begin();
pinMode(Soilmoisturepin, INPUT);
pinMode(airQualitypin, INPUT);
pinMode(UVlightpin, INPUT);
pinMode(LDRpin, INPUT);
pinMode(Waterpumprelay, OUTPUT);
pinMode(Fanrelay, OUTPUT);
pinMode(Growlightrelay, OUTPUT);
pinMode(buzzerpin, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Plant Monitoring");
delay(2000);
}
void loop() {
int Soilmoisturevalue = analogRead(Soilmoisturepin);
int Airqualityvalue = analogRead(airQualitypin);
int UVvalue = analogRead(UVlightpin);
int ldrvalue = analogRead(LDRpin);
Temperature = dht22.readTemperature();
Humidity = dht22.readHumidity();
Serial.print("Soil Moisture: ");
Serial.println(Soilmoisturevalue);
Serial.print("Air Quality: ");
Serial.println(Airqualityvalue);
Serial.print("UV Light: ");
Serial.println(UVvalue);
Serial.print("Light Level: ");
Serial.println(ldrvalue);
Serial.print("Humidity: ");
Serial.println(Humidity);
Serial.print("Temperature: ");
Serial.println(Temperature);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: "); lcd.print(Temperature); lcd.print("C ");
lcd.print("Hum: "); lcd.print(Humidity); lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Soil: "); lcd.print(Soilmoisturevalue);
lcd.setCursor(0, 2);
lcd.print("Air Quality: "); lcd.print(Airqualityvalue);
lcd.setCursor(0, 3);
lcd.print("UV: "); lcd.print(UVvalue);
lcd.print(" Light: "); lcd.print(ldrvalue);
if (Soilmoisturevalue < soilMoisturelimit) {
digitalWrite(Waterpumprelay,HIGH);
Serial.println("Water Pump ON");
} else {
digitalWrite(Waterpumprelay, LOW);
Serial.println("Water Pump OFF");
}
if (Temperature > temperaturelimit) {
digitalWrite(Fanrelay, HIGH);
digitalWrite(buzzerpin, HIGH);
Serial.println("Fan ON");
}else if(Temperature < 2){
digitalWrite(Fanrelay, LOW);
digitalWrite(buzzerpin, HIGH);
Serial.println("Buzzer ON!!!!... , Temperature below 2°C");
}
else {
digitalWrite(Fanrelay, LOW);
Serial.println("Fan OFF");
}
if (Humidity < 50) {
Serial.println("Humidity too low!.,.");
digitalWrite(buzzerpin, HIGH);
} else if (Humidity > 80) {
Serial.println("Humidity too high!...");
digitalWrite(buzzerpin, HIGH);
digitalWrite(Fanrelay, HIGH);
} else
{
Serial.println("Humidity is optimal.");
digitalWrite(buzzerpin, LOW);
digitalWrite(Fanrelay,LOW);
}
if (UVvalue < uvLightlimit || ldrvalue < lightlimit ) {
digitalWrite(Growlightrelay, HIGH);
Serial.println("Grow Light ON");
}else {
digitalWrite(Growlightrelay, LOW);
Serial.println("Grow Light OFF");
}
if (Airqualityvalue < 300) {
lcd.print("Air: Good ");
} else if (Airqualityvalue < airQualitylimit) {
lcd.print("Air: Moderate");
} else {
lcd.print("Air: Poor ");
digitalWrite(buzzerpin, HIGH);
}
delay(2000);
}