//Dinh nghia template Blynk
#define BLYNK_TEMPLATE_ID "TMPL6aVbnzbQZ"
#define BLYNK_TEMPLATE_NAME "SmartHome"
#define BLYNK_AUTH_TOKEN "_hldC1VeLhyKhbDSK9q8pu_EWfibl2ep"
//Khai bao cac thu vien
#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
#define PIN_TRIG 14
#define PIN_ECHO 27
const int Lounge = 23;
const int Dining = 22;
const int Bedroom = 21;
const int Warning=13;
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define DHTPIN 12
DHT dht(DHTPIN, DHTTYPE);
float temp,humi ;
int mode;
char auth[] = "_hldC1VeLhyKhbDSK9q8pu_EWfibl2ep";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
Serial.begin (115200);
dht.begin();
pinMode(Lounge, OUTPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(Dining, OUTPUT);
pinMode(Bedroom, OUTPUT);
pinMode(Warning, OUTPUT);
Blynk.begin (auth,ssid,pass);
}
// đo nhiệt độ độ ẩm trong nha
void DHT22Read(){
float temp = dht.readTemperature();
float humi = dht.readHumidity();
Serial.println("Temp: " + String(temp) + "°C");
Serial.println("Humidity: " + String(humi) + "%");
Serial.println("---");
Blynk.virtualWrite(V4, temp);
Blynk.virtualWrite(V5, humi);
}
//giám sát lượng nước và bơm tự động
void DistanceRead(){
// Start a new measurement:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
long duration = pulseIn(PIN_ECHO, HIGH);
float h = (duration*0.034)/2;
Serial.println("Distance: " + String(h) + "cm");
Serial.println("---");
if(h < 5){
digitalWrite(Warning, HIGH);
}
else {
digitalWrite(Warning, LOW);
}
}
// Check status
void status(int x,int y){
int status = digitalRead(x);
Blynk.virtualWrite(y, status);
}
void loop() {
status(Lounge,V7);
status(Dining,V8);
status(Bedroom,V9);
status(Warning,V6);
Blynk.run(); //sử dụng để duy trì kết nối, gửi và nhận dữ liệu
DHT22Read();
DistanceRead();
}
BLYNK_WRITE(V0) {
int p = param.asInt();
digitalWrite(Lounge, p);
}
BLYNK_WRITE(V1) {
int s = param.asInt();
digitalWrite(Dining, s);
}
BLYNK_WRITE(V2) {
int r = param.asInt();
digitalWrite(Bedroom, r);
}