#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include <WiFi.h>
#include <ArduinoJson.h>
#define DHTPIN 19 // Chân kết nối của DHT22 với ESP32
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define LED1 13 // Chân GPIO kết nối với đèn LED, tím
#define LED2 12 //xanh
DHT dht(DHTPIN, DHTTYPE);
// Khởi tạo LCD với địa chỉ I2C 0x27, 16 cột và 2 hàng
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
lcd.init(); // Khởi động LCD
lcd.backlight(); // Bật đèn nền
dht.begin(); // Khởi động cảm biến nhiệt độ và độ ẩm
pinMode(LED1, OUTPUT); // Thiết lập chân GPIO cho đèn LED là đầu ra
pinMode(LED2, OUTPUT);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Kiểm tra lỗi nếu có
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Hiển thị nhiệt độ và độ ẩm trên LCD
lcd.clear(); // Xóa màn hình trước khi hiển thị dữ liệu mới
lcd.setCursor(0, 0); // Di chuyển con trỏ đến hàng đầu tiên, cột đầu tiên
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 1); // Di chuyển con trỏ đến hàng thứ hai, cột đầu tiên
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
// Bật đèn LED nếu nhiệt độ vượt quá 30 độ C
if (temperature > 36) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
} else {
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
}
delay(2000); // Chờ 2 giây rồi đọc lại dữ liệu từ cảm biến
}