G2: Guest Residency OTP System - shalan/CSCE4301-WiKi GitHub Wiki

Link to repo: https://github.com/AbdelrahmanSaidd/SmartOTPDoorLock

Authors

Name ID
Abdelrahman Said 900192935
Ali Khattab 900191895
Mohammed Farag 900193654
Renad ElKady 900191378

Proposal

Our proposed project aims to solve the problem of security and convenience in traditional home lock systems. Traditional systems often require physical keys that can be lost or duplicated. Other systems may have one set passcode, which can be easily forgotten. Our smart lock system with OTP functionality solves this problem by allowing owners to set their own digital passwords and change them whenever they so please. Moreover, they can grant access to guests through a one-time password that works only during a specific time frame, ensuring security and convenience. The system also has the option of generating a random passcode and sending it to the owner every set period of time. Additionally, the system has a feature of taking a picture if someone entered the password more than a set number of times and sending it to the owner. Our proposed solution provides a reliable and user-friendly alternative to traditional lock systems.

Components

System Components
STM32 Nucleo-32: STM32L432KC
USB
Wires
Keypad
Buzzer
LCD
Servo Motor
Zener Diode

System Component-Diagram

components

Flowchart

flowchart

Connections

image WhatsApp Image 2023-05-29 at 9 46 33 AM WhatsApp Image 2023-05-29 at 9 46 33 AM (2) WhatsApp Image 2023-05-29 at 9 46 33 AM (1)

  • LCD: Connected to I2C1
  • Bluetooth module: Connected to UART2
  • Alarm: Connected to PB0 GPIO output pin
  • Servo Motor: Connected to TIM1_CH1 PWM signal (PA8)
  • Keypad: Uses PA12,PA11,PA0,PA4 as inputs and PA5,PA6,PA7,PA1 as outputs

Demo

We simulated the project's features in the following demo.

The test cases are as follows:

  1. Enter the master password (#12345)
  2. Generate a password
  3. Enter password (unlock)
  4. Enter password again (buzzer - password expired)
  5. Generate two passwords
  6. Enter the first password (unlock)
  7. Enter the first password again (buzzer - password expired)
  8. Enter the second password (unlock)
  9. Enter the second password again (buzzer - password expired)
  10. Enter incorrect password.

https://github.com/shalan/CSCE4301-WiKi/assets/64090007/8c91b349-8259-4ccd-81e5-50d0ed3ea058

Missing features: Implementing TTL to expire passwords after certain period.