A funny story about multi sourcing components and the importance of testing before shipping!
I used a supplier on Aliexpress to purchase a few thousand switches in a few orders over a few months but their prices went up quite drastically after the last order (doubled!!) they weren’t the cheapest to start with but were reliable and friendly, worth the extra ££
I found another supplier who did a good deal for a full bag of 4000! Ordered them and waited, very quick delivery and friendly also (will buy again!)
I built my first test new keyboard with the new PCB and switches
It didn’t work. Well, actually, it did! Work perfectly…but in reverse :-p …..
If you mashed every key simultaneously then only released the key you want to press….it worked!! Yeah, the supplier sent me 4000 ‘inverted’ switches! My fault for not checking prior to ordering, they ‘look the same’ so ‘must be the same’ was a wrong assumption on my part! (At least they all weren’t the shift lock type!!)
It’s a VERY easy fix though (found after several panicked hours of testing and building Keyboards)…rotate the switch 180 degrees and it’s perfect!
In each kit I’ve included a small errata note and list of basic instructions to help. It’s an annoyance but for you guys it really just means the silk screen doesn’t quite match the switch orientation so just ask first. Look at the pictures and of any doubt, email/messenger/twitter/Reddit me 🙂
It’s taking way too long, but I think I now have the lettering ‘just right’ – at least on the screen.
This was printed a bit too hastily at 0.08mm layer height on an Ender 3 printer. I’d used a brand new roll of untested filament and didn’t bother changing any settings. – it’s dimensionally ‘spot on’..
I’ve purchased a 0.2mm nozzle for my next trial , it’ll take ages but i’m hoping that those fine details on the characters come out a little better.
Why it’s taking so long……..
I’m learning as I go. I’m ‘tracing’ letters i’m finding on the net, creating them as a new sketch along the whole rows. There’s 4 differently angled rows so each needs to be extruded in a different direction to ‘cut’ the key.
This first run matches the C64 keyboard font as close as I can get. I’ll then ‘archive’ this layout for future use and create a second ‘3D print’ version.
This version will forgo the accuracy of the font and make features much wider, more rounded to allow the characters to come out better once 3D printed. The complex ones like ‘run stop’ won’t ever come out great on a standard filament printer, but the letters already come out pretty good…that’s a win for me!
The full keyboard is above – and you can see part of one of the adaptors i’m designing to click them onto the keyswitches. each keycap is hollow. that small grey part will sit inside the keycap
And finally – part of what’s taking so long.
Each key/character is taking on average about 1/2 an hour to an hour to design. Lets say 45 minutes.
65 keys to label
That’s a LOT of minutes…and i’m only getting an hour or two every few nights – a good solid weekend ‘free’ would be great and have this sorted.
On top of that labelling (which is now finished) I have to try to make each letter more legible and easier to 3D print. Generally that means ‘bevels’ everywhere – you can see above that i’ve done ‘Run Stop’ and ‘Shift Lock’ but SHIFT is still to do….it’s not as easy either as ‘copy, paste’ the Shift from Shift lock – that’s a different sized font on a different sketch plane.
Just one example of the issues I’m seeing…The Letter B
The Letter B above has an issue with the geometry – just by the 0.1 – there’s a part internally up towards the arrow that shouldn’t be there – that’ll could play havoc with a slicer when set to really small layer heights
But, the Fillet also creates a zero thickness surface which looks unsightly and will probably cause issues if I don’t correct it now
So, Back to the sketch
As you can see, i’ve kept the characters with few (if any) constraints. this way has been easier to freehand and eyeball as I can drag stuff around till it looks right by ‘locking and unlocking’ lines. most constraints used to create right angles, etc have been removed after to help with the process of making it 3D
Anyways, the ‘issue’ with the fillet seems to be around the place where the two control point splines meet – i’ve highlighted one in blue above.
I re-coincide each spline (have found deleting and un-deleting works, as well as hitting coincident )
That change should hopefully roll back up the timeline to allow me to make the fillet work.
To Create the key lettering I the character by 1mm elsewhere in my workspace, then move it to over the key.
Then extrude the face of the character into the key and ‘cut’ ….
this may seem odd, but it’s a really quick and easy way of consistently creating cutouts on a row of keys and making quick changes later.
That didn’t work, so, jump into surface mode – delete the entire inner arc of the B. Re-create the arc as a ‘patch’. Stitch together the lower part of the B. Then stich the whole keycap, then re-apply fillet and…..Voila…..3/4 an hour later, one filleted B…And a learned workflow if the same thing happens on another key!
Note, as-is, the keyboard fonts are a bit innacurate. I’ve sized everything based upon the smallest characters that need to fit – i.e. run stop, etc. The individual letters could be bigger – but any bigger and they’d look too big compared to those……….
DFM – Design for manufacture.
Just because you design a 3x2mm hole, doesn’t mean it’ll print at 3×2. Generally Filament printers do outer perimeters a little larger, inner perimeters a little smaller. The first few tests i’ve done now prove this. so, After a few months of ‘out of the box working’ on my Ender, I’ve finally gotta bite the bullet and calibrate it. The plan is to create an offset in the CAD file so that I still design the holes accurately based on measurement, BUT, can add a accurate ‘calibration figure’ Fudge figure to make them a little larger or smaller as necessary.
Right now my Printer is doing slightly oval prints – which should be easy enough to sort out if my D9 Adventures were anything to go by
Now waiting on enough Arduino Pro micros and switches to start making kits up!
Each DIY kit will probably contain the following – i’ll firm up with pictures once i’m done test populating a rev2 board
70 Standard switches
70 Diodes – Through hole (possible SMT option also depending on price)
1 USB Hub
1 PCB – Rev 2 or later
1 USB cable
two small pieces of heatshrink tubing
a couple of pieces of wire
1 Arduino Pro micro – Pre-programmed with QMK firmware and custom Keymaps
a set of FDM – Filament printed keyswitches – These probably won’t be ‘perfect’ so i’ll be chucking them in as effective freebies as I won’t be releasing the keycaps as a digital file.
About that last part – I’ve spent countless hours on creating these keycaps, and still have more to go. I’ll eventually release them as a Digital file, but for now, you’ll be able to at least use the freebies to see if new keycaps are for you.
If you wanted a professionally printed set, i’ll be arranging something with a printing bureau somehow… It’s also likely i’ll be able to source reasonably costed SLA resin prints of these…watch this space
And for the money shots…….I’ve finished the top row of key text!
Now I’ve gotten the first row done, the next three should be significantly quicker.
The text is recessed into the key by about 0.4-0.6mm – between 2 and 6 layers of 3D print, not really enough to be clearly felt – but enough to be ‘seen’
After that, there’s the optimisation for printing – Filleting the edges – trialling depths and generally finding out what actually works, looks and feels good
After a few days, I’ve now got something workable – The switches being Thru-hole allow ease of routing on both the top and the bottom layers. I’ve named each switch and diode with the keyboard’s actual Symbol to make placing them on the PCB much easier. you’re seeing the results of a few days work (maybe about 4 hours all up) of starting from scratch on the design.
Next step will be aligning the PCB layout and spacing with the plastic buttons
I’ve done what I can based upon rough assumptions above – the top row of switches for example – its row of buttons ‘just’ fits within my calipers – so it’s about 151mm wide
The Shift Lock key looks a bit ‘odd’ as it just parallels up with the shift key.
I’ve thrown in some Debounce diodes also – because all the top mechanical keyboards have it, so why can’t I (no idea if this is a good idea yet, but easily removed before I get a PCB finalised) I’m not too worried about the Arduino bits yet – i’ll bolt on the decoding circuitry later – this is still just an excercise to see if it’s possible!
This isn’t the first version – The pic shows the newest footprint before I figured out the issue below
After creating my own custom SMT switch footprint / component and arranging the parts on the board – I hit a few snags – Have a look at the layout below…. you’ll see that the SMT legs just stick too far out
Easy enough, rotate every other switch so some are ‘up / down’ , some are ‘left / right’ with the pads.
That does fit – just, BUT, i’m going to have to cut a leg off 5 or more switches to stop them mechanically fouling and electrically shorting!……D’oh!, Possibly back to the drawing board with the switch choice?
The diodes i’ve chosen (for now) are a larger SOD123 package, about 2.6 x 1.5mm or so…one of the larger packages and I just happen to have a few in the shed (somewhere!)
The row of connectors on the right is just a generic 2.54mm space 20 way header. This’ll probably not be populated in my ‘final’ version that sits inside the Mini, BUT, i’ll leave the pads on the PCB so it could be turned into a genuine working C64 Keyboard 🙂