--- title: Fingerprint door lock (RF) date: 2025-06-05 layout: post project: true thumbnail: thumb_sm.jpeg --- Wanted to unlock door with fingerprint, wirelessly to avoid drilling. 2024-11: Started with basic 433MHz RF modules and two Arduinos. Connected data lines of the transceivers to UART RXD/TXD of an ATmega328P. Unreliable--constant packet loss. 2025-01: Switched to RFM69 modules. Complete ball-ache. Followed datasheet to the letter, audited code many times, cross-checked with RadioHead and RFM69 open-source drivers. No luck. Datasheet riddled with ambiguity. ATmega328P runs at 5V; RFM69 3.3V. Suspect logic-level converter (LLC) issues. High resistance. Not enough swing. 2025-04: Ditched RFM69s. Switched to NRF24L01+ modules-- data pins 5V tolerant, no LLC required. Spent six weekends writing driver from scratch--clean-room. Works like a charm. 2025-05: Wrote FPM drivers for R503 and FPM10A. UART RX sequence was tricky--adopted Adafruit C++ FOSS implementation to C. R503 has built-in LEDs and better form factor. Chose it for the lock. 2025-06: Two PCB boards for FPM (front) and servo (back) controllers. Encrypted RF link between them.
Footprint (front) |
PCB (front) |
Footprint (back) |
PCB (back) |