From 8cbe75f0047732c865f58e2f847a5ffafe066e71 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 20 Dec 2025 11:25:26 +0800 Subject: Change projects to poc and blog to log. --- _site/projects/fpm-door-lock/breadboard.jpg | Bin 46771 -> 0 bytes _site/projects/fpm-door-lock/footprint.png | Bin 198127 -> 0 bytes _site/projects/fpm-door-lock/gerber.zip | Bin 89431 -> 0 bytes _site/projects/fpm-door-lock/index.html | 168 ---------------------------- _site/projects/fpm-door-lock/pcb.jpg | Bin 68237 -> 0 bytes _site/projects/fpm-door-lock/pcb1.jpg | Bin 37068 -> 0 bytes _site/projects/fpm-door-lock/source.tar.gz | Bin 29473 -> 0 bytes _site/projects/fpm-door-lock/thumb_sm.jpg | Bin 18380 -> 0 bytes _site/projects/fpm-door-lock/video.mp4 | Bin 13264594 -> 0 bytes 9 files changed, 168 deletions(-) delete mode 100644 _site/projects/fpm-door-lock/breadboard.jpg delete mode 100644 _site/projects/fpm-door-lock/footprint.png delete mode 100644 _site/projects/fpm-door-lock/gerber.zip delete mode 100644 _site/projects/fpm-door-lock/index.html delete mode 100644 _site/projects/fpm-door-lock/pcb.jpg delete mode 100644 _site/projects/fpm-door-lock/pcb1.jpg delete mode 100644 _site/projects/fpm-door-lock/source.tar.gz delete mode 100644 _site/projects/fpm-door-lock/thumb_sm.jpg delete mode 100644 _site/projects/fpm-door-lock/video.mp4 (limited to '_site/projects/fpm-door-lock') diff --git a/_site/projects/fpm-door-lock/breadboard.jpg b/_site/projects/fpm-door-lock/breadboard.jpg deleted file mode 100644 index 2bf47a9..0000000 Binary files a/_site/projects/fpm-door-lock/breadboard.jpg and /dev/null differ diff --git a/_site/projects/fpm-door-lock/footprint.png b/_site/projects/fpm-door-lock/footprint.png deleted file mode 100644 index 5511bf1..0000000 Binary files a/_site/projects/fpm-door-lock/footprint.png and /dev/null differ diff --git a/_site/projects/fpm-door-lock/gerber.zip b/_site/projects/fpm-door-lock/gerber.zip deleted file mode 100644 index 19a9d19..0000000 Binary files a/_site/projects/fpm-door-lock/gerber.zip and /dev/null differ diff --git a/_site/projects/fpm-door-lock/index.html b/_site/projects/fpm-door-lock/index.html deleted file mode 100644 index 6256026..0000000 --- a/_site/projects/fpm-door-lock/index.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - Fingerprint door lock - - - - - Fingerprint door lock - - - - - - - - - - - - - -
-
-
-

FINGERPRINT DOOR LOCK

-
03 OCTOBER 2025
-
-

This project features a fingerprint door lock powered by an ATmega328P -microcontroller.

- - - -

Overview

- -

The lock comprises three subsystems: the ATmega328P microcontroller, 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.8mA and 4.6mA 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, 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 microcontroller’s sleep modes, 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 PCB

- -

For this project, I designed a custom PCB and had it fabricated by JLCPCB. Like -the software, the circuit is primarily concerned with optimizing power -consumption and extending battery life.

- - - - - - - - - -
- PCB - - Design -
- PCB footprint -
- -

Consequently, the principal components of the circuit are the 2N7000 and -NDP6020P field-effect transistors. They switch power electronically to the -servo and the fingerprint sensor, the two most power-hungry parts of the -circuit. The two MP1584EN buck converters play an axial role in efficiently -regulating power to the MCU and the sensor.

- -

The ATmega328P typically operates at 5V with a 16MHz crystal oscillator. To -further reduce power consumption, I modified the ATmega328P’s fuses to run at -3.3V with an 8MHz crystal oscillator.

- -

The bottom right area of the PCB isolates the power supply of the servo from -the rest of the circuit. This shields components such as the MCU from the -servo’s high current draw, which can exceed 1A. The IN4007 diode in slot U2 -serves as a flyback diode, protecting the MOSFET from reverse currents -generated by the servo.

- -

Lastly, the 56kΩ and 10kΩ resistors in slots R10 and R11 form a voltage divider -circuit. Its output is fed to the ADC of the MCU, which measures the supply -voltage by comparing it to the internal bandgap reference voltage.

- -

Epilogue

- -

This project began nearly a year ago when I attempted to unlock our door -wirelessly by writing to the UART ports of two MCUs connected to inexpensive -433MHz RF transceivers. Although I failed, it led me down a rabbit hole of RF -communications, MOSFETs, PCB design, and low-power circuits.

- -

During the project, I reinvented the wheel many times. I implemented a -low-level network stack using only RF modules and an 8-bit microcontroller, -designed my first PCB, and developed drivers from scratch. The project was far -from a smooth sail. Bad electrical connections, soldering, desoldering, and the -heartache of purchasing the wrong parts were routine. It was a long but -rewarding journey from the messy breadboard to the shiny PCB.

- -

Files: source.tar.gz, gerber.zip

-
- -
-
-
- - - - - - diff --git a/_site/projects/fpm-door-lock/pcb.jpg b/_site/projects/fpm-door-lock/pcb.jpg deleted file mode 100644 index fbd800b..0000000 Binary files a/_site/projects/fpm-door-lock/pcb.jpg and /dev/null differ diff --git a/_site/projects/fpm-door-lock/pcb1.jpg b/_site/projects/fpm-door-lock/pcb1.jpg deleted file mode 100644 index 367187d..0000000 Binary files a/_site/projects/fpm-door-lock/pcb1.jpg and /dev/null differ diff --git a/_site/projects/fpm-door-lock/source.tar.gz b/_site/projects/fpm-door-lock/source.tar.gz deleted file mode 100644 index ef23422..0000000 Binary files a/_site/projects/fpm-door-lock/source.tar.gz and /dev/null differ diff --git a/_site/projects/fpm-door-lock/thumb_sm.jpg b/_site/projects/fpm-door-lock/thumb_sm.jpg deleted file mode 100644 index a8fa534..0000000 Binary files a/_site/projects/fpm-door-lock/thumb_sm.jpg and /dev/null differ diff --git a/_site/projects/fpm-door-lock/video.mp4 b/_site/projects/fpm-door-lock/video.mp4 deleted file mode 100644 index a907a9b..0000000 Binary files a/_site/projects/fpm-door-lock/video.mp4 and /dev/null differ -- cgit v1.2.3