The FD84 is my first PCB design. It is a TKL keyboard that uses a Raspberry Pi RP2040 (Pico) microcontroller. Using Fusion 360, I designed a top plate and a case. This case is a lower profile case but can easily be modifed to fit someones style preference. There is also 2 top plate files, the first has the cut outs for the stabliers being more exact while the 2nd enlarges them. I found that my stablizers had a bit to much pressure with the normal top plate but your miles may very. All 3mf files, along with the fusion files are provided in the case_3d_models folder. Finally the Pcb are provided for kicad use in the raw_files folder, with the production files, ready to be sent to a pcb manufacturer, provided int he prod_pcb folder.
Links to all the materials I used are provided in the BOM section of the readme.
I opted to remove the prt scr, scr lk and pause/break keys from this board and instead have the micro controller visable on the top.
Using female socket headers, you are able to make the micro controller drop in. This allows for quick swapping of the boards for cases where you may have different layouts you are trying to learn but do not want to reprogram the controller.To achive this, instead of soldering the microcontroller directly onto the pins in the top right of the PCB, you instead solder on female sockets for the pico.
This keyboard also uses diodes to prevent ghosting. I chose to not hand solder these as they are very tiny. Instead I used JLCPCB and had them solder on the component for an extra cost.
Finally this board uses hot swap sockets. This means that you are able to drop in different switches without the need to solder them in place. This is good for when you want to easily change switches without the hassle of desoldering. This comes with the potential for switches to come out when switching keycaps. The top plate is meant to prevent this however I find some switches will still come out so your miles may very when 3d printing the top plate.
Note: The current pcb design does not include back lighting for the keys. I plan to eventually make a follow up to this keyboard with more features such as programable backlight, oled screen, media controller , etc.
Using this pcb, most of these features should be easily added, however will need custom firmware to allow functionality.
I designed the case in fusion 360 to be 3d printed. Currently the case is a more low profile style case where there is 3d printed standoffs and a small lip for the pcb and top plate to sit. There are 2 top plates, a more exact size one and one with the stablizer holes enlarged. I found that the stablizers had to much pressure on them when 3d printing so I enlarged them to allow the stabliers to sit without pressure. This is likely an issue with using 3d printing as the tolerances are a bit tighter, and likely would be ok using a different means of manufacturing, however I used 3d printing.
Currently the standoffs are taller than how the pcb should fit, to fix this you should clip them down to size. I just measured and used flush cutters. You can use other means to add standoffs, one methond I used was using 2 nuts on the bottom size of the pcb that the screw goes into. This has worked with no issues. I will likely update the model when I reprint the case to no longer need these to be cut, however I prefer having more and being able to remove extra rather than needing to add more.
I have not printed the new version of the case yet, so this might be updated with a new file soon, however it should work regardless as long as you screw in the pcb. The only difference is the right size of the case is cut more to the right to allow for the pcb to no longer clip the wall. This change should just work, however is not 100% tested so may have issues. If issues occur please report them and I will fix them ASAP. The case other than these few caviates have worked perfectly.
I plan to add more case designs and add more support toward the middle of the case to remove some pcb flex. Currently its not too bad however it can be slightly noticble if you are pressing down with alot of force (this is obviously not recommend as it could damage the pcb and normal use will never have this issue but I think its important to mention)
I 3d printed the top plate and case in pla and it seems to work well, it feels pretty solid with very minimal hollow or ping sound when using the stock version without mods.
Currently there is no need to write custom software for this board. While I have in the past for custom handwired builds, I recommend using POG : https://github.com/JanLunge/pog This is a GUI based keyboard microcontroller programmer, and works very well.
That being said, since this board is pretty much open source and has easily hot swapped controllers, I plan to make a custom software for this keyboard. The plan is to eventually make a bluetooth/wireless version of this keyboard and a version that supports the upcoming features such as OLED screen and Backlighting.
In the mean time, I think pog is the perfect solution to making your own custom mapped keyboard with minimal need to program. I know some people arent as familar with programming a microcontoller so POG is what I would recommend.
This project has been one of my first fully custom designed projects where I make the models and the pcb's. I personally enjoyed exploring a project outside my normal programming projects. While there is lots of room for improvement and development, for my first "product" project I am very happy with how it turned out. I have been using this keyboard daily since the end of october 2025 and it has been working with no issues.
I plan to make a v2 of this keyboard soon including custom firmware and more functionailies however for my needs this keyboard is exactly what I wanted. Additionally I plan to make a video outlining the process of ordering the pcb, soldering the sockets, 3d printing the case, putting the keyboard together and flashing the firmware. If you have any questions or issues, feel free to reach out and I will do my best to solve those problems.
All components used are included in the BOM, along with videos I refrenced to help build the pcb.
Note: You can find these from many different vendors, I opted for cannonkeys as they are in the USA so I did not have to pay import tariffs and I was able to order all the parts in 1 place. I do not make any money from you purchasing from any of these retailers. There is no affiliate links and there is no sponsor here. This is simply what I used.
PCB Manufacturer: https://jlcpcb.com/
Kalih Mx Hotswap Sockets: https://cannonkeys.com/products/kailh-mx-hotswap-sockets (This is required if you are soldering them on yourself. I recommend this as JLC did not have them in stock when I ordered my pcb and I have experience with soldering)
1.6mm pcb thickness screw in stablizers: https://cannonkeys.com/products/tx-screw-in-stabilizers (At the time of writing this, these are sold out. You can go with any screw in 1.6mm pcb stablizers)
Switches: https://cannonkeys.com/products/gateron-sea-salt-smoothie-linear-switch (You do need 84 switches at least. These come in packs of 36 so u need a total of 3 packs. I recommend ordering any switch you like, these are what I liked and ended up using)
Micro Controller Socket Headers: https://www.adafruit.com/product/5583
Keycaps: https://cannonkeys.com/products/basics-by-nicepbt (These are a cheap set of white on black keycaps. Once again you can order any set you like. Note you need a 7U spacebar. Alot of cheap keycap sets do not include this however this set does and should work fine)
Screws: 3M x 10mm (5 total) (I do not know exact size length but these should work I will update this later with a more accurate size length)
Micro Controller: Note: any rp2040 board with the same form factor and pinout should work. I have listed 2 that I have tested and both work with this build.
This Contoller is considered a "clone" of the pi pico. It comes in a pack of 3, featuring usbc and a nearly identical pinout (its the same for our purposes) I opted for this board for the usbc connector instead of the normal micro usb connector. It uses the official rp2040 and is still an rp2040. Note to get the rgb led to work you need to bridge the rs8 pad. I can show this when i do a complete build video https://www.amazon.com/RP2040-Board-Type-C-Raspberry-Micropython/dp/B0CG9FWDDC?th=1
This controller is the official pi pico. You can find this at many retails, however you have to ensure you are getting one with eithe headers pre soldered or loose where you can solder yourself. The link below is presoldered but has options for either. You https://www.adafruit.com/product/5525
Optional Stuff:
3M Nuts: Incase u want the screws to go into the nuts, I recommend this as the pla standoffs can be brittle
Soldering Iron + Solder (You can get the components soldered on at jlcpcb but if you opt to do any soldering yourself you will need these. I used the pincil with lead free solder)
Polyimide Tape: https://www.adafruit.com/product/3057 If you end up soldering yourself this can help hold things in place.
3d Printer: The case and top plate were 3d printed with pla. You can use other materials and get this made by a manufactuerer like jlcpcb, however if you want to make it at home you will need access to a printer.
I used joe scotto's video to help learn kicad: https://www.youtube.com/watch?v=8WXpGTIbxlQ