/* Fill-in information from Blynk Device Info here */
#define BLYNK_TEMPLATE_ID "TMPL6Tyz_YreY"
#define BLYNK_TEMPLATE_NAME "Smart Environmental Monitoring and Alert System"
#define BLYNK_AUTH_TOKEN "bl6RMyD73eGliJjpMmELlR5xl9ojTpIK"
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h> // Correct library for ESP32
#include <DHT.h>
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Pin Definitions
#define DHTPIN 12 // DHT22 data pin
#define TRIG_PIN 23 // Ultrasonic Trigger pin
#define ECHO_PIN 22 // Ultrasonic Echo pin
#define LDR_PIN 34 // LDR analog pin
#define BUZZER_PIN 33 // Buzzer pin
// DHT Sensor Settings
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Ultrasonic Sensor Variables
long duration;
float distance;
// Blynk Timer
BlynkTimer timer;
void setup() {
// Debug console
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
dht.begin(); // Initialize DHT sensor
// Setup pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW); // Ensure buzzer is off initially
// Timer setup to send sensor data every 2 seconds
timer.setInterval(2000L, sendSensorData);
Serial.println("System Initialized...");
}
void loop() {
Blynk.run(); // Run Blynk
timer.run(); // Run Blynk timer
}
void sendSensorData() {
// Read DHT22 Data
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (!isnan(temperature) && !isnan(humidity)) {
Blynk.virtualWrite(V1, temperature); // Send temperature to Blynk
Blynk.virtualWrite(V2, humidity); // Send humidity to Blynk
}
// Read Ultrasonic Sensor Data
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration * 0.034) / 2;
Blynk.virtualWrite(V3, distance); // Send distance to Blynk
// Read LDR Sensor Value
int ldrValue = analogRead(LDR_PIN);
Blynk.virtualWrite(V4, ldrValue); // Send LDR value to Blynk
// Buzzer logic and LED feedback in Blynk
if (temperature > 30.0 || distance < 20.0 || ldrValue < 300) {
Serial.println("Alert - Activating Buzzer!");
activateBuzzer();
Blynk.virtualWrite(V5, 255); // Turn on Blynk LED (V5)
} else {
Blynk.virtualWrite(V5, 0); // Turn off Blynk LED (V5)
}
}
void activateBuzzer() {
digitalWrite(BUZZER_PIN, HIGH); // Turn buzzer on
delay(500);
digitalWrite(BUZZER_PIN, LOW); // Turn buzzer off
}