#define BLYNK_TEMPLATE_ID "TMPL3wLaoDT1D"
#define BLYNK_TEMPLATE_NAME "sahil"
#define BLYNK_AUTH_TOKEN "eJiwDUD5SG_7tgcZdt_Hr2tBs7gyqCtC"
#include <DHT.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define DHTPIN 25 // Pin connected to the DHT22 sensor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Pins for Ultrasonic sensors
#define TRIG1 2
#define ECHO1 4
#define TRIG2 5
#define ECHO2 18
#define TRIG3 19
#define ECHO3 21
// Pins for PIR sensors
#define PIR1 22
#define PIR2 23
#define PIR3 26
// Pins for Flame sensors
#define FLAME1 27
#define FLAME2 32
#define FLAME3 33
// Pin for Buzzer
#define BUZZER 15
// Blynk credentials
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
char auth[] = BLYNK_AUTH_TOKEN;
void setup() {
Serial.begin(115200);
// Initialize WiFi and Blynk
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Blynk.begin(auth, ssid, pass);
// Initialize DHT22
dht.begin();
// Initialize pins for ultrasonic sensors
pinMode(TRIG1, OUTPUT);
pinMode(ECHO1, INPUT);
pinMode(TRIG2, OUTPUT);
pinMode(ECHO2, INPUT);
pinMode(TRIG3, OUTPUT);
pinMode(ECHO3, INPUT);
// Initialize pins for PIR sensors
pinMode(PIR1, INPUT);
pinMode(PIR2, INPUT);
pinMode(PIR3, INPUT);
// Initialize pins for flame sensors
pinMode(FLAME1, INPUT);
pinMode(FLAME2, INPUT);
pinMode(FLAME3, INPUT);
// Initialize buzzer
pinMode(BUZZER, OUTPUT);
digitalWrite(BUZZER, LOW);
}
// Function to measure distance from ultrasonic sensor
long measureDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2; // Convert to cm
return distance;
}
void loop() {
Blynk.run();
// Ultrasonic sensor readings
long distance1 = measureDistance(TRIG1, ECHO1);
long distance2 = measureDistance(TRIG2, ECHO2);
long distance3 = measureDistance(TRIG3, ECHO3);
// PIR sensor readings
int motion1 = digitalRead(PIR1);
int motion2 = digitalRead(PIR2);
int motion3 = digitalRead(PIR3);
// Flame sensor readings
int flame1 = digitalRead(FLAME1);
int flame2 = digitalRead(FLAME2);
int flame3 = digitalRead(FLAME3);
// Activate buzzer if flame is detected
if (!flame1 || !flame2 || !flame3) {
digitalWrite(BUZZER, HIGH);
} else {
digitalWrite(BUZZER, LOW);
}
// DHT22 sensor readings
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if DHT22 data is valid
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
} else {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Update DHT readings on Blynk server
Blynk.virtualWrite(V0, temperature);
Blynk.virtualWrite(V1, humidity);
}
// Update room 1 readings on Blynk server
Blynk.virtualWrite(V2, distance1);
Blynk.virtualWrite(V3, motion1);
Blynk.virtualWrite(V4, !flame1);
// Update room 2 readings on Blynk server
Blynk.virtualWrite(V5, distance2);
Blynk.virtualWrite(V6, motion2);
Blynk.virtualWrite(V7, !flame2);
// Update room 3 readings on Blynk server
Blynk.virtualWrite(V8, distance3);
Blynk.virtualWrite(V9, motion3);
Blynk.virtualWrite(V10, !flame3);
// Print readings for each room
Serial.println("Room 1:");
Serial.print("Distance: ");
Serial.print(distance1);
Serial.println(" cm");
Serial.print("Motion Detected: ");
Serial.println(motion1 ? "Yes" : "No");
Serial.print("Flame Detected: ");
Serial.println(flame1 ? "No" : "Yes");
Serial.println("Room 2:");
Serial.print("Distance: ");
Serial.print(distance2);
Serial.println(" cm");
Serial.print("Motion Detected: ");
Serial.println(motion2 ? "Yes" : "No");
Serial.print("Flame Detected: ");
Serial.println(flame2 ? "No" : "Yes");
Serial.println("Room 3:");
Serial.print("Distance: ");
Serial.print(distance3);
Serial.println(" cm");
Serial.print("Motion Detected: ");
Serial.println(motion3 ? "Yes" : "No");
Serial.print("Flame Detected: ");
Serial.println(flame3 ? "No" : "Yes");
Serial.println("--------------------------");
delay(2000); // Delay between readings
}