#define BLYNK_TEMPLATE_ID "TMPL6sjSCFnl3"
#define BLYNK_TEMPLATE_NAME "PIR Sensor Alarm"
#define BLYNK_AUTH_TOKEN "BPYDNxgwmE6JYXXkBoVWDDSEFRDHm4BR"
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp32.h>
// Hardware connections
const int pir = 14; // PIR Sensor
const int sound = 27; // Sound Sensor
const int led = 13; // LED
const int buzzer = 12; // Buzzer
// WiFi credentials
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Timer
BlynkTimer timer;
bool alarmEnabled = true;
// Blynk Switch (Virtual Pin V0) to turn alarm ON/OFF
BLYNK_WRITE(V0) {
alarmEnabled = param.asInt();
}
// Function to detect motion or sound
void checkSensors() {
int motionDetected = digitalRead(pir);
int soundDetected = digitalRead(sound);
if (alarmEnabled && (motionDetected == HIGH || soundDetected == HIGH)) {
Serial.println("Intrusion Detected!");
digitalWrite(led, HIGH);
digitalWrite(buzzer, HIGH);
Blynk.virtualWrite(V1, 1); // Turn on virtual LED in Blynk
} else {
digitalWrite(led, LOW);
digitalWrite(buzzer, LOW);
Blynk.virtualWrite(V1, 0); // Turn off virtual LED in Blynk
}
}
void setup() {
Serial.begin(9600);
pinMode(pir, INPUT);
pinMode(sound, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, checkSensors); // Call every 2 seconds
}
void loop() {
Blynk.run();
timer.run();
}