inspired by @deshipu 's kleks 2.0
https://hackaday.io/project/182998-kleks-keyboard
thinking about a column-staggered, one-piece split keyboard, designed for the super-cheap 100x100mm proto-pack offering from various PCB manufacturers
https://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
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)
🤔 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
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
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 https://www.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