Prefiat
Our People
Our Work
Contact Us
 
 

The Cerebral Palsy Project

David onstage at Ignite Seattle 9

“I challenge a team of you to design a computing device that enables people with mild to moderate cerebral palsy to contribute to society in meaningful and productive ways.”—email from Shivum Agarwal, November, 2009

Cerebral palsy (CP) is a congenital (present at birth) neuromuscular disorder. The disorder affects approximately 0.5% of children born worldwide, with little variation in frequency over the child's birth nation, or mother's lifestyle. 80-90% of CP cases are spastic, characterized by higher-than-usual muscle rigidity, i.e., the inability to relax a contracted muscle. Symptoms vary: some cases affect only (arms and legs), while others affect just the legs, or occasionally, just the patient's two arms. CP patients are likely to encounter difficulty in the performance of tasks requiring fine motor control, such as typing, or operating small switches. [1]

Our Solution

Our requirement analysis yielded the following results:

We adapted Objective Development's HIDKeys to run on an Atmel ATMega88, and fabricated a custom through-hole PCB using Eagle and BatchPCB.

Making It

Making the board requires doing the following five things:

  1. Purchase a board from BatchPCB.
  2. Order the components from Digikey.
  3. Assemble the device.
  4. Program the ATMega88.
  5. Connect the switches.

Step 1: Purchase the board.

Raw PCB

To keep cost down, we sell the design through BatchPCB, a short-run board house operated by SparkFun.

Step 2: Order the components.

Order the following parts from Digikey (quantities are for one device):

PartDigikey Part NumberQuantity
12 MHz oscillatorX1100-ND1
27 pF oscillator cap1430PH-ND2
Power supply capP966-ND1
USB diode1N4148TACT-ND2
68 ohm resistorP68BACT-ND2
1.5k resistorP1.5KBACT-ND1
ATMega88PAATMEGA88PA-PU-ND1
USB receptacleED90064-ND1
Terminal blockA98338-ND3
ICSP header609-3334-ND1

Additionally, the project requires switches for connection to the user's body. These switches must be ordered separately, in addition to the parts listed in the table.

Step 3: Assemble the device.

Assembled Device

Insert the components into the board and solder them, taking note of the following:

Step 4: Program the device.

Programming the device requires avrdude and a working copy of GNU Make.

First, download the modified HIDKeys sources, either as a tarball from this site, or from the project's repository on Github.

Next, connect an AVR programmer to the board using the six-pin header located at the board's top left corner. We used a USBtinyISP. Be sure to line up pin 1 on the programmer's six-pin header (denoted by a red stripe on the ribbon cable) with the small “1” printed on the board.

Program the fuses and flash memory with the command “make fuse && make flash”. The “fuse” and “flash” targets in the Makefile are configured for a USBtinyISP; using a different programmer will require revising the Makefile.

Step 5: Connect the switches.

Connect the switches to the board using the three terminal blocks. The left terminal block is a common ground for all switches; the top and bottom terminal blocks connect to the microcontroller to produce the following letters:

LetterTerminal Block/PinAVR Pin
ATop/1PB0
BTop/2PB1
CTop/3PB2
DTop/4PB3
ETop/5PB4
FTop/6PB5
GTop/7PC0
HTop/8PC1
IBottom/1PC2
JBottom/2PC3
KBottom/3PC4
LBottom/4PC5
MNo connectionPD3
NBottom/5PD4
OBottom/6PD5
PBottom/7PD6
QBottom/8PD7

Notes

[1] Miller, F., and Bachrach, Steven J. Cerebral Palsy: A Complete Guide for Caregiving (A Johns Hopkins Health Book). Amazon