summaryrefslogtreecommitdiffstats
path: root/_projects
diff options
context:
space:
mode:
Diffstat (limited to '_projects')
-rw-r--r--_projects/desktop-unix.md31
-rw-r--r--_projects/desktop-unix/dotfiles.tar.gzbin6397999 -> 0 bytes
-rw-r--r--_projects/desktop-unix/linux.pngbin206255 -> 0 bytes
-rw-r--r--_projects/desktop-unix/openbsd.pngbin318897 -> 0 bytes
-rw-r--r--_projects/my-first-pcb.md65
-rw-r--r--_projects/my-first-pcb/back.jpegbin0 -> 34023 bytes
-rw-r--r--_projects/my-first-pcb/back_design.jpegbin0 -> 31946 bytes
-rw-r--r--_projects/my-first-pcb/front.jpegbin0 -> 28997 bytes
-rw-r--r--_projects/my-first-pcb/front_design.jpegbin0 -> 32174 bytes
-rw-r--r--_projects/my-first-pcb/gerber_back.zipbin0 -> 48217 bytes
-rw-r--r--_projects/my-first-pcb/gerber_front.zipbin0 -> 49605 bytes
-rw-r--r--_projects/my-first-pcb/source.tar.gzbin0 -> 6660 bytes
-rw-r--r--_projects/my-first-pcb/thumb.jpegbin0 -> 27235 bytes
13 files changed, 65 insertions, 31 deletions
diff --git a/_projects/desktop-unix.md b/_projects/desktop-unix.md
deleted file mode 100644
index 92bca29..0000000
--- a/_projects/desktop-unix.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Desktop Unix
-date: 2025-09-21
-author: Wickramage Don Sadeep Madurange
-thumbnail: linux.png
-layout: post
----
-
-The year 2020 transformed my personal computing experience. In March 2020, I
-stumbled upon Arch Linux and discovered that I could customize my desktop
-environment to look and work any way I liked. I exercised that newfound freedom
-to create a Matrix-themed setup:
-
-![Arch Linux](linux.png)
-
-The system employs the X display server and the i3 window manager. The terminal
-emulator used is Urxvt. The translucent effect is achieved with the help of the
-Xcompmgr compositor. This sort of setup was popular among minimalist Linux
-users.
-
-In February 2024, I switched to an OpenBSD system with Xenocara (the OpenBSD
-build of X display server) as the display server and i3 as the window manager:
-
-![OpenBSD i3](openbsd.png)
-
-Unlike Linux, OpenBSD includes a coherent desktop environment out of the box.
-Except for the window manager, for which I prefer a tiling one, I'm now using
-the default OpenBSD setup. For the window manager, I use dwm from the Suckless
-team.
-
-Files: [dotfiles.tar.gz](dotfiles.tar.gz)
diff --git a/_projects/desktop-unix/dotfiles.tar.gz b/_projects/desktop-unix/dotfiles.tar.gz
deleted file mode 100644
index c6774c4..0000000
--- a/_projects/desktop-unix/dotfiles.tar.gz
+++ /dev/null
Binary files differ
diff --git a/_projects/desktop-unix/linux.png b/_projects/desktop-unix/linux.png
deleted file mode 100644
index 40bc33b..0000000
--- a/_projects/desktop-unix/linux.png
+++ /dev/null
Binary files differ
diff --git a/_projects/desktop-unix/openbsd.png b/_projects/desktop-unix/openbsd.png
deleted file mode 100644
index d7489f7..0000000
--- a/_projects/desktop-unix/openbsd.png
+++ /dev/null
Binary files differ
diff --git a/_projects/my-first-pcb.md b/_projects/my-first-pcb.md
new file mode 100644
index 0000000..be425f4
--- /dev/null
+++ b/_projects/my-first-pcb.md
@@ -0,0 +1,65 @@
+---
+title: My first PCB
+date: 2025-07-14
+author: Wickramage Don Sadeep Madurange
+layout: post
+thumbnail: thumb.jpeg
+---
+
+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.
+
+<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>
+
+The PCBs have two layers. A copper region serves as the ground plane. The 0.3
+mm wide 1 oz/ft<sup>2</sup> copper traces can carry up to 500 mA (the tracks
+connecting the power source and the linear regulators have a width of 0.5 mm).
+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.8 mA (3.3 V) and 4.6 mA
+(5 V) respectively, as long as they are connected to the power supply.
+
+Although the circuit didn't draw more than 200 mA without a load, the servo
+under load could draw up to 600 mA. I'm sailing too close to the wind with 0.3
+mm copper traces. Instead, 0.4 mm wide 2 oz/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)
diff --git a/_projects/my-first-pcb/back.jpeg b/_projects/my-first-pcb/back.jpeg
new file mode 100644
index 0000000..f458e69
--- /dev/null
+++ b/_projects/my-first-pcb/back.jpeg
Binary files differ
diff --git a/_projects/my-first-pcb/back_design.jpeg b/_projects/my-first-pcb/back_design.jpeg
new file mode 100644
index 0000000..b6c0f5d
--- /dev/null
+++ b/_projects/my-first-pcb/back_design.jpeg
Binary files differ
diff --git a/_projects/my-first-pcb/front.jpeg b/_projects/my-first-pcb/front.jpeg
new file mode 100644
index 0000000..2b2931f
--- /dev/null
+++ b/_projects/my-first-pcb/front.jpeg
Binary files differ
diff --git a/_projects/my-first-pcb/front_design.jpeg b/_projects/my-first-pcb/front_design.jpeg
new file mode 100644
index 0000000..f81f09c
--- /dev/null
+++ b/_projects/my-first-pcb/front_design.jpeg
Binary files differ
diff --git a/_projects/my-first-pcb/gerber_back.zip b/_projects/my-first-pcb/gerber_back.zip
new file mode 100644
index 0000000..26659ad
--- /dev/null
+++ b/_projects/my-first-pcb/gerber_back.zip
Binary files differ
diff --git a/_projects/my-first-pcb/gerber_front.zip b/_projects/my-first-pcb/gerber_front.zip
new file mode 100644
index 0000000..864334e
--- /dev/null
+++ b/_projects/my-first-pcb/gerber_front.zip
Binary files differ
diff --git a/_projects/my-first-pcb/source.tar.gz b/_projects/my-first-pcb/source.tar.gz
new file mode 100644
index 0000000..c31aa22
--- /dev/null
+++ b/_projects/my-first-pcb/source.tar.gz
Binary files differ
diff --git a/_projects/my-first-pcb/thumb.jpeg b/_projects/my-first-pcb/thumb.jpeg
new file mode 100644
index 0000000..be7143d
--- /dev/null
+++ b/_projects/my-first-pcb/thumb.jpeg
Binary files differ