keyboard-lowprofile
Low profile, per-key gpio keyboard with per-key led backlight!
Created by
emb3rcia
Tier 3
4 views
0 followers
samliu ⚡🚀
approved keyboard-lowprofile ago
Tier approved: 3
Grant approved: $103.00
Pretty cool! I'd recommend adding rounded corners onto the case so it's more user friendly! Approved.
emb3rcia
submitted keyboard-lowprofile for ship review ago
emb3rcia
added to the journal ago
Made 3d case
I made 3D case! It took me about 3 hours. Well... not including time i spent trying to run fusion 360 on linux, on VMs, then installing windows on second drive, installing drivers etc. With this it is closer to 10 hours. I made screw standoffs, 2mm holes in bottom plate, 2.2 in top plate, 2.2 in pcb. Will use m2x12 screws from aliexpress to do this. Now i am going to make README.md and update BOM.csv to include screws.

I was informed of needing to add something more to this journal, so here we go:
Main problem wasn't 3D printing but fusion and windows. VM freezed fusion before launch and wine didnt update the component list. So i double booted windows on HDD (i am not rich, okay XD?) and it worked well. It was monotonous, but straightforward. Extrude from pcb, make 0.3mm space on every inner wall, extrude downwards, make bottom. Then i just made sketch out of PCB component's face and extruded screw holes down to bottom of the case, then push-pulled it and used shell option to hollow it out and repeated for every screw hole. Top case was a bit more difficult. I ended up using (keeb.io site)[https://plate.keeb.io] to generate top plate for my layout and made 1.6 extrude from pcb, then cutout out of the DXF provided by site. I also needed to manually change where the spacebar stabs cutout is, as it was wrong size by default without option to change. It was a bit of tinkering, but i did it. Then i just made the "roof" above the components that is also usb-c ports cutout and tadaaa we have it. But it is too big for most 3d printers, so i made hollowing in one part, and extension in other that will act as guidance for plate when i hotglue it together. I was supposed to add photos here, but i dont know if it is needed cuz everything i described instead, and i dont have video/photos during the modeling, only after. So i am sorry about that. I hope this journal entry is better, have a nice day/night reviewer and readers!
Tanuki ⚡🚀
requested changes for keyboard-lowprofile ago
Hey! I cant see the BOM.csv. Id also appreciate if you could add more documentation in the journaling on the case! Please check out https://blueprint.hackclub.com/about/submission-guidelines, and ping me if you have any questions in #blueprint-drafts!
emb3rcia
submitted keyboard-lowprofile for ship review ago
emb3rcia
added to the journal ago
Made firmware
I made firmware! Its my de facto first more coplicated stm32 project, so I made it with help of AI. But like I said, with help of AI, not using only AI. I asked what do I need in some function, why etc and they explained to me in simple terms like i asked and then i made code, they said if it would work, if yes I moved to next thing in firmware, if not they explained why this won't work and what to change (I told them to not give me drop in code). Tada! It is untested cuz I don't have the keyboard yet, but will test it when I get it.

emb3rcia
added to the journal ago
Made 3d case
I made 3D case! It took me about 3 hours. Well... not including time i spent trying to run fusion 360 on linux, on VMs, then installing windows on second drive, installing drivers etc. With this it is closer to 10 hours. I made screw standoffs, 2mm holes in bottom plate, 2.2 in top plate, 2.2 in pcb. Will use m2x12 screws from aliexpress to do this. Now i am going to make README.md and update BOM.csv to include screws.

emb3rcia
added to the journal ago
Routed last switches, added stabilizers and mounting holes
I routed last few switches, so this version of pcb is final! I abused via's. Next time i dont try to do unique keyboard via per-key gpio. I will do normal matrix lol. It was a nightmare to route this. I also added stabilizers and distributed mounting holes, now i will do BOM and then design 3d case for it. Also changed connection on some pins for easier routing



emb3rcia
added to the journal ago
Added second port and rerouted switches


I added second port that will be connected to power and will power the LED's due to limitations of max current output of PC ports. MCU and everything else will be powered by main port. I also routed 70 something switches and rerouted the already routed one. I searched some tips for routing and also chose smallest trace size JLCPCB offers. Result? In the photo.
emb3rcia
added to the journal ago
Wired changes in schematic and sterted wiring the pcb!


Connected the changes in schematic in 100%! Resigned from boot button for simply shorting the boot0 pin to gnd as it isnt very complex solution and saves me space in LP keyboard. Also connected everything except switches on pcb (well, i did 27 of them). Tomorrow i will connect the rest of switches and rn i will make prototype firmware!
emb3rcia
added to the journal ago
Wired schematic entirely

This is current schematic. I changed MCU again to one that is available to buy on lcsc, also it has smaller footprint. Changed level regulator, i think it will work. With searching parts it was like 2.5-3 hours Now i will wire the pcb
emb3rcia
added to the journal ago
journal from journal.txt
29/1/2026 12:22AM
Cant sleep so i decided to make keyboard. LP one, full n-key rollover, mechanical tactile switches, per key - not diode matrix, per key A-RGB LED etc.
2:00PM
I went to sleep after like 20 minutes, right now i am going to do the keyboard schematic. Switches are normal kalih choc v2, per key connection via gpio expanders, non hotswap.
4:43PM
for past like 2 hours i try to find adequate battery protector, fuel gauge, and charger with power path. Diodes are connected on schematic. Now i want to take battery into account so i am searching.
5:14PM
I've decided to make it wired, without wireless like i originally wanted. Wireless makes it much more complicated, which isnt as bad but it makes it much more expensive (battery, PMIC, different voltages etc), theres no use in my opinion.
5:57PM
Found every part i want to use i think, resigned from gpio expanders in favor of mcu in HDQFP-172 package, as it is cheaper.
6:20PM
Searching for another mcu, this one doesnt have public pinout.
6:35PM
Found MCU, now connecting everything together!
9:25PM
Forgot to journal this, but did everything on schematic! Also rn ended lining up switches on pcb, going to connect everything on pcb now!
11:23PM
Did some wiring, now changing project to laptop!
30/1/2026 3:12AM
Came back as i cant sleep. Changed mcu to one that supports crystal-less mode.
Point from where i start right now:

emb3rcia
started keyboard-lowprofile ago
2/3/2026 5 AM - journal from journal.txt
29/1/2026 12:22AM
Cant sleep so i decided to make keyboard. LP one, full n-key rollover, mechanical tactile switches, per key - not diode matrix, per key A-RGB LED etc.
2:00PM
I went to sleep after like 20 minutes, right now i am going to do the keyboard schematic. Switches are normal kalih choc v2, per key connection via gpio expanders, non hotswap.
4:43PM
for past like 2 hours i try to find adequate battery protector, fuel gauge, and charger with power path. Diodes are connected on schematic. Now i want to take battery into account so i am searching.
5:14PM
I've decided to make it wired, without wireless like i originally wanted. Wireless makes it much more complicated, which isnt as bad but it makes it much more expensive (battery, PMIC, different voltages etc), theres no use in my opinion.
5:57PM
Found every part i want to use i think, resigned from gpio expanders in favor of mcu in HDQFP-172 package, as it is cheaper.
6:20PM
Searching for another mcu, this one doesnt have public pinout.
6:35PM
Found MCU, now connecting everything together!
9:25PM
Forgot to journal this, but did everything on schematic! Also rn ended lining up switches on pcb, going to connect everything on pcb now!
11:23PM
Did some wiring, now changing project to laptop!
30/1/2026 3:12AM
Came back as i cant sleep. Changed mcu to one that supports crystal-less mode.
Point from where i start right now:

2/3/2026 7 PM - Wired schematic entirely

This is current schematic. I changed MCU again to one that is available to buy on lcsc, also it has smaller footprint. Changed level regulator, i think it will work. With searching parts it was like 2.5-3 hours Now i will wire the pcb
2/4/2026 - Wired changes in schematic and sterted wiring the pcb!


Connected the changes in schematic in 100%! Resigned from boot button for simply shorting the boot0 pin to gnd as it isnt very complex solution and saves me space in LP keyboard. Also connected everything except switches on pcb (well, i did 27 of them). Tomorrow i will connect the rest of switches and rn i will make prototype firmware!
2/5/2026 - Added second port and rerouted switches


I added second port that will be connected to power and will power the LED's due to limitations of max current output of PC ports. MCU and everything else will be powered by main port. I also routed 70 something switches and rerouted the already routed one. I searched some tips for routing and also chose smallest trace size JLCPCB offers. Result? In the photo.
2/11/2026 - Routed last switches, added stabilizers and mounting holes
I routed last few switches, so this version of pcb is final! I abused via's. Next time i dont try to do unique keyboard via per-key gpio. I will do normal matrix lol. It was a nightmare to route this. I also added stabilizers and distributed mounting holes, now i will do BOM and then design 3d case for it. Also changed connection on some pins for easier routing



2/14/2026 2 PM - Made 3d case
I made 3D case! It took me about 3 hours. Well... not including time i spent trying to run fusion 360 on linux, on VMs, then installing windows on second drive, installing drivers etc. With this it is closer to 10 hours. I made screw standoffs, 2mm holes in bottom plate, 2.2 in top plate, 2.2 in pcb. Will use m2x12 screws from aliexpress to do this. Now i am going to make README.md and update BOM.csv to include screws.

2/14/2026 8 PM - Made firmware
I made firmware! Its my de facto first more coplicated stm32 project, so I made it with help of AI. But like I said, with help of AI, not using only AI. I asked what do I need in some function, why etc and they explained to me in simple terms like i asked and then i made code, they said if it would work, if yes I moved to next thing in firmware, if not they explained why this won't work and what to change (I told them to not give me drop in code). Tada! It is untested cuz I don't have the keyboard yet, but will test it when I get it.

2/22/2026 - Made 3d case
I made 3D case! It took me about 3 hours. Well... not including time i spent trying to run fusion 360 on linux, on VMs, then installing windows on second drive, installing drivers etc. With this it is closer to 10 hours. I made screw standoffs, 2mm holes in bottom plate, 2.2 in top plate, 2.2 in pcb. Will use m2x12 screws from aliexpress to do this. Now i am going to make README.md and update BOM.csv to include screws.

I was informed of needing to add something more to this journal, so here we go:
Main problem wasn't 3D printing but fusion and windows. VM freezed fusion before launch and wine didnt update the component list. So i double booted windows on HDD (i am not rich, okay XD?) and it worked well. It was monotonous, but straightforward. Extrude from pcb, make 0.3mm space on every inner wall, extrude downwards, make bottom. Then i just made sketch out of PCB component's face and extruded screw holes down to bottom of the case, then push-pulled it and used shell option to hollow it out and repeated for every screw hole. Top case was a bit more difficult. I ended up using (keeb.io site)[https://plate.keeb.io] to generate top plate for my layout and made 1.6 extrude from pcb, then cutout out of the DXF provided by site. I also needed to manually change where the spacebar stabs cutout is, as it was wrong size by default without option to change. It was a bit of tinkering, but i did it. Then i just made the "roof" above the components that is also usb-c ports cutout and tadaaa we have it. But it is too big for most 3d printers, so i made hollowing in one part, and extension in other that will act as guidance for plate when i hotglue it together. I was supposed to add photos here, but i dont know if it is needed cuz everything i described instead, and i dont have video/photos during the modeling, only after. So i am sorry about that. I hope this journal entry is better, have a nice day/night reviewer and readers!