// Định template Blynk
#define BLYNK_TEMPLATE_ID "TMPL6950Uwoay"
#define BLYNK_TEMPLATE_NAME "smartHome"
#define BLYNK_AUTH_TOKEN "_w3_vShGB0IEKDvvxBDGpXbMC222zB3P"
// Khai báo thư viện DHT, Blynk, Wifi
#include <WiFi.h>
#include <WiFiClient.h> // tạo một máy để có thể kết nối với một địa IP đã được định nghĩa
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define BLYNK_PRINT Serial
const int Lounge = 23; // Định nghĩa số chân kết nối với thiết bị Lounge
const int Dining = 22; // Định nghĩa số chân kết nối với thiết bị Dining
const int Bedroom = 21; // Định nghĩa số chân kết nối với thiết bị Bedroom
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define DHTPIN 12 //Định nghĩa số chân kết nối với cảm biến DHT
DHT dht(DHTPIN, DHTTYPE); // Khai báo một đối tượng DHT để đọc dữ liệu từ cảm biến DHT
float temp,humi ; //Khai báo biến để lưu trữ giá trị nhiệt độ và độ ẩm
//Kết nối Wifi
char auth[] = "_w3_vShGB0IEKDvvxBDGpXbMC222zB3P"; //Khai báo biến lưu trữ mã thông báo xác thực Blynk
char ssid[] = "Wokwi-GUEST"; //Khai báo biến lưu trữ tên mạng WiFi (SSID)
char pass[] = ""; // Khai báo biến lưu trữ mật khẩu mạng WiFi
void setup()
{
Serial.begin (115200);
dht.begin(); //Khởi động cảm biến DHT
pinMode(Lounge, OUTPUT); // Thiết đặt chân đã gắn cho đèn phòng chờ là output
pinMode(Dining, OUTPUT); // Thiết đặt chân đã gắn cho đèn phòng ăn là output
pinMode(Bedroom, OUTPUT); // Thiết đặt chân đã gắn cho đèn phòng ngủ là output
Blynk.begin (auth,ssid,pass);
}
// đo nhiệt độ độ ẩm trong nhà
void DHT22Read(){
float temp = dht.readTemperature(); //Đọc dữ liệu nhiệt độ và độ ẩm từ cảm biến DHT22 bằng cách gọi các phương thức readTemperature() của đối tượng dht
float humi = dht.readHumidity(); //Đọc dữ liệu nhiệt độ và độ ẩm từ cảm biến DHT22 bằng cách gọi các phương thức readHumidity() của dối tượng dht
Serial.println("Nhiet do: " + String(temp) + "°C");
Serial.println("Do am: " + String(humi) + "%");
Serial.println("---");
Blynk.virtualWrite(V3, temp); //Gửi giá trị nhiệt độ lên Blynk thông qua các bộ ghi ảo V3
Blynk.virtualWrite(V4, humi); //Gửi giá trị độ ẩm lên Blynk thông qua các bộ ghi ảo V4
}
void loop() {
Blynk.run(); //sử dụng để duy trì kết nối, gửi và nhận dữ liệu
DHT22Read(); //để đọc và gửi dữ liệu nhiệt độ và độ ẩm lên Blynk
}
BLYNK_CONNECTED() // Kết nối thành công với nền tảng Blynk
{
Blynk.syncVirtual(V0);
Blynk.syncVirtual(V1);
Blynk.syncVirtual(V2);
}
BLYNK_WRITE(V0) // Hàm Blynk điều khiển đèn phòng chờ
{
int p = param.asInt(); // Đọc giá trị từ switch widget Blynk của đèn phòng chờ
digitalWrite(Lounge, p);
}
BLYNK_WRITE(V1) // Hàm Blynk điều khiển đèn phòng ăn
{
int s = param.asInt(); // Đọc giá trị từ switch widget Blynk của đèn phòng ăn
digitalWrite(Dining, s);
}
BLYNK_WRITE(V2) // Hàm Blynk điều khiển đèn phòng nghỉ
{
int r = param.asInt(); // Đọc giá trị từ switch widget Blynk của đèn phòng ngủ
digitalWrite(Bedroom, r);
}