Another implementation of the data glove concept. Excerpt The Glove Project [1] implements an attractive input device for creative purposes. The initial version is based on an ArduIMU, an Arduino compatible board with sensors which allows detection of gestures including hand position and movement and finger position and feedback like a RGB LED and vibrato. All this build into an attractive glove with a battery and connected wireless to the backend system. The initial version, as documented here, only implements the basic position and movement functionality, leaving feedback and finger position measurement for later versions. The battery and wireless connection are also skipped for now. The communication with the backend system is serial over USB, as is standard for the Arduino. Adding the missing features is assumed to be relatively simple, and will be done if needed. The backend system used for testing is Pure Data [8], an open source audio and graphics platform running on all major operating systems. At the moment of documentation, a prototype is working, with all sensors producing data. The main hurdle now is calibration to get stable 3D-position data. A breakdown of a complete Glove Project glove (original version). A list of the sensors: - Gyrometer, detecting orientation changes, - Accelerometer, detecting direction of the gravitational field and movement, - Compass, detecting direction of the earths magnetic field, - Bend sensors, detecting finger position. Feedback: - RGB-LED, - vibrato motors. All sensor data can be used directly, but a combination of the Gyro- and Accelerometer can produce accurate 3-dimensional position information. The ArduIMU firmware is available by Seb Madgewick as an Arduino sketch [2] . The communication with the backend is either ASCII or binary. The main algorithm is distributed seperately [19]. This implementation The basic ArduIMU and the bend sensors are not very cheap, so building a complete set without knowing if it will work for its intended purpose, was not very attractive. So a cheaper solution was sought. The most interesting part and the hardest part to get right would be the ArduIMU replacement. At [3] I found a cheap board containing four sensors, including all types used in the ArduIMU, with an additional Barometric Pressure meter as extra. As the barometric pressure module also contains a thermometer, the board has the capability to provide eleven axis of data. The board at [4] appears to be a equivalent and even somewhat cheaper. For all sensors datasheets are available [13] and sample programs [14] for the Arduino exists. The hardware list for the prototype: - Banggood 9-Axis-BMP085-Magnetic-Field-Acceleration-Gyro-Atmospheric-Module, - Arduino UNO Backend: - Pure Data 0.44 extended on Linux The prototype setup in detail: The 9-Axis sensor module has 10 connections of which only 4 are actually used; Vcc (3.3V), Gnd, SDA and SCL. All sensors on the board use the I2C protocol, which simplifies the sketch and sensor specific code. The I2C signals SDA and SCL are connected to the A4 and A5 pins of the Arduino respectively. The module also supports a 5V line, but it is only used to derive the 3.3V. The other connections are M_DRDY, A_INT1, T_INT1, P_XCLR and P_EOC. These are not used in this project. The firmware uses the OCC [7] protocol to communicate with the backend system. This protocol is widely used for communication between multimedia devices and supports a wide range of media, including TCP/IP and plain serial. It is also adopted for the x-OSC, a commercial version of the board. The serial option is used for the prototype, as it is available on a plain Arduino. The backend in this phase is a Pure Data [8] patch which receives and visualises the data. The GEM [9] extension to Pure Data is very useful to visualise the 3D-information. Development The development platform is the Arduino IDE 1.0.5 with some additional libraries: - OSC for Arduino [5] allows OSC over the serial port For some sensors the driver came as a library, but the functionality of these is integrated into the main sketch. The sketch uses only the calibration of the original. The conversion to quaternions for the 3D positional information is copied from [19], the open source code from the originator of the algorithm. More information on this conversion can be found at [6]. The loop structure in sketch is based on the arduino-osc example. All data from the sensors and the AHRS are output in the same rate, default being 10 Hz. The ArduIMU loop code allows for differentation in measurement and report rates, so this scheme may be implemented later. The data transfer is encoded with OSC. This allows the triplet of floats produced by each sensor, to be transferre with a hierarchical path, unique for each sensor. For instance, a gyro message looks like "/11AoC/gyro