#define BLYNK_TEMPLATE_ID "TMPL6_ckLM2G1"
#define BLYNK_TEMPLATE_NAME "test"
#define BLYNK_AUTH_TOKEN "gF13t5dmtV6nGnB8AZRYo2lvfXxY4R-P"
#include <WiFi.h>
#include <WiFiClient.h>
#include <Adafruit_Sensor.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
// Định nghĩa chân DHT và loại cảm biến
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Định nghĩa thông tin Wi-Fi
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Định nghĩa chân LED
#define LED 26
// Tạo đối tượng BlynkTimer
BlynkTimer timer;
// Hàm điều khiển LED từ nút nhấn trong ứng dụng Blynk
BLYNK_WRITE(V3) {
int value = param.asInt(); // Đọc giá trị từ Blynk (1 hoặc 0)
value ? digitalWrite(LED, HIGH) : digitalWrite(LED, LOW); // Điều khiển LED
}
// Hàm gửi dữ liệu cảm biến lên Blynk
void sendSensor() {
float h = dht.readHumidity(); // Đọc độ ẩm
float t = dht.readTemperature(); // Đọc nhiệt độ
// Kiểm tra nếu không đọc được dữ liệu từ cảm biến
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Gửi dữ liệu lên Blynk
Blynk.virtualWrite(V1, h); // Gửi độ ẩm lên V1
Blynk.virtualWrite(V0, t); // Gửi nhiệt độ lên V2
}
// Hàm setup
void setup() {
// Mở Serial Monitor
Serial.begin(9600);
delay(1000);
// Kết nối với Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Khởi tạo các chân
pinMode(LED, OUTPUT);
dht.begin();
// Thiết lập gửi dữ liệu cảm biến mỗi giây
timer.setInterval(1000L, sendSensor);
}
// Hàm loop
void loop() {
Blynk.run(); // Chạy Blynk
timer.run(); // Chạy bộ định thời
}