#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
// Thông tin Blynk
#define BLYNK_TEMPLATE_ID "TMPL67cJZsOS2"
#define BLYNK_TEMPLATE_NAME "lab"
#define BLYNK_AUTH_TOKEN "eF3n3n23BBNMcLiOoEZS4IwuBkFAglUc"
// Thông tin WiFi
char ssid[] = "Wokwi"; // Thay bằng tên WiFi của bạn
char pass[] = ""; // Thay bằng mật khẩu WiFi
// Cấu hình DHT22
#define DHTPIN 4 // Chân dữ liệu của DHT22
#define DHTTYPE DHT22 // Loại cảm biến (DHT22)
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
// Hàm gửi dữ liệu cảm biến lên Blynk
void sendSensorData() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Kiểm tra xem dữ liệu có hợp lệ không
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Lỗi: Không đọc được dữ liệu từ DHT22");
return;
}
// Gửi dữ liệu lên Blynk
Blynk.virtualWrite(V0, temperature); // Gửi nhiệt độ đến V0
Blynk.virtualWrite(V1, humidity); // Gửi độ ẩm đến V1
// In dữ liệu ra Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
}
void setup() {
// Khởi tạo Serial Monitor
Serial.begin(115200);
// Khởi tạo cảm biến DHT22
dht.begin();
// Kết nối với Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Thiết lập timer để gửi dữ liệu cứ 2 giây
timer.setInterval(2000L, sendSensorData);
}
void loop() {
Blynk.run(); // Xử lý kết nối với Blynk
timer.run(); // Chạy timer
}