Biometric Doorlock System
Unlock your door using a linear actuator and your fingerprint!
By Rishikesh Nayar
rishinayar@berkeley.edu
Overview
My project is a biometric doorlock system that can unlock my apartment door with just my fingerprint!
Description
Unfortunately, my apartment door can be a pain to open with keys. The door isn't flush and the key gets stuck in the keyhole a lot of the time. This project aims to eliminate this problem and make something as mundane as opening a door more fun!
Using 2 PCBs (one on the outside of the door and another on the inside), detects a fingerprint and compares it to a existing database of approved users. If there is a match, unlocks the door by signaling the linear actuator.
I use various peripherals to prompt the user for a fingerprint and to display feedback regarding whether a match was found or not. Additionally, various buttons allow the user to enroll and delete fingerprints from the database (provided the user is authorized to do so).
Features
Front-End PCB - Sensing and User Feedback:
Capacitive fingerprint sensor to read fingerprints
ESP-32-S2-SOLO-N4 to compare to the database
LCD display to display whether the verification was successful or not. If there is a match, the ESP sends a signal wirelessly to another ESP, which signals my linear actuator to pull a string connected to my door's deadbolt, unlocking it.
MAX98357 amplifier and speakers for audio feedback
Back-End PCB - Motor Control:
ESP-32-S2-SOLO-N4 to receive wireless signal from other ESP and signal the actuator
12VDC linear actuator to turn deadbolt
Design Process
Code and Prototyping
To get started, I used a breadboard with an Arduino to test my code and make sure I can control the LCD display and capacitive touch sensor.
I first wrote out the pseudocode and basic circuit design on a piece of paper:
Here is a successful test of the sensor code on a breadboard! I test an enrolled fingerprint (my thumb) and a unregistered finger (my index finger).
PCB Design
Now, it's time to design the PCBs. I have two PCBs, so I create schematics and layouts for each. To help with the schematic, I first sketched out the various components that should go on each PCB. To help with the layout, I wrote out my mechanical and physical constraints, and started to sketch out roughly where each component must go to satisfy these constraints.
To deal with the challenge of routing, I primarily used Manhattan routing (vertical traces on bottom copper layer, horizontal traces on top copper layer). I also adjusted trace sizes appropriately to both save space and meet power requirements.
Here are the schematics and layouts!
Front-End PCB (Sensing)
Back-End PCB (Motor Control)
Bringup
After receiving the boards, it was time to solder. I used multiple different methods, including hand-soldering for larger components and components with reasonably-sized pads, and stenciling/ereflow and solder paste for tiny ICs and pads.
Next Steps and Improvements
Port over code from Arduino to ESP to run through the boards.
Expand code to utilize DAC and output audio feedback.
Redesign motor control PCB so that it can be powered free of USB connection.