#define BLYNK_TEMPLATE_ID "TMPL6-0a8RXc8"// id bài bên blynk
#define BLYNK_TEMPLATE_NAME "esp32 with blynk"// tên bài bên blynk
#define BLYNK_AUTH_TOKEN "hZsmL4cCyWpB50FDZp_wDPbEoj99nxbs"// mã xác thực blynk
#define BLYNK PRINT Serial//
#include <WiFi.h>// khai báo thư viện wifi
#include <WiFiClient.h>// khai báo thư viện wifi client
#include <BlynkSimpleEsp32.h>// khai báo thư viện blynk cho esp32
#include "DHT.h" // khai báo thư viện của cảm biến DHT
#include <BH1750.h>// khai báo thư viện của cảm biến ánh sáng
char auth [] = BLYNK_AUTH_TOKEN;//
char ssid[]="Wokwi-GUEST";// tên wifi
char pass[] = "";// mật khẩu wifi
#define LED 2// chân tín hiệu kết nối đến led
WidgetLED LED_blynk(V4);// kết nối led đến blynk (chân v4)
int button;// khai báo biến số nguyên cho trạng thái nút
#define DHTTYPE 22// Định nghĩa loại cảm biến DHT22
#define DHTPIN 15// chân kết nối đến DHT22 (chân 15)
DHT dht(DHTPIN, DHTTYPE);// khởi tạo cảm biến DHT22
BlynkTimer timer;//
int kyPin = 32;// khai báo chân kết nối tới cảm biến ánh sáng LDR
void sendSensor(){ //chương trình con đọc nhiệt độ và độ ẩm từ cảm biến DHT
float h =dht.readHumidity();// đọc giá trị độ ẩm
float t =dht.readTemperature(); // đọc giá trị nhiệt độ
if (isnan(h) ||isnan(t)) { // kiểm tra có ok ko
Serial.println("Failed to read from DHTsensor!"); // nếu ko in ra thông báo lỗi
return;} // quay trở lại
delay(500);// delay 0.5s
Blynk.virtualWrite(V2, t); //kết nối tín hiệu nhiệt độ đến blynk (chân v2)
Serial.print("Temperature: ");//in in ra và hiện thị thông tin nhiệt độ
Serial.println(t); // in ra giá trị của cảm biến nhiệt độ
delay(500);// delay 0.5s
Blynk.virtualWrite(V3, h);//kết nối tín hiệu độ ẩm đến blynk (chân v3)
Serial.print("Humidity: ");//in in ra và hiện thị thông tin độ ẩm
Serial.println(h);} // in ra giá trị của cảm biến độ ẩm
void setup(){ //chương trình thiết lập
pinMode(LED, OUTPUT); // led là ngõ ra
Serial.begin(9600);// Giao tiếp serial với tốc độ 9600 baud
dht.begin(); // khởi động cảm biến DHT
timer.setInterval(1000L, sendSensor);// lên lịch cho chương trình endSensor (1000 mili giây)
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);}// bắt đầu kết nối đến blynk thông qua wifi
BLYNK_WRITE(V0) {//kết nối tín hiệu nút nhấn đến blynk (chân v0)
button = param.asInt();//
if(button == 1) {//nếu giá trị = 1 (nhấn nút bên blynk)
digitalWrite(LED, HIGH);//thì led sáng
LED_blynk.on();//led sáng bên blynk
} else {// //nếu giá trị = 0 (nhấn nút bên blynk)
digitalWrite(LED, LOW);//thì led tắt
LED_blynk.off();}}//led tắt bên blynk
void ky_write_led()//chương trình con đọc giá trị của cảm biến sánh sáng,bật tắt led theo cảm biến
{
int rawValue = analogRead(kyPin);// đọc giá trị analog từ cảm biến ánh sáng,sau đó lưu vào biến rawValue
Blynk.virtualWrite(V5, rawValue);////kết nối tín hiệu cảm biến ánh sáng đến blynk (chân v5)
Serial.print("light: "); // in ra và hiện thị thông tin ánh sáng
Serial.println(rawValue); // in ra giá trị của cảm biến ánh sáng
delay(500); // delay 0.5 giây
if (button == 0){ // nếu nút nhấn tắt
if(rawValue>4000){ // nếu giá trị của cảm biến lớn hơn 4000 thì đèn led sáng
digitalWrite(LED, HIGH); // led sáng
LED_blynk.on(); //led sáng bên blynk
} else { //nếu nhỏ hơn 4000 thì đèn led tắt
digitalWrite(LED, LOW); //led tắt
LED_blynk.off();}} //led tắt bên blynk
}
void loop() // vòng lặp
{
sendSensor(); // chương trình con đọc giá trị nhiệt độ và độ ẩm từ DHT22
ky_write_led(); // chương trình con đọc giá trị cảm biến ánh sáng để sáng hoặc tắt đèn led
Blynk.run(); // chạy blynk
}