summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_log/fpm-door-lock-rf.md69
-rw-r--r--_site/feed.xml2
-rw-r--r--_site/index.html2
-rw-r--r--_site/log/fpm-door-lock-rf/index.html69
-rw-r--r--_site/log/index.html2
-rw-r--r--_site/posts.xml2
-rw-r--r--_site/sitemap.xml2
7 files changed, 77 insertions, 71 deletions
diff --git a/_log/fpm-door-lock-rf.md b/_log/fpm-door-lock-rf.md
index b677591..2643c2d 100644
--- a/_log/fpm-door-lock-rf.md
+++ b/_log/fpm-door-lock-rf.md
@@ -1,18 +1,30 @@
---
title: Fingerprint door lock (RF)
-date: 2025-04-26
+date: 2025-06-05
layout: post
---
-In 2023, I started tinkering with DIY electronics as a hobby. Until now, I've
-been using development boards like the Arduino Uno and ESP-32-WROOM so that I
-can focus on the software. Recently, I decided to step outside of my comfort
-zone and design a PCB from scratch for a door lock I'm working on.
+Wanted to unlock door with fingerprint, wirelessly to avoid drilling.
-The lock comprises two subsystems: a fingerprint sensor in front of the door
-and a servo connected to the physical lock behind the door. The fingerprint
-sensor authenticates the person and signals the servo behind the door to unlock
-the door over an encrypted RF channel.
+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;">
@@ -37,27 +49,18 @@ the door over an encrypted RF channel.
</tr>
</table>
-The PCBs have two layers. A copper region serves as the ground plane. The 0.3mm
-wide 1oz/ft<sup>2</sup> copper traces can carry up to 500mA (the tracks
-connecting the power source and the linear regulators have a width of 0.5mm).
-Both subsystems were functional. I was able to control the servo reliably using
-the fingerprint sensor.
-
-The designs aren't without flaws, however. The main shortcoming of the circuits
-is that they draw significant amounts of quiescent currents despite employing
-sleep modes. The linear regulators were a poor choice as they dissipate too
-much heat. The fingerprint sensor and the servo draw 13.8mA (3.3V) and 4.6mA
-(5V) respectively, as long as they are connected to the power supply.
-
-Although the circuit didn't draw more than 200mA without a load, the servo
-under load could draw up to 600mA. I'm sailing too close to the wind with 0.3mm
-copper traces. Instead, 0.4mm wide 2oz/ft<sup>2</sup> traces would have been
-safer.
-
-I'm working on improving the design to reduce idle current consumption and
-extend the battery life. Despite its deficiencies, this was my first PCB
-design, and I'm glad that it worked as well as it did. Custom PCB design marks
-an important milestone in my DIY electronics journey.
-
-Files: [gerber_back.zip](gerber_back.zip), [gerber_front.zip](gerber_front.zip),
- [source.tar.gz](source.tar.gz)
+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)
diff --git a/_site/feed.xml b/_site/feed.xml
index c57a03e..77029b1 100644
--- a/_site/feed.xml
+++ b/_site/feed.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2025-12-26T21:43:25+08:00</updated><id>/feed.xml</id><title type="html">ASCIIMX | Log</title><author><name>W. D. Sadeep Madurange</name></author><entry><title type="html">Matrix Rain: 2025 refactor</title><link href="/log/matrix-digital-rain/" rel="alternate" type="text/html" title="Matrix Rain: 2025 refactor" /><published>2025-12-21T00:00:00+08:00</published><updated>2025-12-21T00:00:00+08:00</updated><id>/log/matrix-digital-rain</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[The 2022 version worked but had some loose ends. Unicode support was inflexible–couldn’t mix ASCII with Katakana; Phosphor decay was stored in a separate array when it should’ve been packed with RGB; Code was harder to read than it needed to be.]]></summary></entry><entry><title type="html">Fingerprint door lock (LP)</title><link href="/log/fpm-door-lock-lp/" rel="alternate" type="text/html" title="Fingerprint door lock (LP)" /><published>2025-08-18T00:00:00+08:00</published><updated>2025-08-18T00:00:00+08:00</updated><id>/log/fpm-door-lock-lp</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Second iteration of the RF door lock. Old version worked but drew too much quiescent current. Sensor and servo pulled 13.8mA and 4.6mA idle. Linear regulators were a disaster. Battery didn’t last 24 hours.]]></summary></entry><entry><title type="html">On the use of MOSFETs as electronic switches</title><link href="/log/mosfet-switches/" rel="alternate" type="text/html" title="On the use of MOSFETs as electronic switches" /><published>2025-06-22T00:00:00+08:00</published><updated>2025-06-22T00:00:00+08:00</updated><id>/log/mosfet-switches</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Recently, I needed a low-power circuit for one of my battery-operated projects. Much of the system’s power savings depended on its ability to electronically switch off components, such as servos, that draw high levels of quiescent currents. My search for a solution led me to MOSFETs, transistors capable of controlling circuits operating at voltages far above their own.]]></summary></entry><entry><title type="html">How to configure ATmega328P microcontrollers to run at 3.3V and 5V</title><link href="/log/arduino-uno/" rel="alternate" type="text/html" title="How to configure ATmega328P microcontrollers to run at 3.3V and 5V" /><published>2025-06-10T00:00:00+08:00</published><updated>2025-06-10T00:00:00+08:00</updated><id>/log/arduino-uno</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[This is a quick reference for wiring up ATmega328P ICs to run at 5V and 3.3V. While the 5V configuration is common, the 3.3V configuration can be useful in low-power applications and when interfacing with parts that themselves run at 3.3V. In this guide, the 5V setup is configured with a 16MHz crystal oscillator, while the 3.3V configuration makes use of an 8MHz crystal oscillator.]]></summary></entry><entry><title type="html">Fingerprint door lock (RF)</title><link href="/log/fpm-door-lock-rf/" rel="alternate" type="text/html" title="Fingerprint door lock (RF)" /><published>2025-04-26T00:00:00+08:00</published><updated>2025-04-26T00:00:00+08:00</updated><id>/log/fpm-door-lock-rf</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[In 2023, I started tinkering with DIY electronics as a hobby. Until now, I’ve been using development boards like the Arduino Uno and ESP-32-WROOM so that I can focus on the software. Recently, I decided to step outside of my comfort zone and design a PCB from scratch for a door lock I’m working on.]]></summary></entry><entry><title type="html">Bumblebee: browser automation</title><link href="/log/bumblebee/" rel="alternate" type="text/html" title="Bumblebee: browser automation" /><published>2025-04-02T00:00:00+08:00</published><updated>2025-04-02T00:00:00+08:00</updated><id>/log/bumblebee</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Bumblebee is a tool I built for one of my employers to automate the generation of web scraping scripts.]]></summary></entry><entry><title type="html">How to set up ATSAM3X8E microcontrollers for bare-metal programming in C</title><link href="/log/arduino-due/" rel="alternate" type="text/html" title="How to set up ATSAM3X8E microcontrollers for bare-metal programming in C" /><published>2024-09-16T00:00:00+08:00</published><updated>2024-09-16T00:00:00+08:00</updated><id>/log/arduino-due</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[This article is a step-by-step guide for programming bare-metal ATSAM3X8E chips found on Arduino Due boards. It also includes notes on the chip’s memory layout relevant for writing linker scripts. The steps described in this article were tested on an OpenBSD workstation.]]></summary></entry><entry><title type="html">Etlas: e-paper dashboard</title><link href="/log/etlas/" rel="alternate" type="text/html" title="Etlas: e-paper dashboard" /><published>2024-09-05T00:00:00+08:00</published><updated>2024-09-05T00:00:00+08:00</updated><id>/log/etlas</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Etlas is a news, stock market, and weather tracker powered by an ESP32 NodeMCU D1, featuring a 7.5-inch Waveshare e-paper display and a DHT22 sensor module.]]></summary></entry><entry><title type="html">Experimental e-reader</title><link href="/log/e-reader/" rel="alternate" type="text/html" title="Experimental e-reader" /><published>2023-10-24T00:00:00+08:00</published><updated>2023-10-24T00:00:00+08:00</updated><id>/log/e-reader</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[This project features an experimental e-reader powered by an ESP-WROOM-32 development board and a 7.5-inch Waveshare e-paper display built with the intention of learning about e-paper displays.]]></summary></entry><entry><title type="html">Neo4J A* search</title><link href="/log/neo4j-a-star-search/" rel="alternate" type="text/html" title="Neo4J A* search" /><published>2018-03-06T00:00:00+08:00</published><updated>2018-03-06T00:00:00+08:00</updated><id>/log/neo4j-a-star-search</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Back in 2018, we used Neo4J graph database to track the movement of marine vessels. We were interested in the shortest path a ship could take through a network of about 13,000 route points. Graph theoretic algorithms provide optimal solutions to such problems, and the set of route points lends itself well to graph-based modelling.]]></summary></entry></feed> \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2025-12-27T11:18:53+08:00</updated><id>/feed.xml</id><title type="html">ASCIIMX | Log</title><author><name>W. D. Sadeep Madurange</name></author><entry><title type="html">Matrix Rain: 2025 refactor</title><link href="/log/matrix-digital-rain/" rel="alternate" type="text/html" title="Matrix Rain: 2025 refactor" /><published>2025-12-21T00:00:00+08:00</published><updated>2025-12-21T00:00:00+08:00</updated><id>/log/matrix-digital-rain</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[The 2022 version worked but had some loose ends. Unicode support was inflexible–couldn’t mix ASCII with Katakana; Phosphor decay was stored in a separate array when it should’ve been packed with RGB; Code was harder to read than it needed to be.]]></summary></entry><entry><title type="html">Fingerprint door lock (LP)</title><link href="/log/fpm-door-lock-lp/" rel="alternate" type="text/html" title="Fingerprint door lock (LP)" /><published>2025-08-18T00:00:00+08:00</published><updated>2025-08-18T00:00:00+08:00</updated><id>/log/fpm-door-lock-lp</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Second iteration of the RF door lock. Old version worked but drew too much quiescent current. Sensor and servo pulled 13.8mA and 4.6mA idle. Linear regulators were a disaster. Battery didn’t last 24 hours.]]></summary></entry><entry><title type="html">On the use of MOSFETs as electronic switches</title><link href="/log/mosfet-switches/" rel="alternate" type="text/html" title="On the use of MOSFETs as electronic switches" /><published>2025-06-22T00:00:00+08:00</published><updated>2025-06-22T00:00:00+08:00</updated><id>/log/mosfet-switches</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Recently, I needed a low-power circuit for one of my battery-operated projects. Much of the system’s power savings depended on its ability to electronically switch off components, such as servos, that draw high levels of quiescent currents. My search for a solution led me to MOSFETs, transistors capable of controlling circuits operating at voltages far above their own.]]></summary></entry><entry><title type="html">How to configure ATmega328P microcontrollers to run at 3.3V and 5V</title><link href="/log/arduino-uno/" rel="alternate" type="text/html" title="How to configure ATmega328P microcontrollers to run at 3.3V and 5V" /><published>2025-06-10T00:00:00+08:00</published><updated>2025-06-10T00:00:00+08:00</updated><id>/log/arduino-uno</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[This is a quick reference for wiring up ATmega328P ICs to run at 5V and 3.3V. While the 5V configuration is common, the 3.3V configuration can be useful in low-power applications and when interfacing with parts that themselves run at 3.3V. In this guide, the 5V setup is configured with a 16MHz crystal oscillator, while the 3.3V configuration makes use of an 8MHz crystal oscillator.]]></summary></entry><entry><title type="html">Fingerprint door lock (RF)</title><link href="/log/fpm-door-lock-rf/" rel="alternate" type="text/html" title="Fingerprint door lock (RF)" /><published>2025-06-05T00:00:00+08:00</published><updated>2025-06-05T00:00:00+08:00</updated><id>/log/fpm-door-lock-rf</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Wanted to unlock door with fingerprint, wirelessly to avoid drilling.]]></summary></entry><entry><title type="html">Bumblebee: browser automation</title><link href="/log/bumblebee/" rel="alternate" type="text/html" title="Bumblebee: browser automation" /><published>2025-04-02T00:00:00+08:00</published><updated>2025-04-02T00:00:00+08:00</updated><id>/log/bumblebee</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Bumblebee is a tool I built for one of my employers to automate the generation of web scraping scripts.]]></summary></entry><entry><title type="html">How to set up ATSAM3X8E microcontrollers for bare-metal programming in C</title><link href="/log/arduino-due/" rel="alternate" type="text/html" title="How to set up ATSAM3X8E microcontrollers for bare-metal programming in C" /><published>2024-09-16T00:00:00+08:00</published><updated>2024-09-16T00:00:00+08:00</updated><id>/log/arduino-due</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[This article is a step-by-step guide for programming bare-metal ATSAM3X8E chips found on Arduino Due boards. It also includes notes on the chip’s memory layout relevant for writing linker scripts. The steps described in this article were tested on an OpenBSD workstation.]]></summary></entry><entry><title type="html">Etlas: e-paper dashboard</title><link href="/log/etlas/" rel="alternate" type="text/html" title="Etlas: e-paper dashboard" /><published>2024-09-05T00:00:00+08:00</published><updated>2024-09-05T00:00:00+08:00</updated><id>/log/etlas</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Etlas is a news, stock market, and weather tracker powered by an ESP32 NodeMCU D1, featuring a 7.5-inch Waveshare e-paper display and a DHT22 sensor module.]]></summary></entry><entry><title type="html">Experimental e-reader</title><link href="/log/e-reader/" rel="alternate" type="text/html" title="Experimental e-reader" /><published>2023-10-24T00:00:00+08:00</published><updated>2023-10-24T00:00:00+08:00</updated><id>/log/e-reader</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[This project features an experimental e-reader powered by an ESP-WROOM-32 development board and a 7.5-inch Waveshare e-paper display built with the intention of learning about e-paper displays.]]></summary></entry><entry><title type="html">Neo4J A* search</title><link href="/log/neo4j-a-star-search/" rel="alternate" type="text/html" title="Neo4J A* search" /><published>2018-03-06T00:00:00+08:00</published><updated>2018-03-06T00:00:00+08:00</updated><id>/log/neo4j-a-star-search</id><author><name>W. D. Sadeep Madurange</name></author><summary type="html"><![CDATA[Back in 2018, we used Neo4J graph database to track the movement of marine vessels. We were interested in the shortest path a ship could take through a network of about 13,000 route points. Graph theoretic algorithms provide optimal solutions to such problems, and the set of route points lends itself well to graph-based modelling.]]></summary></entry></feed> \ No newline at end of file
diff --git a/_site/index.html b/_site/index.html
index 08d3663..2498bda 100644
--- a/_site/index.html
+++ b/_site/index.html
@@ -112,7 +112,7 @@
</td>
<td class="posts-td posts-td-time">
<span class="post-meta">
- <time datetime="2025-04-26 00:00:00 +0800">2025-04-26</time>
+ <time datetime="2025-06-05 00:00:00 +0800">2025-06-05</time>
</span>
</td>
</tr>
diff --git a/_site/log/fpm-door-lock-rf/index.html b/_site/log/fpm-door-lock-rf/index.html
index c12d808..e2da50a 100644
--- a/_site/log/fpm-door-lock-rf/index.html
+++ b/_site/log/fpm-door-lock-rf/index.html
@@ -42,17 +42,29 @@
<div class="container">
<div class="container-2">
<h2 class="center" id="title">FINGERPRINT DOOR LOCK (RF)</h2>
- <h6 class="center">26 APRIL 2025</h5>
+ <h6 class="center">05 JUNE 2025</h5>
<br>
- <div class="twocol justify"><p>In 2023, I started tinkering with DIY electronics as a hobby. Until now, I’ve
-been using development boards like the Arduino Uno and ESP-32-WROOM so that I
-can focus on the software. Recently, I decided to step outside of my comfort
-zone and design a PCB from scratch for a door lock I’m working on.</p>
+ <div class="twocol justify"><p>Wanted to unlock door with fingerprint, wirelessly to avoid drilling.</p>
-<p>The lock comprises two subsystems: a fingerprint sensor in front of the door
-and a servo connected to the physical lock behind the door. The fingerprint
-sensor authenticates the person and signals the servo behind the door to unlock
-the door over an encrypted RF channel.</p>
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>2025-06: First PCB design. Two boards: fingerprint sensor (front), servo
+controller (back). Encrypted RF link between them.</p>
<table style="border: none; width: 100%">
<tr style="border: none;">
@@ -77,30 +89,21 @@ the door over an encrypted RF channel.</p>
</tr>
</table>
-<p>The PCBs have two layers. A copper region serves as the ground plane. The 0.3mm
-wide 1oz/ft<sup>2</sup> copper traces can carry up to 500mA (the tracks
-connecting the power source and the linear regulators have a width of 0.5mm).
-Both subsystems were functional. I was able to control the servo reliably using
-the fingerprint sensor.</p>
-
-<p>The designs aren’t without flaws, however. The main shortcoming of the circuits
-is that they draw significant amounts of quiescent currents despite employing
-sleep modes. The linear regulators were a poor choice as they dissipate too
-much heat. The fingerprint sensor and the servo draw 13.8mA (3.3V) and 4.6mA
-(5V) respectively, as long as they are connected to the power supply.</p>
-
-<p>Although the circuit didn’t draw more than 200mA without a load, the servo
-under load could draw up to 600mA. I’m sailing too close to the wind with 0.3mm
-copper traces. Instead, 0.4mm wide 2oz/ft<sup>2</sup> traces would have been
-safer.</p>
-
-<p>I’m working on improving the design to reduce idle current consumption and
-extend the battery life. Despite its deficiencies, this was my first PCB
-design, and I’m glad that it worked as well as it did. Custom PCB design marks
-an important milestone in my DIY electronics journey.</p>
-
-<p>Files: <a href="gerber_back.zip">gerber_back.zip</a>, <a href="gerber_front.zip">gerber_front.zip</a>,
- <a href="source.tar.gz">source.tar.gz</a></p>
+<p>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.</p>
+
+<p>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.</p>
+
+<p>Verdict: Functional but not practical. Battery dead in under 24 hours. Led to
+<a href="../fpm-door-lock-lp/">complete redesign</a> with proper power management.</p>
+
+<p>Commit:
+<a href="https://git.asciimx.com/smart-home/commit/?id=f4b0b734a595919cf451ab9448b06274c8e609a4">f4b0b73</a>
+| Gerber: <a href="gerber_back.zip">gerber_back.zip</a>,
+<a href="gerber_front.zip">gerber_front.zip</a></p>
</div>
<p class="post-author right">by W. D. Sadeep Madurange</p>
</div>
diff --git a/_site/log/index.html b/_site/log/index.html
index bcc001e..b7ebcc5 100644
--- a/_site/log/index.html
+++ b/_site/log/index.html
@@ -102,7 +102,7 @@
</td>
<td class="posts-td posts-td-time">
<span class="post-meta">
- <time datetime="2025-04-26 00:00:00 +0800">2025-04-26</time>
+ <time datetime="2025-06-05 00:00:00 +0800">2025-06-05</time>
</span>
</td>
</tr>
diff --git a/_site/posts.xml b/_site/posts.xml
index 037ca77..03fec7a 100644
--- a/_site/posts.xml
+++ b/_site/posts.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/posts.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2025-12-26T21:43:25+08:00</updated><id>/posts.xml</id><title type="html">ASCIIMX</title><author><name>W. D. Sadeep Madurange</name></author></feed> \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/posts.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2025-12-27T11:18:53+08:00</updated><id>/posts.xml</id><title type="html">ASCIIMX</title><author><name>W. D. Sadeep Madurange</name></author></feed> \ No newline at end of file
diff --git a/_site/sitemap.xml b/_site/sitemap.xml
index fc2c59e..b799547 100644
--- a/_site/sitemap.xml
+++ b/_site/sitemap.xml
@@ -22,7 +22,7 @@
</url>
<url>
<loc>/log/fpm-door-lock-rf/</loc>
-<lastmod>2025-04-26T00:00:00+08:00</lastmod>
+<lastmod>2025-06-05T00:00:00+08:00</lastmod>
</url>
<url>
<loc>/log/arduino-uno/</loc>