#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define PIR_PIN 14
#define BUZZER_PIN 15
#define LED1_PIN 12
#define LED2_PIN 13
int pirValue = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define BLYNK_TEMPLATE_ID "TMPL66-Fpi5gf"
#define BLYNK_TEMPLATE_NAME "Motion Detector"
#define BLYNK_AUTH_TOKEN "U_QqIzGowuqtnBjj9gDQ_zbO52TCXw8p"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(2000L, blynk);
lcd.init();
lcd.backlight();
pinMode(PIR_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Motion Alarm");
lcd.setCursor(0, 1);
lcd.print("System Ready");
delay(2000); // Wait for 2 seconds
// Clear the display
lcd.clear();
}
void blynk() {
}
void loop() {
int pirValue = digitalRead(PIR_PIN);
if (pirValue == HIGH) {
lcd.setCursor(0, 0);
digitalWrite(BUZZER_PIN, HIGH); // Activate the buzzer
tone(BUZZER_PIN, 1000);
Blynk.logEvent("motion_");
for (int i = 0; i < 4; i++) {
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, LOW);
delay(1000);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, HIGH);
delay(1000);
}
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
delay(500);
lcd.clear();
} else {
lcd.setCursor(0, 0);
lcd.print("No Motion");
digitalWrite(BUZZER_PIN, LOW); // Deactivate the buzzer
tone(BUZZER_PIN, 0);
digitalWrite(LED1_PIN, LOW); // Turn off LEDs
digitalWrite(LED2_PIN, LOW); // Turn off LEDs
}
Blynk.run();
timer.run();
delay(2000); // Adjust the delay for your specific needs
}