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 π
Tier 3
289 views
0 followers
Timeline
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 
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

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 π
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

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

now to solder the rest of the keys lmao
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

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

still a work in progress. python works but esp still doesnt
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

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 morning
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 time


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 β‘π
approved split keeb! ago
Tier approved: 3
Grant approved: $97.00
Eshaan π
submitted split keeb! for review ago
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:
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 π
added to the journal ago
wrote the readme and organised the files

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

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

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:

this is the full cad

This is the timer lmao
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

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 π
added to the journal ago
finished routing, added the back Silkscreen, fixed DRC

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.


Eshaan π
added to the journal ago
worked on routing the pcb

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

P.S. Skyward Sword music is great too
can't wait to type on the new keeb
Eshaan π
added to the journal ago
assigned footprints, fixed electrical rules checker errors


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)

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 π
added to the journal ago
finished the schematic


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 π
started split keeb! ago