inspired by @deshipu 's kleks 2.0

hackaday.io/project/182998-kle

thinking about a column-staggered, one-piece split keyboard, designed for the super-cheap 100x100mm proto-pack offering from various PCB manufacturers

dirtypcbs.com/store/pcbs/about

most of my keyboard designs don't get very far past the "noodling around in inkscape" phase, can i get this one all the way to physically existing?

actually, gradually, making some progress on this thing

i think it's going better than other attempts because i'm not trying to cram every single feature i can onto it

instead i'm going to break out all the pins to a set of socket headers so i can plug wires into it. combination keyboard and samd21 development module

also, designing this backwards, pcb-first, no schematic

tfw struggling with then finally figuring out this pcb design

•□•
...
• □ •

how did the circuituitous mess that i started with end up in this nice symmetrical regular pattern

(get it... circuit-uitous)
(wait is circuituitous really a word)
(oh no have i been pronouncing cir-cu-i-tous wrong for years, i can never return to this place)

woo, got all my netlabels and power rails worked out

next, usb connector, power regulator, some capacitors and i'll be able to reattempt the pcb layout

welp i accidentally a whole usb connector because i was too eager to see routing actually happen

but the routing happened, look at that massive 64 pin bus. and not done yet, gotta weave tracks from all the pins on the left into it somehow too

pretty excited though, i've never made it this far through the design of a pcb before!

getting closer, millimeter by millimeter, to completing my very first from-scratch keyboard pcb design

designed for prototype sizes means i should be able to get enough pcb to build 2.5 keyboards for $25-$35 including shipping

just noticed i swapped the pins on the switches so i have some rework to do here. qwiic i2c connector not yet routed either

did this whole thing in kicad

added m3 mounting holes, copper fill, cleaned up and added some silkscreen text/markings

took it to pcbway and pushed the button

10 copies makes two and a half keyboards

$5 prototype price
-$5 new customer coupon
$24 tax+shipping
------
$24 total

now to order the components and in ~10 days learn what kinds of silly circuit-smoking mistakes i made

(still, super excited i got this far)

#MechanicalKeyboard #PCB #kicad

🤔 actually creating this physical thing is taking the edge off my envy of cool artist and makerspace friends

🤔 this whole project has proceeded from "tinker and see how far i get," not a clear plan, it's not even got a page in my to-do wiki thing. maybe more of my projects would get done if i force an approach like that

🧠 open the pcb design program
👨 no it's done we just have to wait for it to get manufactured
🧠 but maybe we can push some traces around better
👨 it's out, sent, away. cease thinking about it. return to work
🧠 this schematic says we should have put another capacitor between +5v and gnd
👨 we can in the next version which is at least a month away now ignore this project at least until the parts arrive
🧠 let's go hit reload on the order tracker at least

🧠 the parts arrive today!
👨 can't do anything with them until we have the pcbs
🧠 the pcbs shipped today!!!
👨 from china, will take a week to get here, back to work now
🧠 nope all cores are currently dedicated to waiting at the mailbox

if i were assembling circuit boards i would simply solder the 64-pin qfn into place by hand with a hot iron

getting that hyperventilatey feeling where i've signed myself up for something challenging and i have no experience to prepare me for how difficult it will be and there's nothing really to be done for it so let's just throw myself into it, go all floppy and let it smash me around until i dribble out the other end

learning to solder impossibly tiny surface-mount ics should be the fun/rewarding flavor of challenging though, so it's a positive feeling, not that of an impending grueling slog

qfn64 docking complete captain!

not celebrating just yet but whew

likely too much solder on the pad, i think i saw beads peeking out the corners?
but continuity test says no, no shorts to ground, no bridged neighboring pins

did all the pins get connected? seems like it from inspection but not certain
did i overcook and kill the chip? won't know until i get more components on and try talking to it

almost missed the "sit-down," next time i'll intentionally misalign it

noticed one place i'll need a bodge wire but it's an easy fix, don't even have to use hair-thin magnet wire

i think i have enough bits here to give the finished prototype one or two oled displays, a speaker, a little cellphone vibrator, and maybe two indicator leds

so far, for one keyboard:
about $10 for the PCBs
about $3 for the microcontroller
about $2 for the passives
switches and caps not included

of course a bunch of overhead in shipping, solder, tools,
but still

i'm in pretty big trouble now for staying up too late but

i'm learning a skill, making a thing, pushing my boundaries, and feeling pretty great about it dammit 😎

converted my st-link v2 to a black magic probe and converted my flerps to blorps too why not

compiled the adafruit samd21 bootloader for the samd21j16b which wasn't previously supported by their makefile

loaded it over the serial wire debug using gdb remotely connecting to the code on the chip which seems pretty fricken awesome if i knew more about how to use it

not sure if it worked

ok time to plug in the usb cable and see if it smokes my desktop

... the led is on!

omfg look at this!!

i picked samd21j16b because it was one of the few -j- (64-pin) models in stock, probably due to the global chip shortage

256k / 64k <- samd21_18_
64k / 8k <- samd21_16_
32k / 2.5k <- atmega32u4

kleks uses the 18 variant
mine has a quarter the memory that it does
but mine's double what the atmega32u4 has, that runs many qmk boards

but whoops mine's too small for circuitpython so i can't just copy kleks firmware. speed bump

qmk does have hacky support for samd51j18a, maybe i can port it

on my long list of improvements for the next revision of this pcb: compatibility with several different microcontrollers and packages

i'm thinking reattempt using a key matrix so i can support micros with fewer pins,

combination QFN / TQFP footprints,

maybe a header that you plug a daughterboard into, to adapt to teensy, avr, stm32, raspi pico, whatever,

that you maybe had to scavenge out of found e-waste as the global chip shortage drags on decades longer than anyone expected

wow that rp2040 is $1, runs circuitpython, and is still well stocked, i think i'll design for that next

or the adafruit board made for keyboard building that uses it adafruit.com/product/5302

🤔 which would motivate me more?...

1. adding support to qmk for the samd21 and having all of qmk suddenly work on my keeb

or

2. learning rust embedded dev then using existing rust keyboard firmware libraries (keyberon, keytokey)

i have qmk experience already, a couple existing layouts with speaker and i2c oled screens

but i dislike c

vs.

rust embedded looks well designed, documented, and supports my chip!

and i really like rust

i wonder which is the quickest path to a working keyboard

while assembling my pcb, i used too much soldering flux, and it got all up inside the micro-b usb connector, such that it's now difficult to push a cable into it

how do i clean it out of there?

i've already tried dousing it in rubbing alcohol, brushing with q-tips, conductive brush, slices of paper and paper towel, nothing seems to do the job effectively enough

the main issue seems to be the very thin space between the tab on the interior of the socket and the shield

Follow

@pho4cexa Distilled water can be carefully used along with a soft bristle toothbrush. Just use it sparingly and don't let the water go anywhere else. Rinse it off with alcohol when done and let it dry completely.

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.