DIY Macro Pad PCB Design

Are you tired of using generic, off-the-shelf keyboards that don’t quite fit your needs? Why not design your own custom keyboard PCB using KiCad? With this powerful open-source electronics design software, you can create a keyboard that’s tailored to your exact preferences.

To get started, you’ll need to select the components for your keyboard. Key switches are a critical component, as they’re responsible for registering keystrokes. There are several types of switches available, each with different characteristics in terms of feel and sound. You’ll also need diodes to prevent ghosting (when multiple keys are registered at once), and a microcontroller to handle the key scanning and USB communication.

One microcontroller that’s gaining popularity in the keyboard community is the RP2040. This powerful and versatile chip is capable of running custom firmware and has ample processing power and memory for even the most demanding keyboards. It’s also relatively easy to work with, as it can be programmed using the C language and has extensive documentation and community support.

Once you’ve selected your components, it’s time to start designing your PCB in KiCad. The first step is to create a schematic that defines the connections between the components. This can be done using KiCad’s intuitive schematic editor, where you can drag and drop components and wire them together. Make sure to label all your connections and keep the schematic organized for easier troubleshooting later on.

Next, you’ll need to create a PCB layout based on your schematic. KiCad’s PCB layout editor allows you to place components on the board, define the trace routes between them, and add any necessary pads or vias. It’s important to keep in mind factors such as key spacing, switch orientation, and overall keyboard size when laying out the PCB.

When it comes to firmware, my personal favorite is QMK. It offers a wide range of keyboard layouts and features, but what really sets it apart for me is its support for Vial. This powerful tool allows you to remap keys on the fly without having to reflash the firmware. This means you can easily change your key mappings or add new functions without the need for additional software or complicated programming. As a QMK enthusiast myself, I can attest to its flexibility and ease of use, making it a great choice for both beginners and experienced keyboard enthusiasts alike.

Once you’re happy with your PCB design and firmware, it’s time to order the components and manufacture the board. There are many options for PCB fabrication, ranging from DIY methods like toner transfer and etching to professional services that can handle complex designs and high volumes.

After your PCB has been manufactured, it’s time to assemble the keyboard. This involves soldering the components to the PCB, attaching stabilizers to the larger keys, and programming the microcontroller with custom firmware.

In conclusion, designing your own keyboard PCB in KiCad is a rewarding and fulfilling project that allows you to create a keyboard that’s tailored to your exact preferences. With the RP2040 microcontroller, a careful selection of components, and QMK with Vial for firmware, you can create a keyboard that’s not only functional but also beautiful and unique. So grab your soldering iron and get started!

Emergency anti Jacob device

I have a colleague with an unhealthy obsession with rotating people’s desktops using the control alt arrow key combination.

It used up not be so bad, it would occasionally happen when you left your desk too long, but alas the problem grew ever so much worse. He soon learnt that he could spam the keys and it would queue up the rotations, he could make our desktops spin uncontrolled!

But still, this could be avoided by locking the computer it was not in use however Jacob has gotten more stealthy at this and he now rotates the monitors even when you are at the desk and not paying attention.

It is for this reason that I created the anti Jacob device. it activates the windows lock with a single press of a big red button therefore it gives you a quick and easy way to prevent Jacob from rotating your desktop.

At its core, it is an emergency stop button wired to Arduino Pro Micro. A sketch pulls up gpio 2 and watches it. If the pin is then pulled to ground will activate the windows L combination, therefore locking the pc.

This is our strongest weapon in the war against surprise rotating desktops.

Samsung Ezon SHS-3321 Smart Door Lock, can I make it smarter?


In today’s post we are going to be exploring my new Samsung Ezon SHS-3321 Smart Door Lock Deadbolt.


Photo of the box


This is a dead bolt mortise style lock, its main feature is that it supports NFC and PIN authentication to unlock rather than a traditional key system.

Now, this will work great with my NFC implant, but what if I wanted to allow someone else into my place?

Sure, I could tell them the PIN code, but that seems kinda silly to me, its convenient but what if I only wanted to grant them entry this one time? if I give them the PIN they could come back later that day and enter.


So I was looking into ways of connecting it to the internet so that I could trigger the lock from my phone.

From past experience, I was aware that Samsung does actually have a remote control module available for some door locks, such as the SHS-6020, however it seems this wasn’t compatible with my lock.

Poking around inside the lock I have located a connector that is not referenced anywhere in the manual, and is labelled as ‘Home Auto’ on the silk screen.

I searched around a bit online for it and found a reference in a whirlpool post over here:


One of the users suggests it could be current based, which instantly lit a bulb in my head!

So I set up the lock on my desk and got it responding to my NFC implant, everything was working great.

