#define BLYNK_TEMPLATE_ID "TMPL63_BBn-rc"
#define BLYNK_TEMPLATE_NAME "Lab2"
#define BLYNK_AUTH_TOKEN "d1aVRE8jkpaGMcVHFEkPLcJGyLa265O0"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <string.h>
#include "DHT.h"
// DHT define
#define DHTTYPE DHT22 // DHT 22
#define DHTPIN 14
DHT dht(DHTPIN,DHTTYPE);
// Define LED
#define LED 27 // chân hiển thị LED là chân 27
WidgetLED LED_x(V1); // đặt tên chân V1
int BUTTON; // khai báo button
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void setup()
{
pinMode(LED,OUTPUT); // cho chân led là output
Serial.begin(115200); // set tốc độ là 115200
dht.begin(); // khởi tạo DHT 22
Blynk.begin(auth,ssid,pass); // khởi tạo cho ứng dụng Blynk
}
BLYNK_WRITE(V0) // đọc giá trị chân V3 ảo trên ứng dụng blynk
{
BUTTON = param.asInt(); // gắn giá trị button bằng giá trị đọc được từ chân V3
if(BUTTON == 1)
{
digitalWrite(LED,HIGH);
LED_x.on();
}
else
{
digitalWrite(LED,LOW);
LED_x.off();
}
}
void loop()
{
Blynk.run(); //chạy ứng dụng blynk cùng với ESP32
float t = dht.readTemperature(); // đọc nhiệt độ
float h = dht.readHumidity(); // đọc độ ẩm
if(isnan(h) || isnan(t))
{
delay(500);
Serial.println("Failed to read from DHT sensor!\n");
return;
}
Blynk.virtualWrite(V2,t); // gửi giá trị nhiệt độ lên ứng dụng blynk V1 với biến t
Blynk.virtualWrite(V3,h); //gửi giá trị độ ẩm lên ứng dụng blynk V2 với biến h
Serial.print("\n");
Serial.print("NHIET DO:" + String(t) + "C"); // in ra serial để giám sát
Serial.print("\t");
Serial.print("DO AM:" + String(h) + "%"); // in ra serial để giám sát
delay(2000); // mỗi 2s sẽ gửi giá trị lên ứng dụng blynk
}