--- title: Fingerprint door lock date: 2025-10-03 author: W. D. Sadeep Madurange thumbnail: pcb.jpg layout: post --- This project features a fingerprint door lock powered by an ATmega328P microcontroller. ## Overview The lock comprises three subsystems: the ATmega328P, an R503 fingerprint sensor, and an FS5106B high-torque servo. The sensor mounted on the front surface of the door enables users to unlock it from the outside. The servo is attached to the interior door knob. The MCU must be installed at the back of the door to prevent unauthorized users from tampering with it. When no one is interacting with the lock, the MCU is in deep sleep. The sensor and the servo each draw 13.8 mA and 4.6 mA of quiescent currents. To prevent this idle current draw, the MCU employs MOSFETs to cut off power to them before entering deep sleep. Doing so is crucial for conserving the battery. Without power, the sensor remains in a low-power state, drawing approximately 2.9 μA through a separate power rail. When a finger comes into contact with the sensor, the sensor triggers a pin change interrupt, waking up the MCU. The MCU activates a MOSFET, which in turn activates the sensor. Over UART, the MCU unlocks the sensor and issues commands to scan and match the fingerprint. If the fingerprint matches an enrolled fingerprint, the MCU activates the blue LED on the sensor, turns on the MOSFET connected to the servo, and sends a PWM signal to the servo to unlock the door. Otherwise, the MCU activates the red LED on the sensor. Finally, the MCU deactivates the MOSFETS and goes back to sleep. ## Embedded software The embedded software, written in C with the help of the AVR toolchain, includes a driver for the sensor, servo control routines, and a battery monitoring system. In addition to controlling the sensor and the servo, the program strives to maintain precise control over the sleep mode, as well as when the peripherals are activated and for how long they remain active. I thoroughly enjoyed writing the embedded software. There's something magical about being able to alter the physical world around you by uttering a few lines of C code. The source code of the project, which includes a driver for the R503 fingerprint sensor module, is enclosed in the tarball linked at the end of the page. ## The circuit board For this project, I designed a custom PCB and had it fabricated by JLCPCB. Like the software, the circuit is chiefly concerned with optimizing power consumption and extending battery life.
|
|
|
|