#define BLYNK_TEMPLATE_ID "TMPL6i7gmyT3B"
#define BLYNK_TEMPLATE_NAME "Blynk test DHT11 LED"
#define BLYNK_AUTH_TOKEN "NdifJ9a6oDlZmw21iRUEkpUgtbjcl9nM"
#include <WiFi.h> // Thư viện Wifi
#include <WiFiClient.h> // Thư viện client Wifi
#include <BlynkSimpleEsp32.h> // Thư viện Blynk cho ESP32
#include <string.h>
#include "DHT.h" // Thư viện cho cảm biến DHT
// Định nghĩa DHT
#define DHTTYPE DHT22 // Định nghĩa loại cảm biến DHT22
#define DHTPIN 12 // Chân GPIO kết nối cảm biến DHT
DHT dht(DHTPIN, DHTTYPE); // Khởi tạo cảm biến DHT
// Định nghĩa LED
#define LED 14 // Chân GPIO kết nối đèn LED
WidgetLED LED_ON_APP(V2); // Khởi tạo đối tượng điều khiển LED trên Blynk
int btn;
char auth[] = BLYNK_AUTH_TOKEN; // Token xác thực Blynk
// Thông tin Wifi
char ssid[] = "Wokwi-GUEST"; // Tên Wifi
char pass[] = ""; // Mật khẩu Wifi
void setup() {
// Giao tiếp với cổng Serial
pinMode(LED, OUTPUT); // Chọn chế độ OUTPUT cho chân điều khiển LED
Serial.begin(115200); // Giao tiếp serial tốc độ 115200 baud
dht.begin(); // Khởi động cảm biến DHT
// Kết nối tới Blynk thông qua Wifi
Blynk.begin(auth, ssid, pass);
}
// Hàm xử lý khi có tín hiệu từ nút V3 trên Blynk
BLYNK_WRITE(V3) {
btn = param.asInt(); // Lấy giá trị từ nút V3
if (btn == 1) {
digitalWrite(LED, HIGH); // Bật LED
LED_ON_APP.on(); // Bật LED trên Blynk
} else {
digitalWrite(LED, LOW); // Tắt LED
LED_ON_APP.off(); // Tắt LED trên Blynk
}
}
void loop() {
Blynk.run(); // Thực hiện chạy Blynk
// Đọc nhiệt độ
float t = dht.readTemperature();
// Đọc độ ẩm
float h = dht.readHumidity();
// Kiểm tra giá trị có hợp lệ hay không
if (isnan(h) || isnan(t)) { // Nếu giá trị không hợp lệ
delay(100);
Serial.println("Failed to read from DHT sensor!\n"); // Thông báo lỗi
return; // Trở về hàm loop
}
// Gửi giá trị nhiệt độ và độ ẩm lên Blynk
Blynk.virtualWrite(V0, t);
Blynk.virtualWrite(V1, h);
// In ra thông tin nhiệt độ và độ ẩm vào Serial Monitor
Serial.print("\n");
Serial.print("Nhiệt độ: " + String(t) + "°C");
Serial.print("\t");
Serial.print("Độ ẩm: " + String(h) + "%");
delay(1000); // Delay 1 giây
}