About this project
My latest project is a wireless motion-sensing gaming glove for the C64. It's akin to the ill-fated Nintendo Power Glove, but people who have tested this one claims it sucks less!
The sensor on the glove is based on the SoMo by SonicWear, a wearable Arduino-compatible device that is intended for creating interactive dance and music performance. SoMo contains a 9-DOF accelerometer/gyro/magnetometer, microprocessor, battery, and XBee transmitter and receiver pair. Since it's Arduino-compatible, it can easily be reprogrammed for custom applications.
To turn it into a gaming device, we had to do a few things:
■ Reprogram the XBees to use "I/O Line Passing" mode instead of Serial mode.
■ Add two extras I/O connections between the microprocessor and XBee. (Thanks Eric from hacklab.to for doing this part!)
■ Wire in a fire button, using conductive fabric between the thumb and forefinger.
■ Interface the receiving XBee to the C64 Joystick port.
■ Reprogram the microprocessor to sense tilt in the X and Z axis, and instead of generating MIDI, toggle outputs connected to the XBee.
More technical details in my talk at VCFMW 2013
Github code
Glove in action
At the Vintage Computer Festival Midwest / Emergency Chicagoland Commodore Convention 2013 (Thanks Robin Harbron)
Hardware
I don't consider myself a hardware expert by any means, so this has been quite a learning experience. Fortunately, SoMo already provides the IMU interface over I2C, so all I had to do on that end was add two extra I/O jumpers from the microprocessor to the XBee (thanks again Eric) to get a total of five outputs (up/down/left/right/fire).
I then connected up one of the SoMo's inputs to conductive fabric on the glove's thumb and forefinger to act as a fire button. It's all held on with a vectro strap and some super glue. The glove itself just came from a shop in Toronto's Chinatown.
On the C64 side, the receiving XBee is powered off the 5V line at the joystick port. I'm using an 74LS05 hex inverter to "emulate" a joystick. The 74LS05 is ideal for this because it has open-collector outputs - meaning that when the output is off, it's neither high or low - it simply disconnects. When it's low, it pulls the output pin to ground - just like a joystick.
Comments
Please log in or sign up to comment.