Science, Science and Society, Technology

Cyborging aimee

UPDATE: moar pics here, here and here.

As mentioned, I broke my wrist a few weeks ago.

aimee aap
please note: I am _directly_ plugged into a computer here. * happy sigh *

Which caused me no small amount of unhappiness, given that I was soon to be travelling to the San Francisco Bay Area to, well, get my geek on :)

Thankfully, I am surrounded by other geeks, with strange and mysterious powers, and it was one of these that suggested that we cyborg me.  Because what else would one possibly do with a cast, right?

(Funnily enough, I’ve now had friends commenting on wishing they were casted up, so that they could attach circuitry to themselves :P  Further, I am wondering whether this might be the first time this has been done…)

And, even better, I would then be able to attend the SF MakerFaire thus modified.  There’s a quick video, taken there, of aap running.

For those of you interested in exactly what was done to me, I’ve had its designer/maker, Josh Bailey, explain below:

—————————-

Aimee broke her wrist. What to do? Make use of the newly available inanimate surface area, of course. Behold the Aimee Arm Processor, recently modelled by Aimee at the San Francisco Bay Area Maker Faire.

Arduino’s [1] all the rage, and most other microcontrollers are merely players. Back in my day we had to LDA, STA uphill both ways through zero page, bank switching all the way [2], but with Arduino many things are embarrassingly easy. Aimee and I had been discussing cellular automata recently [3], and it was not too much of a challenge to find an Arduino board with sufficient guts to drive an LED matrix [4] (on rechargeable battery even).

Sparkfun.com indeed. I ordered an Arduino Pro 328 (3.3V, 8MHz model), 8×8 LED matrix, and an 850mAh battery - the latter about the dimensions of a matchbook, and quite happily runs AAP for almost a week.

Low parts count was a specific design goal, so I went with the direct drive approach [5] - the LED matrix is directly connected to the processor’s I/O pins, and the magic is done in software (i.e. patterns are raster scanned [6] onto to the LEDs so only one row is actually lit at once, but you see more than than due to persistence of vision [7] - maybe Aimee will let me write something about narrow bandwidth mechanical TV [8] sometime - oops distracted). It is possible to drive multiple LED matrices but that would’ve added parts - though one imagines we could’ve broken Aimee’s other arm for more real estate. One imagines.

After a virtuous amount of soldering, swearing, and scorching myself with hot glue the pieces came together (I used an old Ethernet cable and some spare resistors). Sparkfun’s data sheets were incorrect, so had to do some reverse engineering to determine actually which pins controlled what rows/columns. A minor thing but always adds to one’s sense of accomplishment.

And the code? Well, I wrote my own and it is available on request; much example Conway/Arduino code uses interrupts [9] (implementing a convenient background task that updates the display for you) and copies 2D arrays back and forth (not particularly CPU efficient). Most Arduino processors have more than enough CPU for that - but I went with the interleaved, swap pointers for frame buffers approach [10]. More complex but seemed true to my 8 bit roots [11].

Footnotes:

1. Ardunio - a bewilderingly awesome open source gem of hardware and software that makes it easy to build things that do anything from blink lights to fly unmanned aerial vehicles

2. My first computer of was a C64 - STA/LDA are 6502/6510 machine language instructions

3. So called artifical life - cells that live or die, by a small number of logical rules, generally within a 2 dimensional space - like Conway’s Game of Life

4. LED matrix - a grid of light emitting diodes, essentially efficient light bulbs that can be switched on or off to create images

5.  The direct drive approach

6. Raster scanning - in this context, building up a picture by drawing successive lines of pixels

7. The effect thought to be behind why humans perceive motion from rapidly presented images, called Persistence of Vision

8. Mechanical TV - or so called Narrow Bandwidth Television. Using a spinning disc or mirror to draw a picture

9. Interrupt - a way for hardware or software to grab a processor’s attention for something and then return it to where it left off.

10. Frame buffer - in this context, an area of memory used to describe which LEDs should be on or off

11. I’m old, another reference to C64s.

—————————-

So yeah.  That’s how it’s done, peeps.  Stay tuned for other such techie tales :P  Also, an interesting notion: using the Conway Glider as an emblem for hackers…

[oh, and P.S. I figured out what was causing issues with comments section, so feel free to comment in the knowledge that it will not disappear]