From e04ce2ab6ca82d0014bec8b217215f35b436ff25 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Fri, 26 Dec 2025 16:53:45 +0800 Subject: FPM lock journal style. --- _log/fpm-door-lock-lp.md | 60 +++++++++++++++++ _log/fpm-door-lock-lp/breadboard.jpg | Bin 0 -> 46771 bytes _log/fpm-door-lock-lp/footprint.png | Bin 0 -> 198127 bytes _log/fpm-door-lock-lp/gerber.zip | Bin 0 -> 89431 bytes _log/fpm-door-lock-lp/pcb.jpg | Bin 0 -> 68237 bytes _log/fpm-door-lock-lp/pcb1.jpg | Bin 0 -> 37068 bytes _log/fpm-door-lock-lp/source.tar.gz | Bin 0 -> 29473 bytes _log/fpm-door-lock-lp/thumb_sm.jpg | Bin 0 -> 18380 bytes _log/fpm-door-lock-lp/video.mp4 | Bin 0 -> 13264594 bytes _log/fpm-door-lock-rf.md | 63 ++++++++++++++++++ _log/fpm-door-lock-rf/back.jpeg | Bin 0 -> 34023 bytes _log/fpm-door-lock-rf/back_design.jpeg | Bin 0 -> 31946 bytes _log/fpm-door-lock-rf/front.jpeg | Bin 0 -> 28997 bytes _log/fpm-door-lock-rf/front_design.jpeg | Bin 0 -> 32174 bytes _log/fpm-door-lock-rf/gerber_back.zip | Bin 0 -> 48217 bytes _log/fpm-door-lock-rf/gerber_front.zip | Bin 0 -> 49605 bytes _log/fpm-door-lock-rf/source.tar.gz | Bin 0 -> 6660 bytes _log/fpm-door-lock-rf/thumb_sm.jpeg | Bin 0 -> 6181 bytes _log/fpm-door-lock.md | 113 -------------------------------- _log/fpm-door-lock/breadboard.jpg | Bin 46771 -> 0 bytes _log/fpm-door-lock/footprint.png | Bin 198127 -> 0 bytes _log/fpm-door-lock/gerber.zip | Bin 89431 -> 0 bytes _log/fpm-door-lock/pcb.jpg | Bin 68237 -> 0 bytes _log/fpm-door-lock/pcb1.jpg | Bin 37068 -> 0 bytes _log/fpm-door-lock/source.tar.gz | Bin 29473 -> 0 bytes _log/fpm-door-lock/thumb_sm.jpg | Bin 18380 -> 0 bytes _log/fpm-door-lock/video.mp4 | Bin 13264594 -> 0 bytes _log/matrix-digital-rain.md | 38 ++++++----- _log/my-first-pcb.md | 63 ------------------ _log/my-first-pcb/back.jpeg | Bin 34023 -> 0 bytes _log/my-first-pcb/back_design.jpeg | Bin 31946 -> 0 bytes _log/my-first-pcb/front.jpeg | Bin 28997 -> 0 bytes _log/my-first-pcb/front_design.jpeg | Bin 32174 -> 0 bytes _log/my-first-pcb/gerber_back.zip | Bin 48217 -> 0 bytes _log/my-first-pcb/gerber_front.zip | Bin 49605 -> 0 bytes _log/my-first-pcb/source.tar.gz | Bin 6660 -> 0 bytes _log/my-first-pcb/thumb_sm.jpeg | Bin 6181 -> 0 bytes 37 files changed, 143 insertions(+), 194 deletions(-) create mode 100644 _log/fpm-door-lock-lp.md create mode 100644 _log/fpm-door-lock-lp/breadboard.jpg create mode 100644 _log/fpm-door-lock-lp/footprint.png create mode 100644 _log/fpm-door-lock-lp/gerber.zip create mode 100644 _log/fpm-door-lock-lp/pcb.jpg create mode 100644 _log/fpm-door-lock-lp/pcb1.jpg create mode 100644 _log/fpm-door-lock-lp/source.tar.gz create mode 100644 _log/fpm-door-lock-lp/thumb_sm.jpg create mode 100644 _log/fpm-door-lock-lp/video.mp4 create mode 100644 _log/fpm-door-lock-rf.md create mode 100644 _log/fpm-door-lock-rf/back.jpeg create mode 100644 _log/fpm-door-lock-rf/back_design.jpeg create mode 100644 _log/fpm-door-lock-rf/front.jpeg create mode 100644 _log/fpm-door-lock-rf/front_design.jpeg create mode 100644 _log/fpm-door-lock-rf/gerber_back.zip create mode 100644 _log/fpm-door-lock-rf/gerber_front.zip create mode 100644 _log/fpm-door-lock-rf/source.tar.gz create mode 100644 _log/fpm-door-lock-rf/thumb_sm.jpeg delete mode 100644 _log/fpm-door-lock.md delete mode 100644 _log/fpm-door-lock/breadboard.jpg delete mode 100644 _log/fpm-door-lock/footprint.png delete mode 100644 _log/fpm-door-lock/gerber.zip delete mode 100644 _log/fpm-door-lock/pcb.jpg delete mode 100644 _log/fpm-door-lock/pcb1.jpg delete mode 100644 _log/fpm-door-lock/source.tar.gz delete mode 100644 _log/fpm-door-lock/thumb_sm.jpg delete mode 100644 _log/fpm-door-lock/video.mp4 delete mode 100644 _log/my-first-pcb.md delete mode 100644 _log/my-first-pcb/back.jpeg delete mode 100644 _log/my-first-pcb/back_design.jpeg delete mode 100644 _log/my-first-pcb/front.jpeg delete mode 100644 _log/my-first-pcb/front_design.jpeg delete mode 100644 _log/my-first-pcb/gerber_back.zip delete mode 100644 _log/my-first-pcb/gerber_front.zip delete mode 100644 _log/my-first-pcb/source.tar.gz delete mode 100644 _log/my-first-pcb/thumb_sm.jpeg (limited to '_log') diff --git a/_log/fpm-door-lock-lp.md b/_log/fpm-door-lock-lp.md new file mode 100644 index 0000000..1be2b76 --- /dev/null +++ b/_log/fpm-door-lock-lp.md @@ -0,0 +1,60 @@ +--- +title: Fingerprint door lock (LP) +date: 2025-08-18 +layout: post +project: true +thumbnail: thumb_sm.jpg +--- + +Second iteration of the [RF door lock](../fpm-door-lock-rf). 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. + + + +Redesigned the PCB completely. Tossed the RF modules and the second MCU. +Connected R503 sensor directly to the ATmega328P. Sensor now mounts on door +exterior, servo attaches to interior knob, MCU stays on the back to prevent +tampering. + + + + + + + + + +
+ PCB + + Design +
+ PCB footprint +
+ +PCB specs: 2-layer, 1oz copper, 0.3mm traces (1mm for power and servo). Ground +plane on bottom layer. + +Solved idle power draw with MOSFETs. 2N7000 and NDP6020P cut power to sensor +and servo before deep sleep. Through-hole MOSFETs that switch at 3.3V are +getting harder to find. NDP6020P already obsolete. + +Replaced linear regulators with MP1584EN DC-DC buck converters. No RF, noise +isn't a big concern. Buck's pin breakout not great--wouldn't fit most +commercial dev boards. + +Squeezed more power savings from the MCU by running it at 3.3V/8MHz. Combined +with buck converters: 56% total power savings. + +Wake sequence: MCU activates sensor MOSFET, unlocks sensor over UART, scans and +matches fingerprint. Match triggers blue LED, servo MOSFET, PWM signal to +unlock. No match triggers red LED. MOSFETs off, back to sleep. + +Total power savings: 99.9% (30.6mA → 2.9μA). Verdict: Fixed. + +Commit: +[7529094](https://git.asciimx.com/fpm-door-lock/commit/?id=75290945b2fd84b3bc108fd46419ee478eaac3ca) +| Gerber: [gerber.zip](gerber.zip) diff --git a/_log/fpm-door-lock-lp/breadboard.jpg b/_log/fpm-door-lock-lp/breadboard.jpg new file mode 100644 index 0000000..2bf47a9 Binary files /dev/null and b/_log/fpm-door-lock-lp/breadboard.jpg differ diff --git a/_log/fpm-door-lock-lp/footprint.png b/_log/fpm-door-lock-lp/footprint.png new file mode 100644 index 0000000..5511bf1 Binary files /dev/null and b/_log/fpm-door-lock-lp/footprint.png differ diff --git a/_log/fpm-door-lock-lp/gerber.zip b/_log/fpm-door-lock-lp/gerber.zip new file mode 100644 index 0000000..19a9d19 Binary files /dev/null and b/_log/fpm-door-lock-lp/gerber.zip differ diff --git a/_log/fpm-door-lock-lp/pcb.jpg b/_log/fpm-door-lock-lp/pcb.jpg new file mode 100644 index 0000000..fbd800b Binary files /dev/null and b/_log/fpm-door-lock-lp/pcb.jpg differ diff --git a/_log/fpm-door-lock-lp/pcb1.jpg b/_log/fpm-door-lock-lp/pcb1.jpg new file mode 100644 index 0000000..367187d Binary files /dev/null and b/_log/fpm-door-lock-lp/pcb1.jpg differ diff --git a/_log/fpm-door-lock-lp/source.tar.gz b/_log/fpm-door-lock-lp/source.tar.gz new file mode 100644 index 0000000..ef23422 Binary files /dev/null and b/_log/fpm-door-lock-lp/source.tar.gz differ diff --git a/_log/fpm-door-lock-lp/thumb_sm.jpg b/_log/fpm-door-lock-lp/thumb_sm.jpg new file mode 100644 index 0000000..a8fa534 Binary files /dev/null and b/_log/fpm-door-lock-lp/thumb_sm.jpg differ diff --git a/_log/fpm-door-lock-lp/video.mp4 b/_log/fpm-door-lock-lp/video.mp4 new file mode 100644 index 0000000..a907a9b Binary files /dev/null and b/_log/fpm-door-lock-lp/video.mp4 differ diff --git a/_log/fpm-door-lock-rf.md b/_log/fpm-door-lock-rf.md new file mode 100644 index 0000000..b677591 --- /dev/null +++ b/_log/fpm-door-lock-rf.md @@ -0,0 +1,63 @@ +--- +title: Fingerprint door lock (RF) +date: 2025-04-26 +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. + +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. + + + + + + + + + + +
+ Design (front) +

