#define BLYNK_TEMPLATE_ID "TMPL5CR-QR2Hx"
#define BLYNK_TEMPLATE_NAME "SuspiciousDetector"
#define BLYNK_AUTH_TOKEN "_PPpoPtP5tUOMRVRYoBS9ClLpMMGNp36"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
int pirPin = 27;
int ledPin = 13;
int buzzerPin = 14;
unsigned long motionStart = 0;
int motionCount = 0;
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Blynk.virtualWrite(V0, "System Online");
Serial.println("Suspicious Activity Detector Started");
}
void loop() {
Blynk.run();
int pirValue = digitalRead(pirPin);
if (pirValue == HIGH) {
digitalWrite(ledPin, HIGH);
if (motionStart == 0) {
motionStart = millis();
motionCount++;
}
} else {
digitalWrite(ledPin, LOW);
motionStart = 0;
}
if (motionStart != 0 && millis() - motionStart > 4000) {
triggerAnomaly("Long continuous motion detected");
}
static unsigned long lastReset = millis();
if (millis() - lastReset > 10000) {
motionCount = 0;
lastReset = millis();
} else if (motionCount > 3) {
triggerAnomaly("Rapid repeated motion");
}
}
void triggerAnomaly(String reason) {
Serial.println("ANOMALY: " + reason);
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, HIGH);
delay(300);
digitalWrite(buzzerPin, LOW);
Blynk.virtualWrite(V1, 1);
Blynk.logEvent("anomaly_alert", reason);
Blynk.virtualWrite(V0, reason);
delay(1000);
}