#include "DHTesp.h"
#include "LiquidCrystal_I2C.h"
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <ESP32Servo.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int motionSensor = 14;
const int DHT_PIN = 15;
const int Buzzer_pin = 33;
const int pH_pin = 4;
const int moisture_pin = 27;
const int N_pin = 25;
const int P_pin = 2;
const int K_pin = 26;
DHTesp dhtSensor;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(115200);
pinMode(motionSensor, INPUT_PULLUP);
pinMode(Buzzer_pin, OUTPUT);
pinMode(pH_pin,INPUT);
pinMode(moisture_pin, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
lcd.setCursor(0,0);
lcd.print("T: " + String(data.temperature, 2) + " C");
lcd.setCursor(0,1);
lcd.print("Humid: " + String(data.humidity, 1) + "%");
boolean val = digitalRead(motionSensor);
Serial.println(val);
if(val==true){
Serial.println("Motion Detected!");
tone(Buzzer_pin,1300,5000);
}
else{
Serial.println("No motion Detected!");
digitalWrite(Buzzer_pin,LOW);
}
float ph = map(analogRead(pH_pin),0,4095,0,14);
Serial.println("Ph of soil is:" + String(ph,2));
int moisture = analogRead(moisture_pin);
Serial.println("moisture is " + String(moisture));
float N_value = map(analogRead(N_pin),0,4095,0,100);
float P_value = map(analogRead(P_pin),0,4095,0,100);
float K_value = map(analogRead(K_pin),0,4095,0,100);
Serial.println("Nitrogen : " + String(N_value,2) + "%");
Serial.println("Potassium : " + String(P_value,2) + "%");
Serial.println("Phosphorus : " + String(K_value,2) + "%");
delay(1000);
}