Facial Recognition Door Lock

& Fire Safety



Overview

For our project, we propose making a door lock security and fire safety system that utilizes facial recognition for keyless unlocking using the STM32L476 processor and Arduino UNO R3 board. The door will unlock when a face is detected with the camera, and the door will also automatically unlock if the temperature in the room is too high (indicating that a fire has started).



Demo Video

Software Design

The system will consist of two components: a desktop application, and the hardware component built with the STM32L476 processor. The system will work as follows. First, the user will push a button, prompting the camera to begin sending video feed via bluetooth to the desktop application. The application will then run facial recognition software on the video feed against a list of approved individuals that are set in the desktop application. If an authorized person is detected, a green LED will light up and the door will unlock for 10 seconds, after which, the LED will shut off, the door will lock again, and the camera will stop collecting video. If an authorized person is not detected, the green LED will quickly flash thrice, the door will remain locked, and the camera will stop collecting video. Pressing the button again will restart this process.


Peripherals & Protocols

  • Servo Motor (to function as locking mechanism)

  • TC74 Temperature Sensor

    • I2C

  • ArduCam 2MP Camera (to collect and send video feed to desktop application)

    • SPI and I2C

  • HC-15 Bluetooth Module (to communicate with desktop application)

    • UART

  • Green LED (built in) (to indicate status of authentication)


Goals

  1. Camera will send 2 seconds of video to desktop application via bluetooth

  2. Desktop application will transmit facial recognition results to STM32L476 via bluetooth

  3. LED will flash one long flash or three quick flashes according to result

  4. Servo motor will lock or unlock depending on result


Group Responsibilities

Neil is responsible for programming the desktop application, setting up the ArduCam, and helping to program bluetooth communication with the STM32L476 processor. Kevin is responsible for programming the behavior of the servo motor and LED lights, and helping to program bluetooth communication with the STM32L476 processor.