As stated in The Powerglove Ultra page, the original glove calculated his position by sending ultrasonic signals to some microphone receivers connected to the NES and placed on the TV. Each of the four enabled finger sensors had a resolution of 256 "positions" (so, 8 bits).
However, the finger information was generally mapped on 4 values only (00 01 10 11), leading to just 4 positions for each finger.
In order to be used, it required the user to input a program code, unique for each game using the built-in numeric buttons. It was also possible to use the Power Glove as a standard NES gamepad!
The ultrasonic speakers on the glove bursted a 40kHz annoying sound to the receivers, leading to a calculation of yaw and roll of the hand. The device was unable to calculate the pitch.
The communication wire was connected to a standard 9-pins NES plug and it was hooked directly into the sensors adapter.
To create the Power Glove Ultra, I have replaced some of the original hardware with more performing stuff from nowadays, using open source technologies such as Arduino.
The original Glove consisted of:
The Ultra features:
Each of the fingers bend amount is misured using a flex sensor which actually acts like a potentiometer: the more you bend your finger, the more the signal changes.
The information passes through a custom logic board which replaces the upper palm's original one, and it gets handled by the signal multiplexer which is connected to the Metro Mini. This allows to use one analog input to read all of the five fingers data.
The BNO055 is connected via I²C directly to the Metro Mini and spits out the Quaternion data describing the current pose of the arm.
In mathematics, the quaternions are a number system that extends the complex numbers: I use them in order to avoid Gymbal Lock issues.
The original wrist board has been cut to obtain room for the extra hardware. I drilled some small holes on it to intercept the buttons signals.
Each of the A, B, Select, Start, and the four directional arrows are directly connected to the Metro Mini digital inputs. I left the programming keys unconnected.
The Lithium - Polymer battery is hidden inside the Powerglove Ultra and connected to the Powerboost 500 charger. This board boosts up the 3.7V power coming from the battery up to a nicely regulated 5.2V DC current that fits our needs!
The Power Glove Ultra features a 3D printed plastic base designed to hold the Bluetooth Module, the Powerboost 500 Charger and the Metro Mini unit.
It communicates via Bluetooth at 115200 BPS, sending the finger bend values with the buttons info as well as the current Quaternion, representing the pose of the arm. The state of the 8 buttons is mapped to the bits 0-7 of a single byte.
The finger bend values have a resolution of 256 positions, so each finger value is stored also in a byte. The quaternion data consists of 4 floating point values, representing the X, Y, and Z components of the axis which a rotation that describes the current pose occurs on. The fourth value is the W component, which tells us the scalar amount of rotation occurring on the axis described by X, Y and Z.
If no motion is detected for 5 seconds, the Power Glove Ultra enters the low power mode to save battery life. In this mode only the accelerometer is active. Once motion is detected, the system is woken up and normal mode is restored.
The battery can be charged from the mini USB adapter placed on the Powerboost 500 Charger. The Power Glove Ultra is equipped with a "low battery" led. Moreover, it has a shiny blue led replacing the original red one on the wrist board!