Blueprint

keyboard-lowprofile

Low profile, per-key gpio keyboard with per-key led backlight!

Created by emb3rcia emb3rcia

Tier 3

4 views

0 followers

samliu 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 emb3rcia submitted keyboard-lowprofile for ship review ago

emb3rcia 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.
case

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 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 emb3rcia submitted keyboard-lowprofile for ship review ago

emb3rcia 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.

image

emb3rcia 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.
case

emb3rcia 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
schematic
pcb
kicad-3d

emb3rcia emb3rcia added to the journal ago

Added second port and rerouted switches

Screenshot_20260205_201648

Schematic

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 emb3rcia added to the journal ago

Wired changes in schematic and sterted wiring the pcb!

Untitled
Screenshot_20260204_222001

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 emb3rcia added to the journal ago

Wired schematic entirely

image

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 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:
obraz

emb3rcia 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:
obraz

2/3/2026 7 PM - Wired schematic entirely

image

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!

Untitled
Screenshot_20260204_222001

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

Screenshot_20260205_201648

Schematic

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
schematic
pcb
kicad-3d

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.
case

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.

image

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.
case

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!