#define BLYNK_TEMPLATE_ID "TMPL68MaRAWlq"
#define BLYNK_TEMPLATE_NAME "Test"
#define BLYNK_AUTH_TOKEN "azmRCcv1BW_Tx7XG3vAX4BcH5x2tHErS"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <string.h>
#include <DHT.h>
#define DHT_TYPE DHT22
#define DHT_PIN 14
DHT dht(DHT_PIN,DHT_TYPE);
// define LED
#define LED_LIV 27 // Chân LED
#define LED_BATH 12 // Chân LED
// define PIR
#define PIR 19
//define servo
#include <ESP32Servo.h>
#define SERVO 23
Servo servo;
// define buzzer
#define BUZZER 15
int button,pos=0;
String report;
// information
char auth[] = BLYNK_AUTH_TOKEN; // MÃ TOKEN
char ssid[] = "Wokwi-GUEST"; // Your WiFi credentials.
char pass[] = ""; // Set password to "" for open networks.
void setup() {
Serial.begin(115200);
// WiFi.begin(ssid,pass);
// Blynk.config(auth);
Blynk.begin(auth, ssid, pass); // mã token, name wifi, password
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED){
delay(100);
Serial.print(".");
}
Serial.println("Connected!");
dht.begin();
pinMode(LED_LIV, OUTPUT);
pinMode(PIR,INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED_BATH, OUTPUT);
servo.attach(SERVO);
servo.write(0);
}
// LED CONTROL
BLYNK_WRITE(V3)
{
button = param.asInt();
if (button == 1)
{
digitalWrite(LED_LIV, HIGH);
}
else
{
digitalWrite(LED_LIV, LOW);
}
}
BLYNK_WRITE(V4)
{
pos = param.asInt();
servo.write(pos);
delay(30);
}
void loop() {
// kết nối với blynk
Blynk.run();
// temperature & humidity
float t = dht.readTemperature();
float h = dht.readHumidity();
const int IP=digitalRead(PIR);
Serial.println(IP);
delay(100);
// check is Number ?
if (isnan(h) || isnan(t))
{
delay(500);
Serial.println("Failed to read from DHT sensor!");
return; // nếu lỗi thì sẽ quay lại loop đến khi đc giá trị đi tiếp
}
// báo cháy
if (t>70)
{
report ="PHAT HIEN CO CHAY";
analogWrite(BUZZER,255);
delay(1000);
pos=180;
servo.write(180);
Serial.print("PHAT HIEN CO CHAY \t");
}
else
{
analogWrite(BUZZER,0);
report ="BINH THUONG";
}
//PIR
if(IP==1){
digitalWrite(LED_BATH,HIGH);
delay(1000);
}
else{
digitalWrite(LED_BATH,LOW);
delay(1000);
}
// gửi giá trị lên blynk
Blynk.virtualWrite(V0,t); // chân đặt, tên
Blynk.virtualWrite(V1,h);
Blynk.virtualWrite(V2,report);
Blynk.virtualWrite(V3,button);
Blynk.virtualWrite(V4,pos);
// In giá trị
Serial.print("Temperature " + (String)t + " độ C");
Serial.print("\t");
Serial.print("Humidity " + (String)h + "%");
Serial.print("\n");
delay(2000);
}