// LIBS
#include "DHTesp.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// DEPENDENCIES BLYNK
#define BLYNK_TEMPLATE_ID "TMPL2lB8pw9B8"
#define BLYNK_TEMPLATE_NAME "smart fire alert"
#define BLYNK_AUTH_TOKEN "beePxq5lRMQ0ySK604d0j2kqFbvJr_nd"
// BLYNK VARIABLES
char auth[] = BLYNK_AUTH_TOKEN;
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
// INPUT
#define MOVIMENTO 18
#define CHAMA 19
#define FUMACA 21 // o sensor de umidade esta substituindo o de fumaça
// OUTPUT
#define LED 2
#define LED_WIFI 5
#define BUZZER 4
int mov = 0;
int chama = 0;
int fumaca = 0;
int fire = 0;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(LED_WIFI, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(MOVIMENTO, INPUT);
pinMode(CHAMA, INPUT);
dhtSensor.setup(FUMACA, DHTesp::DHT22);
// WIFI CONECTADO
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
digitalWrite(LED_WIFI, LOW);
delay(300);
Serial.print(".");
digitalWrite(LED_WIFI, HIGH);
}
Serial.println(" Connected!");
// BLYNK CONECTADO
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
timer.run();
// SISTEMA LIGADO
digitalWrite(LED, HIGH);
digitalWrite(LED_WIFI, LOW);
digitalWrite(BUZZER, LOW);
// delay(1000);
// DETECTAR FOGO
detect_fire();
}
void detect_fire(){
TempAndHumidity data = dhtSensor.getTempAndHumidity();
if(digitalRead(CHAMA) == LOW && data.temperature >= 43.00){
Serial.println("INCENDIO !!!!");
Serial.println("Avisar Administração do predio");
Blynk.logEvent("fire_alert_adm");
detect_movement();
delay(10000); // 10 segundo
}
// DETECTAR CHAMA, ACIMA DE 100 JÁ É CHAMA
else if (digitalRead(CHAMA) == LOW){
Serial.println("Tem CHAMA!");
delay(5000); // 5 segundos
}else if(data.temperature >= 43.00){
Serial.println("Tem fumaça!");
delay(5000); // 5 segundos
}
else{
Serial.println("Sem problemas!");
delay(20000); // 20 segundos
}
}
void detect_movement(){
// DETECTAR MOVIMENTO
mov = digitalRead(MOVIMENTO);
if (mov == HIGH){
digitalWrite(BUZZER, HIGH);
Serial.println("Tem pessoas no predio, avisar a todos!");
Blynk.logEvent("fire_alert_all");
delay(1000);
}else{
Serial.println("Avisar corpo de bombeiros");
Serial.println("Sem pessoas no predio, avisar brigada!");
Blynk.logEvent("fire_alert_brigada");
}
}