Differences between revisions 40 and 41
Revision 40 as of 2012-05-29 15:29:02
Size: 6799
Editor: fungi
Comment:
Revision 41 as of 2012-05-29 18:32:26
Size: 8420
Editor: fungi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 27: Line 27:
[[attachment:SpiffChorderPerfboardCircuit690x825.png|{{attachment:SpiffChorderPerfboardCircuit251x300.png|SpiffChorder perfboard circuit}}]] [[attachment:SpiffChorderPerfboardLayoutCircuit690x825.png|{{attachment:SpiffChorderPerfboardLayoutCircuit251x300.png|SpiffChorder perfboard circuit}}]]
Line 31: Line 31:
[[attachment:SpiffChorderPerfboardFront690x825.png|{{attachment:SpiffChorderPerfboardFront251x300.png|SpiffChorder perfboard front}}]]
[[attachment:SpiffChorderPerfboardBack690x825.png|{{attachment:SpiffChorderPerfboardBack251x300.png|SpiffChorder perfboard back}}]]
[[attachment:SpiffChorderPerfboardLayoutFront690x825.png|{{attachment:SpiffChorderPerfboardLayoutFront251x300.png|SpiffChorder perfboard front}}]]
[[attachment:SpiffChorderPerfboardLayoutBack690x825.png|{{attachment:SpiffChorderPerfboardLayoutBack251x300.png|SpiffChorder perfboard back}}]]
Line 34: Line 34:
I was going to try laying it out with [[http://fritzing.org/|Fritzing]], but got sidetracked when I couldn't find a resistor array in its parts library. Instead I wound up just sketching the layout on graph paper and transferring it into [[https://live.gnome.org/Dia|Dia]] by hand. [[attachment:spiffchorder.dia|Here's the multi-layer original from which the above graphics were exported.]] The same pathing could be used for a custom double-sided PCB, which I'll probably get around to making at some point. And here are photographs of the finished board for comparison:
Line 36: Line 36:
You'll notice this layout uses an 8-resistor array instead of Greg Priest-Dorman's 9x (to save on space). I also show couple of 3-resistor arrays (R5-7, R16-18)... Digikey has no such beast, but I bussed individual resistors mounted vertically using this ugly trick: [[attachment:SpiffChorderPerfboardFrontThumb.png|{{attachment:SpiffChorderPerfboardFront.png|SpiffChorder perfboard front}}]]
[[attachment:SpiffChorderPerfboardBackThumb.png|{{attachment:SpiffChorderPerfboardBack.png|SpiffChorder perfboard back}}]]
Line 38: Line 39:
I was going to try laying it out with [[http://fritzing.org/|Fritzing]], but got sidetracked when I couldn't find a resistor array in its parts library. Instead I wound up just sketching the layout on graph paper and transferring it into [[https://live.gnome.org/Dia|Dia]] by hand. [[attachment:spiffchorder.dia|Here's the multi-layer original from which the above graphics were exported.]] The same pathing could be used for a custom double-sided PCB, which I'll probably create before I build the next one since installing all those tiny traces without accidentally shorting any together was painfully time-consuming. You'll notice this layout uses an 8-resistor array instead of Greg Priest-Dorman's 9x (to save on space). I also show couple of 3-resistor arrays (R5-7, R16-18)... Digikey has no such beast, but I bussed individual resistors mounted vertically using this ugly trick:
Line 39: Line 41:
[[attachment:ThreeResistorBusThumb.png|{{attachment:ThreeResistorBus.png|three-resistor bus}}]]
Line 40: Line 43:
For further customization, I sourced Cherry MX Clears for the thumb buttons (instead of the suggested Blues) and appropriately-sized green, yellow and red LEDs for them. I also got a mini-USB-B connector and 5x 0.1" pitch through-hole 4-line right-angle screw terminals (these need a 2mm jeweler's screwdriver, Digikey 26022-ND) to connect leads for all the switches, LEDs and USB (CON2-4), and a keyed through-hole 2x3 right-angle shrouded header of the correct size for the USBtinyISP AVR Programmer (CON1)...

[[attachment:CherryMXClearsWithLEDsThumb.png|{{attachment:CherryMXClearsWithLEDs.png|Cherry MX Clears with LEDs}}]]
[[attachment:MiniUSBBConnectorThumb.png|{{attachment:MiniUSBBConnector.png|mini-USB-B connector}}]]
[[attachment:RightAngleScrewTerminalsThumb.png|{{attachment:RightAngleScrewTerminals.png|right-angle screw terminals}}]]
[[attachment:RightAngleShroudedHeader.png|{{attachment:RightAngleShroudedHeader.png|Cherry MX Clears with LEDs}}]]

A revised Digikey bill of materials including all the parts I used:

(BoM placeholder)
  • Man Machine, pseudo human being; Man Machine, super human being.

Kraftwerk, The Man-Machine (1978)


Chronicling fungi's steady descent into cyberpsychosis....

Septabmic Chording Keyer

Inspired by Greg Priest-Dorman's Chorder wiki, I'm building a handheld chorded keyboard based on Spaceman Spiff's Chording Keyboard Experiment (SpiffChorder) with some earlier influence from Steve Mann's septambic keyer. Photos and designs published in this section are licensed under the terms of the GPL (3.0), same as the SpiffChorder project itself (since they could be considered derivative works).

I picked up a USBtinyISP AVR Programmer Kit, Barebones AVR dev. board and 28-pin ZIF socket from Adafruit Industries on the theory that it would be easier to preprogram the Atmega168 on a dedicated target board. Unfortunately, I followed the SpiffChorder instructions slightly out of order and burned the external clocking fuse before writing the firmware, thus rendering the unclocked devboard useless... so instead I programmed the microcontroller in-circuit later once the 12MHz crystal and associated components were in place to clock it correctly.

I started on a solderless breadboard, shown below, but those really aren't suited for higher-frequency prototyping and so I was getting stray USB device resets at random (particularly if I inadvertently brushed the ground line while not grounding myself first). I used the components in Greg Priest-Dorman's Digikey bill of materials, including the suggested 9x pull-up resistor SIP array (even though I was only testing with 7 keys). I also chose poorly on a preformed bank of 3 yellow LEDs which were somewhat larger than I expected; their rather rigid leads weren't quite a multiple of 0.1" standard breadboard pitch, causing them to crack superficially upon insertion. I used Adafruit's excellent AVR ATmegaXX8 Pinout Stickers to more easily keep track of what I was connecting.

I hacked up an old telephone handset from my junk pile so I could have something vaguely ergonomic into which to mount the keys. Once I'd separated the front and back of the handset, I opened up tracks for the keys using a small cutting wheel on a Dremmel. Epoxy was added in a few places and sanded to get the tolerances just right. I ordered 7x Row 2, Size 1x1 Cherry MX Keycaps from WASD Keyboards and popped them onto the stems.

In an effort not to limit my capabilities with the keyer's software, I wanted to make sure whatever prototype I eventually built could double as a development board. To that end, I implemented all optional components of the SpiffChorder circuit (programming header, LEDs, pull-up resistors and screw terminals for all 8 chord keys and 3 modifier keys). I tried to keep the layout as compact as possible while still working on single-sided pad-per-hole perfboard, using entirely right-angle traces so as not to make stray contact with corners of square pads. It fits in a 17x21-hole grid including a ground bus all the way around the perimeter. Here's a top-down view showing the logical supply, ground and signal paths colored for easy identification:

This is the front showing just silkscreen markings and jumpers, as well as the traces on the back (mirrored for easier visual reference):

And here are photographs of the finished board for comparison:

I was going to try laying it out with Fritzing, but got sidetracked when I couldn't find a resistor array in its parts library. Instead I wound up just sketching the layout on graph paper and transferring it into Dia by hand. Here's the multi-layer original from which the above graphics were exported. The same pathing could be used for a custom double-sided PCB, which I'll probably create before I build the next one since installing all those tiny traces without accidentally shorting any together was painfully time-consuming. You'll notice this layout uses an 8-resistor array instead of Greg Priest-Dorman's 9x (to save on space). I also show couple of 3-resistor arrays (R5-7, R16-18)... Digikey has no such beast, but I bussed individual resistors mounted vertically using this ugly trick:

For further customization, I sourced Cherry MX Clears for the thumb buttons (instead of the suggested Blues) and appropriately-sized green, yellow and red LEDs for them. I also got a mini-USB-B connector and 5x 0.1" pitch through-hole 4-line right-angle screw terminals (these need a 2mm jeweler's screwdriver, Digikey 26022-ND) to connect leads for all the switches, LEDs and USB (CON2-4), and a keyed through-hole 2x3 right-angle shrouded header of the correct size for the USBtinyISP AVR Programmer (CON1)...

A revised Digikey bill of materials including all the parts I used:

(BoM placeholder)

Monocular Headmount Display

As I begin work on a wearable display, I'll flesh out this section. Here are some interesting links for components I'm considering:

Single-Board Wearable Computer

Right now I just go everywhere with an Asus Eee PC netbook running Debian GNU/Linux, but intend to transition soon to a low-power single-board computer. Some links for reference:

Portable Power Supply and Charger

Portable power will also be critical:

CCL: ManMachine (last edited 2015-04-26 19:16:13 by fungi)

CC0 To the extent possible under law, the creator of this work has waived all copyright and related or neighboring rights to it.