summaryrefslogtreecommitdiffstats
path: root/_site/log/fpm-door-lock/index.html
diff options
context:
space:
mode:
Diffstat (limited to '_site/log/fpm-door-lock/index.html')
-rw-r--r--_site/log/fpm-door-lock/index.html168
1 files changed, 168 insertions, 0 deletions
diff --git a/_site/log/fpm-door-lock/index.html b/_site/log/fpm-door-lock/index.html
new file mode 100644
index 0000000..1460053
--- /dev/null
+++ b/_site/log/fpm-door-lock/index.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>Fingerprint door lock</title>
+
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Fingerprint door lock</title>
+ <link rel="stylesheet" href="/assets/css/main.css">
+ <link rel="stylesheet" href="/assets/css/skeleton.css">
+</head>
+
+
+
+ </head>
+ <body>
+
+ <div id="nav-container" class="container">
+ <ul id="navlist" class="left">
+
+ <li >
+ <a href="/" class="link-decor-none">hme</a>
+ </li>
+ <li class="active">
+ <a href="/log/" class="link-decor-none">log</a>
+ </li>
+ <li >
+ <a href="/projects/" class="link-decor-none">poc</a>
+ </li>
+ <li >
+ <a href="/about/" class="link-decor-none">abt</a>
+ </li>
+ <li><a href="/feed.xml" class="link-decor-none">rss</a></li>
+ </ul>
+</div>
+
+
+
+ <main>
+ <div class="container">
+ <div class="container-2">
+ <h2 class="center" id="title">FINGERPRINT DOOR LOCK</h2>
+ <h6 class="center">18 AUGUST 2025</h5>
+ <br>
+ <div class="twocol justify"><p>This project features a fingerprint door lock powered by an ATmega328P
+microcontroller.</p>
+
+<video style="max-width:100%;" controls="" poster="pcb.jpg">
+ <source src="video.mp4" type="video/mp4" />
+</video>
+
+<h2 id="overview">Overview</h2>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<h2 id="embedded-software">Embedded software</h2>
+
+<p>The embedded software, written in C, includes a driver for the sensor, servo
+control routines, and a battery monitoring system.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<h2 id="the-pcb">The PCB</h2>
+
+<p>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.</p>
+
+<table style="border: none; width: 100%">
+ <tr style="border: none;">
+ <td style="border: none; width: 49.9%; background-color: transparent; text-align: center;">
+ <img src="breadboard.jpg" alt="PCB" style="width: 100%" />
+ </td>
+ <td style="border: none; background-color: transparent; text-align: center;">
+ <img src="pcb1.jpg" alt="Design" style="width: 100%" />
+ </td>
+ </tr>
+ <tr style="border: none;">
+ <td colspan="2" style="border: none; background-color: transparent; text-align: center;">
+ <img src="footprint.png" alt="PCB footprint" style="width: 100%" />
+ </td>
+ </tr>
+</table>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<h2 id="epilogue">Epilogue</h2>
+
+<p>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.</p>
+
+<p>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 and 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.</p>
+
+<p>Files: <a href="source.tar.gz">source.tar.gz</a>, <a href="gerber.zip">gerber.zip</a></p>
+</div>
+ <p class="post-author right">by W. D. Sadeep Madurange</p>
+ </div>
+ </div>
+ </main>
+
+ <div class="footer">
+ <div class="container">
+ <div class="twelve columns right container-2">
+ <p id="footer-text">&copy; ASCIIMX - 2025</p>
+ </div>
+ </div>
+</div>
+
+
+ </body>
+</html>