#define BLYNK_TEMPLATE_ID "TMPL5R8o4ptO9"
#define BLYNK_TEMPLATE_NAME "Smart Motion Detection Door Lock System"
#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define MOTION_SENSOR_PIN 25
#define SERVO_MOTOR_PIN 14
bool isMotionDetected = false;
bool isDoorLocked = true;
Servo doorServo;
LiquidCrystal_I2C lcdDisplay = LiquidCrystal_I2C(0x27, 16, 2);
// Blynk credentials
char auth[] = "YourAuthToken"; // replace with your Blynk Auth Token
char ssid[] = "YourNetworkName"; // replace with your WiFi SSID
char pass[] = "YourPassword"; // replace with your WiFi Password
void setup() {
Serial.begin(115200);
Serial.println("Initializing ESP32...");
pinMode(MOTION_SENSOR_PIN, INPUT);
doorServo.attach(SERVO_MOTOR_PIN);
doorServo.write(0);
lcdDisplay.init();
lcdDisplay.backlight();
lcdDisplay.setCursor(0, 0);
lcdDisplay.print("Smart Door Lock");
// Blynk initialization
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run(); // Run Blynk
isMotionDetected = digitalRead(MOTION_SENSOR_PIN);
if (isMotionDetected) {
if(isDoorLocked){
unlockDoor();
} else {
lockDoor();
}
}
delay(200);
}
void unlockDoor() {
isDoorLocked = false;
lcdDisplay.clear();
lcdDisplay.setCursor(0, 0);
lcdDisplay.print("Motion Detected");
lcdDisplay.setCursor(0, 1);
lcdDisplay.print("Door locked");
doorServo.write(90);
delay(5000);
isDoorLocked = true;
lockDoor();
}
void lockDoor() {
doorServo.write(0);
lcdDisplay.clear();
lcdDisplay.setCursor(0, 0);
lcdDisplay.print("Door unlocked");
}