I tricked the lock that the door was closed by bringing the magnet near the reed switch sensor, and locked it with the lock button.

I then used a screwdriver to short the two pins together by just poking them. I was pleased to hear a nice chirp and the lock unlocked!

This opens a whole new world of opportunity.

I can now hook up the lock similarly to how I have hooked up the intercom, and trigger it via HTTP.

This is not the most secure method, so I will look into ways of making it more secure before I actually implement this.

but the important thing is, its incredibly easy to interface the lock in this way.

The next thing to do from here would be poke around on the circuit to see if theres a status pin that outputs if the lock is in the locked or unlocked state.


NFC Implant

It’s been a while. 

Since I was here last, I’ve gotten myself an NFC implant. 
Specifically a Dangerous Things xNT. 

I got the install done at Stone Heart in Sydney by Joeltron!

Here is a video of the live stream I did during the install:

Heres the HD footage of the install:

Also here’s a bonus video of scanning my hand on an opal reader:

Basically, it’s an Ntag216, implanted just under the skin next to my thumb on my left hand. 
It’s safe and cool. There’s plenty of info online if you want specifics. 
I’ve also picked up a few NFC devices to test with, two USB readers, and some Arduino RC522 modules !

I’ve had luck with the ACS 122 AND THE RC522 so far, both recognise my hand and can interact. However with the 122 I’m having difficulty finding software that works. 
The gototag software is looking the most promising, however it seems to have a bug at the moment where it is incorrectly identifying my hand as being write protected. 

I have spoken with Amal from Dangerous Things and he has confirmed there looks like something wrong. He is attempting to contact gototag to get this resolved, and seems to better understand exactly what’s wrong!
For the RC522, It can dump my card perfectly, and read the UID. 

I tried the access code control example sketch but it doesn’t seem to be working for me. 
I have some suspicion about the Arduino mega 2560 I’m using so I might pickup a new Uno or nano. 
I’ll keep this page updated as I learn more, or I’ll write a new post. Something on the other will happen!
Ciao for now 
Edit: oh right the blood thing, when I got the tag implanted Joeltron drew a smiley face on my hand in my own blood, I thought that was hilarious and wanted to share, hahahhaha 

USB Volume Knob

Hi all,
Today I went to visit Merlion! 

It was nice. But I found myself lacking of what to do next, so I opened my Google Keep and saw a list of parts needed to build a USB volume knob. 

I took a trip from Raffles Place to Bugis and changed to the Downtown Line, then a few minutes later I was at Rochor and was a short walk from Sim Lim Square / Tower. 
I looked around Square for a bit first before heading over to the Tower, the Tower is more hobbyist electronics. 

After looking around for half an hour I found all the parts I needed, 
I had a lot of trouble finding a knob I liked, well not really, I found the perfect one, but it has the incorrect mount for my Rotary encoder!

After assembling everything it would seem my Digispark is corrupt…. It shows up as ‘device descriptor failed’

To fix this I would reflash it’s bootloader, however I cannot do that without a USBASP… And I don’t have one on me…
Oh boy this was almost a great day project :’)


Compressing an Opal card

Please note, idk if this is still a “legally valid opal card” when if it works transits might be old fashioned, in a bad mood or butthurt that your opal card is cooler than theirs! (or perhaps there’s a ‘do not tamper with card’ rule?)

Hi all,


A few years before Sydney had an electronic ticketing system, I read an article where a man in London performed some experiments on his Oyster card, and turned it into a ring! ( )

Inspired by this I set out to do something similar with my Opal card.

I found an old  Opal card I had laying around, scanning it reveals I had $1.17 left on it, I can sacrifice that if the experiment fails.

So I took a deep plate and put about 25ml of acetone into it, then I submerged the Opal card.

Around 30 minutes later I returned to check on it and great! it was dissolving! all the outer layer had gone funky, pics after the break!

I removed the funky stuff and then set the card back into the bath upside down to get the other side, again 20 minutes later it had the same effect. the sides of the card had been peeling up so it was kinda difficult getting it evenly dissolved.

I managed, and after a while I had a thin card with the antenna and chip in it.

The chip was inside a cutout in the card, probably to reduce size, The antenna removed itself from the chip so maybe it was just pressure fit?

Either way with some careful finger work I was able to strip the antenna out of the card as I couldn’t get this piece to dissolve.

With the antenna and chip free, I re attached the antenna to the chip with some solder  (enameled wire antenna, I accidentally burnt about  8mm of the wire off when removing the enamel, but it still functions fine.)


After it was back together, I scanned it with my phone and hurray! it still scans!

So I folded the coil in on itself creating a coil half the size, and tried again to scan it. IT WORKED!


