#define BLYNK_TEMPLATE_ID "TMPL6zwslw9xy"
#define BLYNK_TEMPLATE_NAME "Lab 2"
#define BLYNK_AUTH_TOKEN "3ztqfE9pWP_bRQmrL5rQIZeIiHjo08ZQ"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
/////////////////////////////////////////
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Địa chỉ I2C và kích thước LCD (16x2)
#include <DHT.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
int ledPin1 = 32; // Chân điều khiển LED đỏ
int ledPin2 = 33; // Chân điều khiển LED xanh
void setup(){
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(2500L, sendSensor);
////////////////////////////////////////////////////////////
pinMode(ledPin1, OUTPUT); // Đặt chân điều khiển LED 1 là OUTPUT
pinMode(ledPin2, OUTPUT); // Đặt chân điều khiển LED 2 là OUTPUT
Wire.begin(21, 22); // Chân SDA nối chân 21, chân SCL nối chân 22
lcd.init(); // Khởi tạo LCD
lcd.backlight(); // Bật đèn nền LCD
lcd.setCursor(0, 0); // Đặt con trỏ về vị trí (0, 0)
lcd.print("NGUYEN TIEN DAT"); // Hiển thị chuỗi "TRAN GIA HUY"
///////////////////////////////////////////////////////////////
}
void loop(){
Blynk.run();
timer.run();
}
void sendSensor(){
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//Cai chan Blynk
Blynk.virtualWrite(V1, h);
Blynk.virtualWrite(V0, t);
Serial.print("Temperature : ");
Serial.print(t);
Serial.print(" Humidity : ");
Serial.println(h);
///////////////////////////////////////////////////////////////
if (t >= 70 && t <= 80) {
// Bật LED đỏ và thực hiện chớp tắt
for (int i = 0; i < 5; i++) {
digitalWrite(ledPin1, HIGH); // Bật LED đỏ
delay(500); // Đợi 0.5 giây
digitalWrite(ledPin1, LOW); // Tắt LED đỏ
delay(500); // Đợi 0.5 giây
}
digitalWrite(ledPin2, LOW); // Tắt LED xanh
} else {
digitalWrite(ledPin1, LOW); // Tắt LED đỏ
digitalWrite(ledPin2, HIGH); // Bật LED xanh
}
lcd.setCursor(0, 1); // Đặt con trỏ về dòng thứ 2
lcd.print("Hum: " + String(h) + "%"); // Hiển thị độ ẩm
}