The possibilities of wearable electronics are endless: low and high-tech components sewn onto clothing and accessories make way for all sorts of applications. Due to the availability of various wearable platforms, it has never been this easy to tech up every-day items that we have always taken for granted. With a bit of work, they can even look very cool and be fashionable at the same time 😄
How cool would it be to build your own motion sensing glove that also detects finger movements? Such a glove could serve as an awesome custom-styled, personalized, and unique controller for all sorts of applications, ranging from drones to video games, but of course also robotics projects. Ideally, the low-cost glove controller should be created using standard electronics components and materials, and a couple of neat and budget-friendly MacGyver hacks to make life easier. Wires are annoying when you want to move freely with your controller 😤 Therefore, all sensor signals should be sent wirelessly to a receiving unit, and the whole thing should work on a small battery for ultimate flexibility 😍
A perfect beginners' platform for creating wearables is the LilyPad product line. Its components look very cool when sewn onto fabrics, and, if executed well, could give your project a distinctive Steampunk vibe. Most of them are even washable too! The popular LilyPad USB has a whopping number of 4 analog inputs (A2 - A5) and 5 other digital input / output pins (pins 2, 3, and 9 - 11). The specifications even suggest that 2 of these remaining digital pins can be used as additional analog inputs 😱 This means I can already connect 3 analog finger sensors and an analog 3-axis motion sensor for detecting hand movements. This still leaves me with a few spare digital pins to do other exciting stuff, because 4 pins (3, and 9 - 11) can also serve as PWM outputs. Moreover, pins 2 and 3 enable serial communication, which can be very useful for setting up a wifi connection to a receiving unit.
Sensing finger movement is commonly done using readily available flex sensors. The problem is, however, that they are not only rather expensive, but also quite fragile 😕 This severely limits their applicability in this project. Luckily, it is very easy to make strong and reliable pressure sensors yourself using basic materials, such as sticky tape, Velostat pressure-sensitive conductive sheets, (conductive) wires, and perhaps some firm plastics 😇 Pressure sensors can serve perfectly well as flex sensors. After all, pressure is increased when bending the sensor. Because I only have room for 3 sensors, it is best to attach them to the fingers most people can move independently from one another, namely the thumb, index finger, and middle finger.
Generally, motions can be detected using accelerometers. Popular applications are mobile phones, which use them for instance for recognizing whether the phone is being picked up, or for controlling apps and games. These accelerometer sensors are available in many different flavours and price ranges. Some might match your other components more (in terms of looks), others might be more accurate. A well-known LilyPad sensor is the LilyPad Accelerometer, which is based on the ADXL335 accelerometer from Analog Devices. The sensor is quite popular because of its ease of use: movement on X, Y, and Z axes yield analog signals between 0V and 3V, which is ideal for LilyPad projects. For basic motion sensing, I should be fine using these signals, plus, it nicely matches my LilyPad USB 😎 In future, I can move to a more powerful accelerometer / gyroscope, such as the Adafruit BNO055, which offers data on 9 degrees of freedom over a digital signal, and eliminates the need for mind-boggling trigonometric computations. There is even a sewable version available, which has the exact same dimensions as the LilyPad Accelerometer!
It would be nice to send the signals from the sensors to another component, such as an Arduino Uno. It would be even better if I could do this without involvement of any wires! This is typically a job for a wifi module, such as the XBee product range. As it happens, there is a nice shield for LilyPad projects: the DEV-08937 or its DEV-12921 revision. This shield should work very well with XBee Series 1 802.15.4 multipoint wireless networking RF modules. According to the XBee buying guide, XBee modules with trace (PCB) antennas are of particular interest due to their lower profile while maintaining a performance comparable to their (more fragile) wire antenna counterparts. Hooking up the module should be relatively straightforward, because serial communication is supported by both the LilyPad USB platform and the wifi shield. Moreover, the shield has power interfaces for 3.3V and 5V, which is perfect for the LilyPad USB!
At first sight, the type of glove does not seem to be very important. It is mainly a matter of personal preference when it comes to the model and style. However, there are a few requirements regarding the materials. Thick (leather) gloves should work best, because the outer material provides a good insulation for any (inevitably) crossing conductive threads. Also, glove liners are perfect, as the space in between outer fabric and liners can be used to hide end knots and power supply. For my project, I have found an awesome pair of leather Laimböck gloves with fleece liners. The espresso paint job is going to look swell when paired with the LilyPad's purple and golden accents 😘 A 3.7V LiPo battery should go well with this pair. I had a nice and small 1200mAh battery lying around, which should be hardly noticeable while wearing the glove, but unfortunately I wrecked it 😁 Now I am left with my larger 2500mAh power supply, of which the size is about the maximum the gloves can hold.
Because a motion sensing glove, well... moves a lot, regular conductive yarn that is used in many e-sewing projects might not be safe enough. My plans require a lot of conductive threads in a relatively small area, so moving and rippling fabric could easily result in threads touching each other, even though they shouldn't. Therefore, in my case, it is a better idea to use super thin (26AWG) silicone cover stranded-core wires, which we can hide in between the layers of fabric. These wires are so thin and flexible, they should be hardly noticeable while wearing the glove. Some embroidering on top of the outer fabric should fix them in place. Because I want to have sturdy connections, the wires will (of course) need to be soldered. Some nice 4mm ⌀ 4:1 glue-lined heat shrink tube should provide some good protection against dirt and humidity.
The main components and schematic wiring can be found in the illustrations below. On the back of the glove, the LilyPad USB and LilyPad Accelerometer will be attached. The LilyPad XBee shield will be located on the palm of the glove, near the wrist. For practical, but especially for artistic reasons, all wiring is executed in a radial pattern, minimizing the number of crossing wires and maximizing the use of small spaces. Active (red) and neutral (blue) wires serve as the project's arteries. All other wiring follows the same radial patterns, which additionally corresponds to the natural shape of the hand. Note that the colors of the wires might not follow (local) established electrical wiring conventions.
The back of the glove ...
... and the palm of the glove
The flex sensors are connected to the LilyPad's dedicated analog inputs (A3 - A5). Their juice comes from the active (live) wire in the palm of the glove, and the sensors are connected to the neutral artery through resistors (serving as voltage dividers). The accelerometer is connected to the remaining dedicated analog input (A2) and pins 9 and 10, which can be used as analog inputs as well. Current is drawn from the live wire in the palm of the glove, and the shield conveniently connects to the nearby neutral wire on the back of the glove. LilyPad's pins 2 and 3 are reserved for all serial read (Rx) and write (Tx) XBee communication with the LilyPad XBee shield, which uses its dedicated 3.3V positive and negative connectors.
Now that the design is ready, it is time to implement my ideas. After completing the inevitably long shopping list (hooray for online shopping!), it might be a good idea to first construct the flex sensors and prepare all wiring (including soldering and shrink tubing all connections) outside of the glove. Then, I can easily insert everything in between the glove liners and the fine leather, connect it to the shields on top of the glove, and fix all wiring in place with embroidery floss for optimal results.
All required components can be bought at popular international web stores and at the local electronics store (if you are lucky enough to live nearby such a store). For those of you who happen to reside in the Netherlands, there might be some interesting national alternatives which will help you cut excessive delivery fees and avoid customs.
Flex sensors (±€10,-):
And of course, I'll be needing some basic tools that can be bought at the regular physical (home improvement) stores. Luckily, I am already the happy owner of a generic soldering station plus accessories. Also, I have a good pair of small, sharp scissors, a wire cutter, and a lighter. So... all set!
Creating a pressure-sensitive sensor is quite straightforward using basic materials like duct tape, 2 (partially stripped) wires, 3 strips of conductive sheet about as large as my finger, and 1 strip of transparent plastic sheet of matching size. A resistor and some shrink tube will help with integrating a voltage divider while I'm at it.
My sensor exploits the resistance generated by conductive sheets. When put in between the stripped ends of the active and neutral wires, several strips of Velostat provide a varying resistance, depending on the applied amount of pressure. An idle sensor should give a resistance of approximately 20kΩ. When pressed or bent, the sensor's resistance should go down to approximately 0Ω. Adding a strip of (firm) transparent plastic will help the sensor return to its original position after extensive flexing. Wrapping the full stack of wires and layers in duct tape should hold all sensor components nicely in place. Note that the neutral wire has an additional stripped section, which gives room for a 4.7kΩ resistor that will later connect to the neutral artery, thus serving as a voltage divider that controls the sensitivity of the LilyPad's analog input connectors for changes in the flex sensor resistance.
After cutting the strips of conductive sheet, plastic, and duct tape, it is quite straightforward to construct the sensor. I simply stick the wires onto the duct tape, and add the conductive strips. The length of the stripped ends is not very important (as long as the length of the sensor is covered), but the more thread is exposed in the sensor, the more likely it is there will be some current flowing from one wire to the other later on (which is the desired behavior). For safety, I make sure that a small section of the wires inside the sensor is insulated. Also, it is important that the wire ends are fully covered by conductive material! Otherwise, current can flow right through the wires without passing through the strips, effectively rendering these layers useless because no resistance can be measured 😓
Next, I fold the tape in such a way that the stripped wire ends are right above one another, of course with the conductive strips in between. The isolated wire ends should be somewhat seperated from each other. I finish the sensor by adding a little more tape and a plastic strip on top of the sensor.
Now it is time to add a proper resistor to create a voltage divider. Ideally, the resistor should have an ohmic value such that when bending the sensor halfway, half the voltage is delivered to the LilyPad's analog input connector. My multimeter indicates that flexing my duct tape sensor halfway yields a remaining resistance of approximately 4.7kΩ, which is a 75% drop in resistance! By matching the resistor value to 4.7Ω, I conveniently put more emphasis on the remaining 50% of the sensor. Now, half the voltage is passed to the analog input connector when flexing 50%. Applying firm pressure or flexing the sensor maximally should result in maximum voltage due to the minimal sensor resistance. If I would use higher-valued resistors, like a 10kΩ resistor that is commonly used in flex sensor projects, half the voltage would already be passed to the connector when only flexing the sensor for 10%. This is far from optimal, especially because I do not particularily like a trigger-happy sensor 😣
Soldering the resistor to the wire is quite straightforward. I simply wrap one of the ends around the wire as tight as possible and solder it using my generic analog soldering station. Of course, some glue-lined shrinking tube safely conceals the resistor and prevents damage due to water, dust, and whatever will be thrown at it when residing inside the glove. Also, the tube conveniently hides my crappy soldering 😉
I'll be adding more content as I progress in this project. Stay tuned for updates!