Blueprint

split keeb!

folowing the guide for the split keeb for my first blueprint project, but adding a built in usb hub and haptic feedback

Created by Eshaan Eshaan πŸš€

Tier 3

289 views

0 followers

Timeline

Eshaan Eshaan πŸš€ added to the journal ago

Finished the keyboard πŸ”₯

I js need to do the usb hub now, but I ordered the wrong type of usbc, and only one of the two chips, so I can’t really make the usb hub

The keyboard itself works great tho IMG_5627

Eshaan Eshaan πŸš€ added to the journal ago

finished right hand side firmware

this was fast since was just changing the keymaps on the reciever for the right side

i finished right hand side firmware

image

since when i routed the keyboard, i connected the data lines on the left and right sides, i was able to test the right side with buttons from the left. When I solder the right side, I'll break the traces, so the halves are independent. This was useful for debugging but if i dont remove it then a button on the left will connect to the right, leading to misinputs

Eshaan Eshaan πŸš€ added to the journal ago

finished soldering the left half

soldering the tiny diodes takes forever :crying emoji:

i finished and tested all 25 keys on the left hand side

next, ill copy the left firmware and remap it for the right hand side

the keycaps are printing rn

the solder fumes were giving me a headache so i grabbed a fan lmao

WIN_20251103_14_10_10_Pro

Eshaan Eshaan πŸš€ added to the journal ago

FIRMWARE WORKS OMG

this took way too long lmao

i ended up redoing the esp side, and switching back to python from cpp (ik cpp better but it was messing with me so python it is)

the two keys i have soldered up work now lets goooo

image

now to solder the rest of the keys lmao

Eshaan Eshaan πŸš€ added to the journal ago

roundabout solution

spent a few hours and i came up with a new working solution. since the esp32c3 doesnt support usbhid, it sends data over serial, and a recieving python program in the host interprets the serial and emulates the keyb

image

arduino ide also gave up so i ended up using esptool to flash binaries instead
image

still a work in progress. python works but esp still doesnt

Eshaan Eshaan πŸš€ added to the journal ago

switched to a new approach

stayed up even later bc i felt like it and decided to split between a sender python file (switched to micropython from curcutpyton as well) and a reciever file on the computer, because i accedentally bought the wrong esp version, the only one that doesnt suport HS HID, so its just sending keystorkes over serial, and the python program on the computer will interpret it and emulate the keyboard. its janky and i dont like it but it should work ... its really late now, the lsitener is working, i jsut need to solder up more keys

image

Eshaan Eshaan πŸš€ added to the journal ago

firmware is messing with my head

First, the board's boot partition is corrupted, so it wouldn't stay initialized long enough to flash software. Then the libraries on the board stopped working, so I spent a while debugging. Finally, Mcaffe (not my choice, it's bloatware but I have to use it) decided that now was the time to scan the entirety of my SSD and use all my RAM and CPU, so my system took 15 minutes to build a file. Then, it turns out the esp32 doesnt have the capabillity to emulate usb drives, so i had to mess with that, then i spent time messing with libraries because none of the ones i found were recognised nor compatible with the version of curcuitpython i was running which didnt have the usb libraries in it. I then was able to get come keys regonised by the board, and the bluetooth to connect, but unable to get the two sections to interact. i then has issues with memory, as my libraries were large compared to the amount of free space, so i had to mess around with compression and othter optimizaiton techniques to stil have enough memory to run the bluetooth alg. This led to installing WSL and linux vm, and i just gave up at that point because its late. ill try again at compiling fw in the morningimage

Eshaan Eshaan πŸš€ added to the journal ago

Started working on assembling

Soldered on the first 11 keys and corresponding diodes, as well as the first seed studio. This took an hour, and I have to go do homework now 😭 I wish I had enough time to just do the whole thing it was so much fun to SMD for the first timeIMG_5506
IMG_5505IMG_5507

pj pj πŸš€ gave kudos to split keeb! ago

This is so cool! I would've never though to add a usb-c hub and haptics in a keyboard.

CAN CAN βš‘πŸš€ approved split keeb! ago

Tier approved: 3

Grant approved: $97.00

Eshaan Eshaan πŸš€ submitted split keeb! for review ago

Eshaan Eshaan πŸš€ added to the journal ago

finished BOM and wrapped up project

I went through and reviewed the pcb, reread the FW, and found all my parts on aliexpress, and wrote the final BOM. The PCBWAY quote was also approved.
aliexpress screenshot with everything:image.png

Total is under 100!
(the pcb was verry expensive so i opted to 3d print keycaps and self source some parts from things i already had to reduce cost)

Eshaan Eshaan πŸš€ added to the journal ago

wrote the readme and organised the files

image.png
I went ahead and wrote the README, including links to the CAD models, PCBs, etc., alongside a description of what's special about this keyboard and how the firmware works (KMK). Short devlog today. Listened to music from FF and Ori and the Will of the Wisps :)
image.png

Eshaan Eshaan πŸš€ added to the journal ago

firmware :)