Footprint (front)

+
+ PCB (front) +

PCB (front)

+
+ Design (back) +

Footprint (back)

+
+ PCB (back) +

PCB (back)

+
+ +The PCBs have two layers. A copper region serves as the ground plane. The 0.3mm +wide 1oz/ft2 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/ft2 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) diff --git a/_log/fpm-door-lock-rf/back.jpeg b/_log/fpm-door-lock-rf/back.jpeg new file mode 100644 index 0000000..f458e69 Binary files /dev/null and b/_log/fpm-door-lock-rf/back.jpeg differ diff --git a/_log/fpm-door-lock-rf/back_design.jpeg b/_log/fpm-door-lock-rf/back_design.jpeg new file mode 100644 index 0000000..b6c0f5d Binary files /dev/null and b/_log/fpm-door-lock-rf/back_design.jpeg differ diff --git a/_log/fpm-door-lock-rf/front.jpeg b/_log/fpm-door-lock-rf/front.jpeg new file mode 100644 index 0000000..2b2931f Binary files /dev/null and b/_log/fpm-door-lock-rf/front.jpeg differ diff --git a/_log/fpm-door-lock-rf/front_design.jpeg b/_log/fpm-door-lock-rf/front_design.jpeg new file mode 100644 index 0000000..f81f09c Binary files /dev/null and b/_log/fpm-door-lock-rf/front_design.jpeg differ diff --git a/_log/fpm-door-lock-rf/gerber_back.zip b/_log/fpm-door-lock-rf/gerber_back.zip new file mode 100644 index 0000000..26659ad Binary files /dev/null and b/_log/fpm-door-lock-rf/gerber_back.zip differ diff --git a/_log/fpm-door-lock-rf/gerber_front.zip b/_log/fpm-door-lock-rf/gerber_front.zip new file mode 100644 index 0000000..864334e Binary files /dev/null and b/_log/fpm-door-lock-rf/gerber_front.zip differ diff --git a/_log/fpm-door-lock-rf/source.tar.gz b/_log/fpm-door-lock-rf/source.tar.gz new file mode 100644 index 0000000..c31aa22 Binary files /dev/null and b/_log/fpm-door-lock-rf/source.tar.gz differ diff --git a/_log/fpm-door-lock-rf/thumb_sm.jpeg b/_log/fpm-door-lock-rf/thumb_sm.jpeg new file mode 100644 index 0000000..c275b12 Binary files /dev/null and b/_log/fpm-door-lock-rf/thumb_sm.jpeg differ diff --git a/_log/fpm-door-lock.md b/_log/fpm-door-lock.md deleted file mode 100644 index 5b78b3e..0000000 --- a/_log/fpm-door-lock.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Fingerprint door lock -date: 2025-08-18 -layout: post -project: true -thumbnail: thumb_sm.jpg ---- - -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 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. - -Files: [source.tar.gz](source.tar.gz), [gerber.zip](gerber.zip) diff --git a/_log/fpm-door-lock/breadboard.jpg b/_log/fpm-door-lock/breadboard.jpg deleted file mode 100644 index 2bf47a9..0000000 Binary files a/_log/fpm-door-lock/breadboard.jpg and /dev/null differ diff --git a/_log/fpm-door-lock/footprint.png b/_log/fpm-door-lock/footprint.png deleted file mode 100644 index 5511bf1..0000000 Binary files a/_log/fpm-door-lock/footprint.png and /dev/null differ diff --git a/_log/fpm-door-lock/gerber.zip b/_log/fpm-door-lock/gerber.zip deleted file mode 100644 index 19a9d19..0000000 Binary files a/_log/fpm-door-lock/gerber.zip and /dev/null differ diff --git a/_log/fpm-door-lock/pcb.jpg b/_log/fpm-door-lock/pcb.jpg deleted file mode 100644 index fbd800b..0000000 Binary files a/_log/fpm-door-lock/pcb.jpg and /dev/null differ diff --git a/_log/fpm-door-lock/pcb1.jpg b/_log/fpm-door-lock/pcb1.jpg deleted file mode 100644 index 367187d..0000000 Binary files a/_log/fpm-door-lock/pcb1.jpg and /dev/null differ diff --git a/_log/fpm-door-lock/source.tar.gz b/_log/fpm-door-lock/source.tar.gz deleted file mode 100644 index ef23422..0000000 Binary files a/_log/fpm-door-lock/source.tar.gz and /dev/null differ diff --git a/_log/fpm-door-lock/thumb_sm.jpg b/_log/fpm-door-lock/thumb_sm.jpg deleted file mode 100644 index a8fa534..0000000 Binary files a/_log/fpm-door-lock/thumb_sm.jpg and /dev/null differ diff --git a/_log/fpm-door-lock/video.mp4 b/_log/fpm-door-lock/video.mp4 deleted file mode 100644 index a907a9b..0000000 Binary files a/_log/fpm-door-lock/video.mp4 and /dev/null differ diff --git a/_log/matrix-digital-rain.md b/_log/matrix-digital-rain.md index 8512208..f1553e1 100644 --- a/_log/matrix-digital-rain.md +++ b/_log/matrix-digital-rain.md @@ -16,44 +16,46 @@ than it needed to be. Moved phosphor decay into the 4th byte of the RGB union--should’ve done this -in 2022. What was I thinking. +in 2022; What was I thinking. Keeping the RGB union despite portability concerns. All my systems are little-endian and the code is cleaner this way. Fixed Unicode by introducing a charset array. UNICODE(min, max) packs Unicode -ranges into uint64--low four bytes for start, high four bytes for end. +ranges into uint64: low four bytes for start, high four bytes for end. insert_code() unpacks a random block and picks a character from it: ``` +#define UNICODE(min, max) (((uint64_t)max << 32) | min) + static uint64_t glyphs[] = { UNICODE(0x0021, 0x007E), /* ASCII */ UNICODE(0xFF65, 0xFF9F), /* Half-width Katakana */ }; -``` - -Full-width Katakana breaks column alignment. Stick to half-width -(U+FF61-U+FF9F) range. Compile with -DNOKANA to disable Katakana altogether. - -blend() simulates phosphor decay by eroding RGB channels toward -background color: -``` -static inline void blend(matrix *mat, size_t row, size_t col) +static inline void insert_code(matrix *mat, + size_t row, size_t col) { - unsigned char *color = mat->rgb[index(mat, row, col)].color; - color[R] = color[R] - (color[R] - RGB_BG_RED) / DECAY_MPLIER; - color[G] = color[G] - (color[G] - RGB_BG_GRN) / DECAY_MPLIER; - color[B] = color[B] - (color[B] - RGB_BG_BLU) / DECAY_MPLIER; + uint64_t blk; + uint32_t min, max; + + blk = glyphs[(rand() % glyphlen)]; + min = (uint32_t)blk; + max = (uint32_t)(blk >> 32); + mat->code[index(mat, row, col)] = rand() % (max - min) + min; } ``` -That's still good. Leaving it alone. +Full-width Katakana breaks column alignment. Stick to half-width +(U+FF61-U+FF9F) range. Compile with -DNOKANA to disable Katakana altogether. + +blend() is still good. Leaving it alone. Tossed license and automake cruft. Just `cc -O3 main.c -o matrix` now. Don't need the ceremony. -Runs at 2-3% CPU on OpenBSD (T490). No regressions. Fans are quiet. +Runs at 2-3% CPU on OpenBSD (T490). No cause to measure performance more +precisely. No regressions. Fans are quiet. Commit: -[03f8d87](https://git.asciimx.com/matrix-digital-rain/commit/?id=03f8d87ba7c2e46bd3f3cc4c772fb3a2ac740c92) +[69a888a](https://git.asciimx.com/matrix-digital-rain/commit/main.c?id=69a888a5b0bc4ef4bce4f86c1556a06f0f131fda) diff --git a/_log/my-first-pcb.md b/_log/my-first-pcb.md deleted file mode 100644 index eced7e4..0000000 --- a/_log/my-first-pcb.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: My first PCB -date: 2025-04-26 -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. - -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. - - - - - - - - - - -
- Design (front) -

Footprint (front)

-
- PCB (front) -

PCB (front)

-
- Design (back) -

Footprint (back)

-
- PCB (back) -

PCB (back)

-
- -The PCBs have two layers. A copper region serves as the ground plane. The 0.3mm -wide 1oz/ft2 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/ft2 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) diff --git a/_log/my-first-pcb/back.jpeg b/_log/my-first-pcb/back.jpeg deleted file mode 100644 index f458e69..0000000 Binary files a/_log/my-first-pcb/back.jpeg and /dev/null differ diff --git a/_log/my-first-pcb/back_design.jpeg b/_log/my-first-pcb/back_design.jpeg deleted file mode 100644 index b6c0f5d..0000000 Binary files a/_log/my-first-pcb/back_design.jpeg and /dev/null differ diff --git a/_log/my-first-pcb/front.jpeg b/_log/my-first-pcb/front.jpeg deleted file mode 100644 index 2b2931f..0000000 Binary files a/_log/my-first-pcb/front.jpeg and /dev/null differ diff --git a/_log/my-first-pcb/front_design.jpeg b/_log/my-first-pcb/front_design.jpeg deleted file mode 100644 index f81f09c..0000000 Binary files a/_log/my-first-pcb/front_design.jpeg and /dev/null differ diff --git a/_log/my-first-pcb/gerber_back.zip b/_log/my-first-pcb/gerber_back.zip deleted file mode 100644 index 26659ad..0000000 Binary files a/_log/my-first-pcb/gerber_back.zip and /dev/null differ diff --git a/_log/my-first-pcb/gerber_front.zip b/_log/my-first-pcb/gerber_front.zip deleted file mode 100644 index 864334e..0000000 Binary files a/_log/my-first-pcb/gerber_front.zip and /dev/null differ diff --git a/_log/my-first-pcb/source.tar.gz b/_log/my-first-pcb/source.tar.gz deleted file mode 100644 index c31aa22..0000000 Binary files a/_log/my-first-pcb/source.tar.gz and /dev/null differ diff --git a/_log/my-first-pcb/thumb_sm.jpeg b/_log/my-first-pcb/thumb_sm.jpeg deleted file mode 100644 index c275b12..0000000 Binary files a/_log/my-first-pcb/thumb_sm.jpeg and /dev/null differ -- cgit v1.2.3