#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
const int DHT_PIN = 15;
const int LED_PIN = 2;
const int LED_PIN2 = 4; // Đèn LED được kết nối tới chân 4 trên ESP32
const int PIR_PIN = 5;
DHTesp dhtSensor;
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
void printTempAndHumidity() {
// Đo nhiệt độ và độ ẩm từ cảm biến DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("Temp: ");
LCD.print(data.temperature, 1);
LCD.print("C");
LCD.setCursor(0, 1);
LCD.print("Humidity: ");
LCD.print(data.humidity, 1);
LCD.print("%");
// Bật đèn LED nếu nhiệt độ vượt qua 36 độ hoặc thấp hơn 10 độ, Độ ẩm từ 20 đến 80 phần trăm
if (data.temperature > 36 || data.temperature < 10 || data.humidity < 20 || data.humidity > 80) {
digitalWrite(LED_PIN, HIGH); // Bật đèn LED
Serial.println(data.temperature);
} else {
Serial.println("Không có");
digitalWrite(LED_PIN, LOW); // Tắt đèn LED
}
delay(2500); // Cập nhật thông tin mỗi 2.5 giây
}
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Initializing...");
// Khởi tạo cảm biến DHT22
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// Khởi tạo đèn LED
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(LED_PIN2, OUTPUT);
digitalWrite(LED_PIN2, LOW);
}
void loop() {
printTempAndHumidity();
// Đọc trạng thái từ cảm biến chuyển động (PIR)
int motionStatus = digitalRead(PIR_PIN);
// Bật đèn LED2 nếu cảm biến chuyển động được kích hoạt
if (motionStatus == HIGH) {
digitalWrite(LED_PIN2, HIGH); // Bật đèn LED2
} else {
digitalWrite(LED_PIN2, LOW); // Tắt đèn LED2
}
}