I folded it once more to make it around the size of a 10c coin, and then tried once more and OMG it still works!

To finish it off for now, I took a small thick plastic bag, and inserted the coil, pushing it neatly into the corner. I cut the plastic bag as close to the coil as I could to get minimum size, and then put some kapton tape over the two open sides.

I now have a small rigid opal card.

I had a Visa paywave band that I got from my mobile telco, Optus. Its just a silicone wrist band, and a small Visa paywave card. maybe 20x30mm ?

I ordered a second one, in red, because I can do so for free.

When it arrived, I inserted my new small opal card into the wristband and put it on my wrist.

To my amazement through all that silicone and plastic the card could still easily be scanned by my phone!

Even with the reduced coil surface area!



I have yet to test it in production, I will do so this afternoon. I will load it with $5-10 and see how it goes.


For now, enjoy a few random photos I took during the process:


Opal Card dissolving


Optus Visa PayWave band + finished miniOpal:

miniOpal and Cash by Optus band





I did some testing, the new style opal loading machine keeps saying invalid card, the old style one gives me the option to top up and correctly reads the balance, however it sometime scans saying “multiple cards detected ”
The gates take a bit longer to read the card than a normal full size card, and they take a few times to find the right spot, note: this is more difficult when its in the wrist band and on the wrist!


I think it’s not worth the extra time to have this form factor



DJ Sona Audio and Light prop

Im going to be working on a DJ Sona (LOL skin) cosplay prop for a friend, Ill stick info into this post.


That should just about cover everything.

mash it all up together and let someone else make the details

maybe lasercut the perspex to shape ? is there enough to make the spinny things also ?



Automate part of the process of 3d printer rental services like 3D hubs

There is a few services out on the web where you can submit a file and someone in the community with a 3d printer can print it for you, think of ride sharing except with 3d printers! 

One problem with this though is it’s almost entirely a manual process. 

You place your order, the website processes it, the person with the printer gets the file, at their earliest convenience they start the print, once they realise it’s complete they let you know. 

I believe a number of parts of this process could easily be automated. 

First comes octoprint, it can run on a raspberry pi and connects the printer to the internet. 
Utilising the API the online service could automatically send the print job to the printer. 

This is the first hurdle, the job can now be sent to the printer automatically, negating the need for the owner to load the file and start the print. 

This isn’t perfect, what if the incorrect filament was loaded? Running out? Or just plain you wanted it resized?

There’s sensors you could integrate for the first two, and you could pre splice your model if you wanted it resized. 

Note what if there was already a model on the print bed?

You could sense that somehow too, my first choice would be machine vision to check if there is anything there that isn’t normally. I think this would be the most accurate. 

But you could accomplish this with a much cheaper and simpler sensor like a proximity sensor, or a rangefinder going over the bed level. 

The octoprint API again would be able to stream you a live stream of the print, and when its finished it could send the online service a trigger that the print is finished, along with a photo of the completed print the moment it was finished printing. 

It could even go as far as sending the recorded time lapse over to YouTube and linking it in the completed email!

This would let the user review the print and check for defects / print problems to some degree, so they could instantly email the printer owner if something went wrong and request a re print. 

This could save a lot of time and speed up the process. 


Connecting A/C to IoT


Ive wanted to do this for a while, and ive started making a bit of progress. I was hoping I could finish this tonight but it doesnt look like thats going to happen.


Following the guidance of the write up over here:


Ive come up with the following data from my A/C remote:
ON: 9E00000A
OFF: 8E00000A

16C: 9A00000A
17C: 9A80000A
18C: 9A40000A
19C: 9AC0000A
20C: 9A20000A
21C: 9A00000A
22C: 9A60000A
23C: 9AE0000A
24C: 9A10000A
25C: 9A90000A
26C: 9A50000A
27C: 9AD0000A
28C: 9A30000A
29C: 9AB0000A
30C: 9A70000A

LOWFAN: 9E00000A
MEDFAN: 9600000A
HIFAN: 9A00000A

AC: 9A60000A
DHM: 5A60000A
FAN: DA60000A

SWN: 9A00000A
NOSW: 9800000A




The end piece is 0000A, this seems to remain constant on mine. It might have data in it for timer, but I don’t care about that. The vent swinging data seems to change the same bits as the fan speed data, but to an alternate value.

I’ve been reading through DL_Aircon.cpp for a while now and I cant grasp what goes where..

Now, I can see the patterns, not that I understand them :’)

I was never good at understanding things like this..

I need someone to help me in understanding how to get my data into the code so that I can get it uploaded to my ESP8266 and test it.

I might hit up Ruiqi Mao again… hmmm

This is the file the data has to go into…