building a keyboard from scratch
TRANSCRIPT
Building a keyboardfrom scratch Jesse Vincent
[email protected]://keyboard.io
@obra / @keyboardioWednesday, July 24, 13
Why?
Wednesday, July 24, 13
My boss stole my keyboard
Wednesday, July 24, 13
WARNING
WARNING
There are no more cat pictures in this talk
Wednesday, July 24, 13
I couldn’t find a keyboard I wanted
Wednesday, July 24, 13
I tried
Wednesday, July 24, 13
So, you want tomake a keyboard?
Wednesday, July 24, 13
Tools you’ll need
Wednesday, July 24, 13
SolderingIron
http://www.amazon.com/dp/B000BRC2XU
$5+ ($86)
Wednesday, July 24, 13
Wirecutter
$0.99
Wednesday, July 24, 13
Tools you’ll want
Wednesday, July 24, 13
Wirecutter
http://www.adafruit.com/products/147
$7
Wednesday, July 24, 13
Solder Sucker
http://www.adafruit.com/products/148$5
Wednesday, July 24, 13
Fine-tipped tweezers
http://www.adafruit.com/products/422
$4
Wednesday, July 24, 13
Wire-wrappingtool
http://www.amazon.com/dp/B006C43VJU
$13
Wednesday, July 24, 13
Multimeter
http://www.amazon.com/B000EVYGZA/
$20
Wednesday, July 24, 13
Hot Glue Gun
http://www.amazon.com/dp/B0009XTPAO
$20
Wednesday, July 24, 13
Parts you’ll need
Wednesday, July 24, 13
Keyswitches
Wednesday, July 24, 13
Cherry MXKeyswitches
http://www.cherrycorp.com/english/switches/key/mx.htm
$0.80/ea
Wednesday, July 24, 13
Key Caps
http://www.wasdkeyboards.com/87-key-cherry-mx-keycap-set.html
$37
Wednesday, July 24, 13
Don’t makeyour own
Wednesday, July 24, 13
Wednesday, July 24, 13
26-30AWGEnamel-insulatedmagnet wire
http://www.amazon.com/dp/B0082CUQEIWednesday, July 24, 13
Rosin-coreSolder
http://www.amazon.com/dp/B008DEYEAW
$6
Wednesday, July 24, 13
Teensy 2.0Microcontroller
http://www.pjrc.com/store/teensy.html
$16
Wednesday, July 24, 13
ArduinoPro Microis also ok
https://www.sparkfun.com/products/11098
$20
Wednesday, July 24, 13
WARNING
WARNING
There is no more Arduino in this talk
Wednesday, July 24, 13
MiniUSB cable
$0
Wednesday, July 24, 13
Parts you’ll want
Wednesday, July 24, 13
$9
http://www.amazon.com/dp/B006C4ABR0
26-30AWGKynar-insulatedwire-wrappingwire
Wednesday, July 24, 13
Jumper wires
http://www.adafruit.com/products/266
$7
Wednesday, July 24, 13
IN4148Diodes
$12...for 500
http://www.digikey.com/product-detail/en/1N4148-T/1N4148DICT-ND/160623Wednesday, July 24, 13
Parts you’ll make
Wednesday, July 24, 13
The case
Wednesday, July 24, 13
Design your own!
Wednesday, July 24, 13
14mm square holes
Wednesday, July 24, 13
3+ mm apart
Wednesday, July 24, 13
Top plate:1.5 mm thick
Wednesday, July 24, 13
I designed my first keyboards inOmniGraffle
Wednesday, July 24, 13
14mm
14mm3+mm
3+mm
Wednesday, July 24, 13
Prototypewith paper
Wednesday, July 24, 13
Use lasers to cut out the pieces
Wednesday, July 24, 13
Use CAD to model the weirderstuff
Wednesday, July 24, 13
openscadmodule key(x,y,rotation) { translate([(x*key_spacing),(y*key_spacing),-0.01]) { rotate(rotation) key_inner(); }}
module key_inner() { union() { translate([0,0,-3.5]) key_support(); cube(size=[keyswitch_x,keyswitch_y,keyswitch_plate_thickness], center=true); }}
module key_support() { difference() {
cube(size=[key_spacing-2,key_spacing-2,6], center=true); interior_bevels(); }}
Wednesday, July 24, 13
openscadmodule keyColumn(x,y) { translate([(x*key_spacing),(y*key_spacing),0]) { key(0,0); key(1,0); key(2,0); key(3,0); }}module hand() { rotate([0,0,-9]) keyColumn(0.5,-0.05); rotate([0,0,-13]) keyColumn(0.1,1.4); rotate([0,0,-15]) keyColumn(-0.2,2.7); rotate([0,0,-20]) { keyColumn(-0.2,4); keyColumn(0,5); key(2.2,6); key(3.2,6); } translate([165,24,0]) thumbKeys();}
Wednesday, July 24, 13
Wednesday, July 24, 13
What didn’t I mention?
Wednesday, July 24, 13
Printed Circuit Board
Wednesday, July 24, 13
You do know how to design and etch PCBs right?
Wednesday, July 24, 13
Can you teach me?
Wednesday, July 24, 13
Putting it together
Wednesday, July 24, 13
Try the keys & keycaps
Wednesday, July 24, 13
Start Soldering
Wednesday, July 24, 13
Flat pin:Connect Diode
Square pin: Connect wire
Wednesday, July 24, 13
Wire-wrap the keys in each row
Wednesday, July 24, 13
http://en.wikipedia.org/wiki/File:Wire_Wrapping.jpgWednesday, July 24, 13
Solder the diodes in columns
Wednesday, July 24, 13
Why Diodes?
Wednesday, July 24, 13
Key Ghosting
Wednesday, July 24, 13
Credit: @pdcawleyWednesday, July 24, 13
Credit: @pdcawleyWednesday, July 24, 13
Credit: @pdcawleyWednesday, July 24, 13
Credit: @pdcawleyWednesday, July 24, 13
then trim the terminal wires
Wednesday, July 24, 13
Connect them in parallel
Wednesday, July 24, 13
Connect the black ends to the keys
Wednesday, July 24, 13
Don’t solder the diodes to each other
Wednesday, July 24, 13
You want thewire-wrapping wire
Wednesday, July 24, 13
Solder a wire to each column
Wednesday, July 24, 13
Solder a wire to each row
Wednesday, July 24, 13
Connect those wires to the microcontroller
Wednesday, July 24, 13
Firmware
Wednesday, July 24, 13
Install avr-gcc
pjrc.com/teensy/gcc.html
Wednesday, July 24, 13
InstallTeensyLoader
pjrc.com/teensy/loader.html
Wednesday, July 24, 13
Configure some keyboard firmware
Wednesday, July 24, 13
github.com/humblehacker/keyboard
Wednesday, July 24, 13
% vi config.kspec
Wednesday, July 24, 13
Wednesday, July 24, 13
% make
Wednesday, July 24, 13
Wednesday, July 24, 13
Install your firmware
Wednesday, July 24, 13
Test your keyboard
Wednesday, July 24, 13
(This is why you want a multimeter)
Wednesday, July 24, 13
My experiences
Wednesday, July 24, 13
Mark 1 KeyboardWednesday, July 24, 13
shell from ergodox.org
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 2 Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 3 Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 4Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 5Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 6 Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 7 Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 8Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Mark 9 Keyboard
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
What have I learned?
Wednesday, July 24, 13
Hardware is not scary
Wednesday, July 24, 13
3D printers are almost there
Wednesday, July 24, 13
Iterating on hardwareisn’t much harder than iterating on software
Wednesday, July 24, 13
Patching hardware is a lot harder
Wednesday, July 24, 13
Patching hardwareis a lot more satisfying
Wednesday, July 24, 13
Keyboards don’t have to suck
Wednesday, July 24, 13
Make one
Wednesday, July 24, 13
...or nine
Wednesday, July 24, 13
What’s next?
Wednesday, July 24, 13
Figuring out a mousing solution
Wednesday, July 24, 13
Learning aboutPCB design
Wednesday, July 24, 13
Learning aboutcontract manufacturing
Wednesday, July 24, 13
Learning how to makea Kickstarter video
Wednesday, July 24, 13
Questions?
Wednesday, July 24, 13