The guys at Digital Telepathy generously worked with me to provide the SlideDeck content slider which I’ve used to create the step-by-step instruction set above. I highly recommend both SlideDeck and the people behind it if you’re looking for this functionality.
Help Available on the Forums
If you need some help building your own from scratch, especially since there is no universal and fully documented start-to-finish process yet, post your questions on the Keyglove Forums for some input from me and others. I love to see people doing the same thing, and I’ll do whatever I can to help you get past any difficulties or answer your questions.
Different Hardware Options
Not every approach to building your own prototype Keyglove will yield the same feature set. There are a few considerations to make depending on your needs, and whether you’re willing to wait for the official hardware to be released (hopefully sooner rather than later, but I’m not sure).
To start, you can choose one of the following boards:
- Arduino Mega 1280/2560
- Teensy++ 2.0
- Keyglove Controller not available yet
The most capable option is the official Keyglove board, but that is not yet available due to the rapid and significant revisions it’s currently undergoing. The best choice in the mean time is the Teensy++ 2.0, because of its small size and great USB functionality. Smaller Arduino boards such as the Uno limit the number of sensors you can have significantly unless you use I/O expanders, which is why the Mega is a better choice. All Arduino boards make USB very difficult (and not officially supported in the Keyglove code).
There are also two approaches for connecting the touch sensors to the MCU:
- Direct digital I/O pin connection
- I2C I/O expanders
The direct connection is simpler electrically, but may be limiting depending on your board choice. The complete sensor arrangement requires 37 I/O pins, though you can get by with fewer if you are creative with your touchset. Maintaining efficiency with less than 25 would be quite difficult. The Arduino Uno only has 14, which means you’d really want I/O expanders with that board. The Arduino Mega boards have 54 I/O pins, which is plenty including the use of the UART interface and some interrupts for motion sensors. The Teensy++ 2.0 has only 46, which is enough for the full array of sensors, I2C connections, one UART device, and the I2C version of the feedback module (which otherwise takes 5 I/O pins and cuts out some other important functionality. As before, until the Keyglove Controller is done, the Teensy++ is the best choice in light of its size and USB support.
Then, there is the choice of how you want to interface with the host device:
- Serial only, which requires your own interpreter/driver on the host
- PS/2, which was never fully developed (but partially so)
- USB, which isn’t supported on the Arduino Mega boards
- Logitech R400 protocol, which requires the guts of a Logitech R400
- Bluetooth, which currently requires the Bluegiga WT12 module
Currently the best option is USB + Bluetooth, or Serial + Bluetooth, either of which is possible using the Teensy++ board. The Teensy++ supports simultaneous Serial+KB+Mouse+Joystick after a recent update to the Teensyduino add-on, so it is ideal for prototyping purposes. The Keyglove Controller will be able to do this as well, but as mentioned before, it’s not actually available yet.
Finally, there is an option for different types of motion sensors:
- ADXL345 I2C accelerometer only
- ITG-3200 I2C gyroscope only
- ADXL345 + ITG-3200 I2C 6-DOF combination
- ADXL345 + ITG-3200 + HMC5843/HMC5883L I2C 9-DOF combination
- MPU-6050 I2 6-DOF integrated MEMS device from InvenSense
- MPU-6050 + HMC5843/HMC5883L I2 9-DOF with MotionFusion
- MPU-9150 I2 9-DOF with MotionFusion
The simplest option is currently the ADXL345/ITG-3200 6-DOF board from SparkFun. The 9-DOF board from SparkFun is another easy option, but it is larger and more expensive without much real benefit at this point. The MPU-6050 is a relatively new device (you can order it from Component Distributors or SparkFun), and the updated MPU-9150 is even newer (not available for purchase yet). There is currently no place to buy either of these modules on a breakout board yet. The benefit of the MPU-6050/9150 is that all of the 6-axis or 9-axis fusion calculation work is done on the MPU itself, rather than on the main processor. Ongoing efforts to reverse engineer the MPU-6050/9150 can be followed here (lots of source code and documentation included). It’s not finished yet, but raw readings are definitely possible, and the DMP is almost sort of working.
The other design choices, such as whether to include an RGB LED, piezo buzzer, or vibration motor, are more trivial and have very little impact on which hardware you should choose. The following instructions assume you will use the Teensy++ 2.0 board, direct I/O sensor connection, and the 6-DOF board from SparkFun for motion sensing. Just be aware of the other options.
Hardware List
table td.price { text-align: right; font-weight: bold; }
Item | Source | Price | Qty. |
---|---|---|---|
CORE HARDWARE | |||
Cotton handbell glove | MusicMart | $3.25 | 1 |
Conductive fabric (MedTex180) | SparkFun | $19.95 | 1 |
Teensy++ 2.0 | PJRC | $24.00 | 1 |
Teensy 3.3v regulator | PJRC | $1.00 | 1 |
ITG3200/ADXL345 6-DOF breakout | SparkFun | $64.95 | 1 |
25′ hookup wire | SparkFun | $2.50 | 1 |
Mini USB cable | PJRC | $4.00 | 1 |
WIRELESS SUPPORT | |||
Bluegiga WT12 UART breakout | InMojo | $40.00 | 1 |
900 mAh LiPo battery | SparkFun | $8.95 | 1 |
LiPo battery charger | SparkFun | $9.95 | 1 |
SPDT mini power switch | SparkFun | $1.95 | 1 |
SENSORY FEEDBACK | |||
RGB status LED | SparkFun | $1.95 | 1 |
330 ohm resistor for RGB LED | SparkFun | $0.25 | 3 |
2kHz buzzer | SparkFun | $1.95 | 1 |
Vibration motor | SparkFun | $4.95 | 1 |
2N3906 vibration control PNP | SparkFun | $0.75 | 1 |
1N4733A Zener diode | SparkFun | $0.25 | 1 |
PROTOTYPE TOOLS | |||
Solderless breadboard | SparkFun | $5.95 | 1 |
20×1 header pins | PJRC | $0.80 | 6+ |
A few notes about the hardware above: the only stuff you really need is the core hardware. You can build a functional USB-only Keyglove with no wireless support, no sensory feedback (light/sound/vibration), and no prototype tools. However, I’d recommend getting at least the breadboard (and pins if you buy the Teensy++ without them) unless you are very confident in your abilities or have a very specific reason for it. Additionally, the wireless support and sensory feedback greatly add to the usefulness of the Keyglove, so I’d recommend those parts as well. If you decide not to get all of it though, you can certainly add more functionality later.
Also, feel free to use any sources you have, including your own collection. You may have a spare breadboard handy, or a mini USB cable, or 330-ohm resistors. I tried to minimize the number of unique mail-order sources to reduce shipping costs, but you can order from anywhere. A full set of hardware as described above will run at exactly $201.17 plus shipping and handling.
Full disclosure about the WT12 breakout board from InMojo: it’s actually my design, and InMojo is a platform that allows you to buy them directly from me. It’s easier, smaller, and cheaper than the only other WT12 breakout board design I know of currently, so I don’t feel bad recommending it. If you find something else that you prefer, then by all means use it instead.
The MedTex180 comes from SparkFun in a 12″ x 13″ piece. This is at least ten times as much as you need, but I don’t know where to get smaller pieces. I personally ended up getting a 12″ x 60″ swath of it from LessEMF (Cat. #A321, $29.95/ft) while I was researching, which is a good deal if you happen to need a boatload of the stuff.
All in all, for a single-quantity order of everything you need including shipping, expect to spend about $250. I will try to buy in bulk and resell for considerably less than this once the prototype becomes more kit-ready.
Software List
Item | Source |
---|---|
DEVELOPMENT | |
Arduino IDE | Arduino.cc |
Teensyduino add-on | PJRC |
Keyglove controller code | GitHub |
TESTING | |
Processing IDE | Processing.org |
Keyglove visualization code | GitHub |