#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#define LED_PIN 32
#define DHT_PIN 15
#define PIR_SENSOR 12
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
DHTesp dhtSensor;
void setup() {
// Config LED_PIN output
pinMode(LED_PIN, OUTPUT);
// Setup for serial communication
Serial.begin(9600);
Serial.println("ESP32 collecting sensors data");
// Setup for LCD
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("ESP32 collecting data ...");
delay(1000);
// Setup for DHT sensor
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(PIR_SENSOR, INPUT);
}
void loop() {
lcd.clear();
// Read data from DHT sensor
TempAndHumidity data = dhtSensor.getTempAndHumidity();
int temp = data.temperature;
int humid = data.humidity;
String stemp = String(temp) + "C";
String shumid = String(humid) + "%";
// Display data on LCD
lcd.setCursor(0, 0);
lcd.print("Temp: " + stemp);
lcd.setCursor(0, 1);
lcd.print("Humidity: " + shumid);
// Print data to Serial
Serial.println("Temp: " + stemp);
Serial.println("Humidity: " + shumid);
// Motion detection with PIR sensor
int pir_value = digitalRead(PIR_SENSOR);
if (pir_value == 1) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Motion detected");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("Motion ended");
}
Serial.println("---");
// Delay for 2 seconds
delay(2000);
}