#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);
}
$abcdeabcde151015202530fghijfghij
Soil SensorBreakout