Tech Gyan Set
Published © MIT

IoT Smart Door Lock (Mobile Controlled)

An IoT-based smart door lock that lets you securely lock and unlock your door directly from your mobile phone. πŸ”πŸ“±

BeginnerFull instructions provided8 hours170
IoT Smart Door Lock (Mobile Controlled)

Things used in this project

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

Complete ESP32 Code

C/C++
#include <WiFi.h>
#include <ESP32Servo.h>
#include <WebServer.h>

// WiFi Credentials
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";

// Create Web Server
WebServer server(80);

// Servo Pin
#define SERVO_PIN 18

// Door Sensor Pin
#define DOOR_SENSOR 4

Servo lockServo;

// Lock Positions
int lockPos = 0;
int unlockPos = 90;

String doorState = "Locked";


// ----------------------
// Lock Door Function
// ----------------------
void lockDoor() {
  lockServo.write(lockPos);
  doorState = "Locked";
  server.send(200, "text/plain", "Door Locked");
}


// ----------------------
// Unlock Door Function
// ----------------------
void unlockDoor() {
  lockServo.write(unlockPos);
  doorState = "Unlocked";
  server.send(200, "text/plain", "Door Unlocked");
}


// ----------------------
// Status Function
// ----------------------
void getStatus() {

  int sensor = digitalRead(DOOR_SENSOR);

  String status = "Door: " + doorState;

  if(sensor == LOW) {
    status += " (Closed)";
  } else {
    status += " (Open)";
  }

  server.send(200, "text/plain", status);
}


// ----------------------
// Setup
// ----------------------
void setup() {

  Serial.begin(115200);

  pinMode(DOOR_SENSOR, INPUT_PULLUP);

  lockServo.attach(SERVO_PIN);
  lockServo.write(lockPos);

  WiFi.begin(ssid, password);

  Serial.println("Connecting to WiFi...");

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi Connected");
  Serial.println(WiFi.localIP());


  // API Routes
  server.on("/lock", lockDoor);
  server.on("/unlock", unlockDoor);
  server.on("/status", getStatus);

  server.begin();
}


// ----------------------
// Main Loop
// ----------------------
void loop() {

  server.handleClient();

}

Credits

Tech Gyan Set
32 projects β€’ 14 followers
Tech Gyan Set | IoT & Embedded Systems Creator | Arduino, ESP32, GSM & NodeMCU Projects | Smart Home & Real-Life Automation Tutorials
Thanks to Tech Gyan Set .

Comments