#define BLYNK_TEMPLATE_ID "TMPL5Cg9KrSVg"
#define BLYNK_TEMPLATE_NAME "IoTBasedHomeSecSystem"
#define BLYNK_AUTH_TOKEN "ijJMbeqwiSUNXwHguitqMJMuBGUWg61e"
#include <ESP32Servo.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
const int BUZZER_PIN = 27;
const int LED_PIN = 14;
const int MOTION_PIN = 25;
const int SERVO_PIN = 18;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
int pos = 0;
bool isLocked = true;
LiquidCrystal_I2C mylcd(0x27, 16, 2);
BlynkTimer timer;
Servo servo;
void setup() {
Serial.begin(115200);
Blynk.begin(auth,ssid,pass);
pinMode(LED_PIN, OUTPUT);
pinMode(MOTION_PIN, INPUT);
mylcd.init();
mylcd.backlight();
servo.attach(SERVO_PIN, 500, 2400);
timer.setInterval(3000L, sendSensor);
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensor() {
int pinState = digitalRead(MOTION_PIN);
mylcd.clear();
if (pinState == HIGH) {
mylcd.setCursor(0, 0);
mylcd.print("Motion detected");
tone(BUZZER_PIN, 100, 100);
Blynk.virtualWrite(V0, 1);
Serial.println("MOTION DETECTED");
if (isLocked) {
lock(false);
isLocked = false;
}
} else {
noTone(BUZZER_PIN);
Blynk.virtualWrite(V0, 0);
Serial.println("NO MOTION");
if (!isLocked) {
lock(true);
isLocked = true;
}
}
digitalWrite(LED_PIN, pinState);
}
void lock(bool isLocked) {
Serial.println(isLocked ? "LOCK" : "UNLOCK");
Serial.println("-----");
if (isLocked) {
servo.write(90);
delay(300);
} else {
for (pos = 90; pos >= 0; pos -= 1) {
servo.write(pos);
delay(15);
}
}
}