Mike Cochrane

Keyglove

Keyglove

At the end of March I spotted Jeff Rowberg's Keyglove Open Source Hardware (OSHW) project on Engadget an thought "I gotta' make one of them". So when I got a bit of time off work I started.

Finding parts

I wasn't able to get hold of the Teensy ++ development board in New Zealand so I ordered a Seeeduino Mega from Nicegear in Timaru. I'd previously ordered Snom phones and a Quadro IP-PBX from them when I was at gardyneHOLT and always had great service.

I picked up a Glove while visiting my awesome sister in Christchurch for Easter. I grabbed some AWG30 hookup wire and conductive glue from Jaycar in Auckland.

Build

Keyglove wire loop touch points

Working out where to place the touch points on the fingers was a little tricky at first. Then I got the tailors chalk out, chalked up the thumb tip and started making the touch combinations. Very quickly I could see where I needed to put my touch sensors. I built the sensors using a wireloop glued down with a couple of drops of conductive glue. Once this dried I put another couple of drips on top to make a nice raised touch point.

I ran all the wires down the side of the fingers, instead of over the top as Jeff had. This allowed the wires to follow the path when the glove fabric expanded/contracted the least when I moved my fingers.

Finally the Arduino, 6DOF board, Conductive Faric, Vibration motor and some Lilypad LEDs I ordered arrived from Nicegear, ordering just before the Easter/ANZAC 4 day weekend was not the best idea - couriers don't work on holidays. This was my first time using an Arduino, but I was able to get the "Hello World" of Arduino ("Blink") working in about 10 mins on my netbook. Then I was able to confirm the resistance of my finger touch points was low enough to work.

Keyglove LEDs and vibration motor

Now that the conductive fabric has arrived I connected that to wires and attached them to the glove too. I used a similar chalk method to work out where to put them. Once the chalk was on the glove I put Scotch Magic tape over it, and draw the shape with a permanent marker. Transferring the tape to the fabric made it easy to cut out the shapes and keep them labelled. I glued these in place with some Seam Grip that I had, with the Magic tape still in place so I didn't get glue on the important side. Once dried I removed the tape and the sensors worked well.

I attached 3 LED's along the top of the thumb, the vibration motor to line up with my wrist bone, and the 6DOF board on the back of the glove.

While the Seeduino Mega is smaller than an Arduino Mega, it is still way to big to mount on the back of the glove. So I created a bracelet with polymorph plastic to hold the board and a 9v battery for testing.

Code

All connected up, and a few patches to Jeff's Keyglove code to work on an Arduino again and I could get touch combination to show up in the serial console - Success! I had a working keyglove.

Well kinda, I had no way to get the keystrokes back to the computer as keystrokes. I hadn't found a supplier of the Bluegigga WT12 bluetooth module that Jeff was using yet, the the Seeeduino Mega could not pretend to be a USB HID like the Teensy++. So I used a Logitech Wireless Presenter R400, but that's another blog post.

Jeff kindly provided me with the script that he used to create the touchset.h file so I could define my own touchset. In some ways it's similar to Jeff's, in others it's radically different. Shift, Ctrl, Alt are all single-shot in my keymap, once a "normal key" (alphanumeric) is pressed these modifiers revert to unset again. The cursor keys, page up/down, home and end are not defined in my touchset but all other keys on a 101 keyboard are.

Jeff also kindly moved the code over to GitHub so I could fork his repository. In my repository you'll find all the code that I run on my keyglove prototype.

What's next

Keyglove back of hand/fingers

I didn't get the mouse code working as well enough to be fully usable, I had mounted my gyro board on a different axis to Jeff. I think I'd like the mouse movements to be based on relative movements (i.e I start mouse move then rotate my wrist to move left/right) rather than the speed of movement being based on the distance from a predetermined neutral position.

I now have a couple of BlueGigga WT12 bluetooth modules thanks to Glyn who stock them in Auckland. So I can convert mine to bluetooth easily.

As an input device, I was able to type at 4 words per minute after about four 30min sessions - so I guess that's similar to 2 hours training on a qwerty from scratch. I don't think I could get to the same speed as a normal keyboard, but 20WPM should be quite achievable.

I'm watching Jeff's work to spot a good point to create a second prototype to test what he's playing with. In the mean time I'll play with the glove occasionally and watch my github fork for changes

Tags: keyglovearduino