blob: 2643c2d86a2906bab57b9af14321357ed5afdaef (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
---
title: Fingerprint door lock (RF)
date: 2025-06-05
layout: post
---
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. A complete ball-ache. Followed the
datasheet to the letter, audited code more than 30 times, cross-checked with
RadioHead and RFM69 OSS drivers. No luck. ATmega328P runs at 5V, RFM69 3.3V. I
suspect the problem is with the logic-level converter (LLC). Not enough swing.
2025-04: Ditched RFM69s. Switched to NRF24L01+ modules--5V tolerant, no LLC
required. Spent six weekends writing driver from scratch--clean-room, using
datasheet. Works perfectly.
2025-05: Wrote FPM sensor drivers for R503 and FPM10A. UART RX sequence was
tricky--took multiple attempts to get handshake working. R503 has built-in LEDs
and better form factor--will use it for the lock.
2025-06: First PCB design. Two boards: fingerprint sensor (front), servo
controller (back). Encrypted RF link between them.
<table style="border: none; width: 100%">
<tr style="border: none;">
<td style="border: none; width: 49.5%; vertical-align: top; text-align: center;">
<img src="front_design.jpeg" alt="Design (front)" style="width: 100%">
<p>Footprint (front)</p>
</td>
<td style="border: none; vertical-align: top; text-align: center;">
<img src="front.jpeg" alt="PCB (front)" style="width: 100%">
<p>PCB (front)</p>
</td>
</tr>
<tr style="border: none;">
<td style="border: none; width: 49.5%; vertical-align: top; text-align: center;">
<img src="back_design.jpeg" alt="Design (back)" style="width: 100%">
<p>Footprint (back)</p>
</td>
<td style="border: none; vertical-align: top; text-align: center;">
<img src="back.jpeg" alt="PCB (back)" style="width: 100%">
<p>PCB (back)</p>
</td>
</tr>
</table>
PCB specs: 2-layer, 1oz copper, 0.3mm traces (0.5mm for power). Ground plane.
Both subsystems worked—could control servo from sensor over RF.
Power problems became clear. Linear regulators dissipated too much heat. Sensor
and servo drew 13.8mA and 4.6mA quiescent—unacceptable for battery. Servo
inrush current can exceed 1A. Trace width (0.3mm), especially for servo and
power, cutting it close.
Verdict: Functional but not practical. Battery dead in under 24 hours. Led to
[complete redesign](../fpm-door-lock-lp/) with proper power management.
Commit:
[f4b0b73](https://git.asciimx.com/smart-home/commit/?id=f4b0b734a595919cf451ab9448b06274c8e609a4)
| Gerber: [gerber_back.zip](gerber_back.zip),
[gerber_front.zip](gerber_front.zip)
|