The firmware went a lot faster this time, now that I have experience from my Macropad, but the longest time will be debugging this thing once it arrives (that took so long on the Macropad)
I made two files, left and right.py, in KMK that I can flash to the two seed studios
Each file has a hardcoded map from the rows/collumns to the keys
Also found a missing via in the PCB while looking at it, so I fixed that lmao
image.png

Eshaan Eshaan πŸš€ added to the journal ago

worked on CAD for the case

this took way too long lmao
I worked on this throughout the school day (thanks to my Spanish/bio teachers, the goat)
Added a cool design to the top, picked switches, 5 degree slope, and make it look cool
Also, onshape bugged out when I imported my PCB bc for some reason, each copper trace was its own object [insert crying emoji here]
played Silksong OST while working today :)
This is the top plate:
image.png
this is the full cad
image.png
This is the timer lmaoimage.png

Eshaan Eshaan πŸš€ added to the journal ago

fixed pcb errors

PCBway sent some feedback on the PCB, so I went ahead and incorporated that into the design
image.png
They wanted me to move the USBC pads further from the edge of the board and to check the clearances between the pads of the IC. I've made changes and resent the Gerbers. I'll finish up the programming and CAD, then submit :)

Eshaan Eshaan πŸš€ added to the journal ago

finished routing, added the back Silkscreen, fixed DRC

image.png
I finished the leftover routing, added some images to the back silkscreen, and went through the DRC errors. There are still some problems with the USB-C port's clearance, but otherwise, the PCB is almost done. I'll try to get the Cad and FW done this week so I can wrap up and submit on Sat. PCB way says ~54$ for the pcb.
image.png
image.png

Eshaan Eshaan πŸš€ added to the journal ago

worked on routing the pcb

image.png
This took much longer than I expected, but it was lots of fun. I started by organising all the components on the PCB, which took about an hour on its own. I then routed the processors on top for about an hour, and, lastly, routed the keys for the last hour. All I have left to route are the ~20 traces going between the halves of the board. I'm quite happy I was able to keep this to two layers. I thought I'd have to bump it up to three for the areas around the USB hub's IC. It's messy, but I think it'll work
image.png
P.S. Skyward Sword music is great too
can't wait to type on the new keeb

Eshaan Eshaan πŸš€ added to the journal ago

assigned footprints, fixed electrical rules checker errors

image.png
image.png
I fixed the ERC errors by adding no connect flags to the unused pins, I assigned the footprints for all the components, and initialized the PCB with all the components. I also forgot to add the mounting holes and mousebites to the last commit, so I added those as well. Next commit will be routing all the components, then full CAD, then firmware (looking to use KMK as that's what I used for the Macropad)
image.png
Note: Game of Thrones OST is great for PCB work :), Celeste is good too (used that last commit)
ps. I always include the Windows Stopwatch screenshot as proof of how long I spent working on each commit

Eshaan Eshaan πŸš€ added to the journal ago

finished the schematic

image.png
image.png
Set up the project, added the key matrix and seedstudio, and got them added to the schematic [1hr]
Researched how to make a USB hub, how the USB protocol worked, chose this IC, added a USB-C upstream, and two USB-A downstream [1hr 45min]
Had a lot of fun starting a larger project: my only other real experience with PCBs was the Macropad from Highway (which was also fun). I'm now looking to work on routing, then CAD

Eshaan Eshaan πŸš€ started split keeb! ago