Flex Glove Controller

by jordantallent in Circuits > Assistive Tech

4071 Views, 15 Favorites, 0 Comments

Flex Glove Controller

IMG_20130720_231655_907.jpg
I have seen many gloves that use flex sensors as a way to control a bionic hand or something of the sort.  I thought that I would make one that can be programmed to do a whole number of things, such as control a TV, a light switch, or even a remote control car.  I'm not yet sure what I will exactly do with it, but I thought it would be a fun project to work on.

Materials

parts.jpg
Electronics
1 - Arduino Pro Mini (SparkFun)
1 - Analog/Digital MUX Breakout (SparkFun)
5 - Flex Sensors (Sparkfun)
5 - 10k ohm resistors

Hardware
Conductive thread (Sparkfun)
Conductive glue (Radioshack)
Sports glove
breadboard
jumper wires

Design

schematic.png
The design for this project is nothing new.  There are plenty of versions of people making flex gloves right here on Instructables.  This is just my version.  Now I chose to use a Analog/Digital MUX.  With any Arduino board, this is not really necessary because there are already enough analog pins available for use, however I was looking into the future when I decided to start this project, and if I wanted to add wrist sensors or a second hand then I would soon run out of analog inputs on the Arduino board.  This is the only reason that I went with the MUX, and it is pretty cheap, around $5.  On the MUX there are 8 pins that are needed for operation(no including the 16 inputs).  Of course there are two for power, one ground and one VCC.  There is an enable pin that needs to be pulled low in order for the MUX to output any data.  There are four select pins which are used as a binary number that corresponds to one of the input channels pins, telling the MUX which pin to send though.  The last pin in the signal pin, which sends one of the 16 channel signals to a single input on the Arduino.  On the other side of the breakout board are 16 input channels which are used the same as any analog pin on an Arduino is used.

I wired the four select pins up to four pins on the Arduino that could be used as digital output.  The signal pin is connected to an open analog pin.  You could wire the enable pin to be controlled by the Arduino but I decided to just have my MUX permanently enabled so I wired it straight to ground.

Each Flex sensor has two pins on it and it works like a resistor, this means that you cannot plug this thing in backwards.  I took one pine from each flex sensor and connected it up to 5V.  The other pin was connected to one of the channel spots on the MUX with a pull down resistor going from each channel used to ground.  This will really be giving you the analog value across the pull down resistor and not the actual flex sensor it self.  If you wanted to take readings from the flex sensor instead of the resistors, you can connect the VCC pins connected to the sensors to ground instead, and make the resistors pull up resistors by connecting the end currently connected to ground and hooking it up to VCC.

Breadboarding

IMG_20130720_231651_820.jpg
IMG_20130720_231655_907.jpg
IMG_20130720_231701_912.jpg
IMG_20130721_241239_713.jpg
With most new projects, it is a good idea to prototype your idea on a breadboard.  It's a great way to find any bugs in your design before you go and solder everything together.  I used a little bit of the tutorial from SparkFun(here) simply about how you should hook up the flex sensor into a voltage divider and to get an idea of what size resistor to use.  Use the schematic from the previous step to help you along the way.

Arduino Code

Arduino Logo.jpg

Downloads

Flex Sensor Problems

After I started taking some readings from my breadboard setup, I realized that while four of the sensors were changing analog values by over 100 units, one of them was only changing by about 40.  I examined the culprit and found a small looking nick on the top side of this brand new sensor.  I believe that this tiny spot is the reason for the malfunction.  This is really just another reason why it is good to breadboard your circuit before permanently wiring it into a project.  You never know if you will have received a bad part.

Wiring the Glove

When choosing an appropriate glove for this project, you want one that is comfortable but also fits snug.  You may also want to consider a clove that has two layers so that there is a place to hide the flex sensor.  A two layer glove would also limit how much effort there is to attach the sensors.

Attaching the wire sensors into a glove can be a very delicate process.  If you are sewing them in, you need to make sure not to puncture them in the wrong place or they could malfunction.  You also need to be sure that they can move a little.  If you sew them onto the finger of a glove while it is straight, it will be very hard to bend the finger once the glove is on and potentially damage your flex sensor.  What I recommend is firmly attaching the side of the flex sensor on the side where the connectors are.  This will help when you start using the glove and you don't want wires to start coming loose.  I used some thread to sew a zig zag pattern all the way up the flex sensor, holding it against the glove.  I never go though the flex sensor film.  Not only could this damage the sensor, but it could cause too much rigidity and not allow you to move your fingers properly.

When mounting the flex sensors, I didn't want bulky wires running from the controller to the sensors.  I opted to use some conductive thread with some conductive glue.  I went with glue because when I have tried to solder this thread, it ends up very messy, unreliable and ugly. I would recommend attaching some long lengths of thread to the sensors before mounting them.  This will help to ensure that there is not a short between the sensor pins from glue pooling and connecting the two.  You may also consider a small piece of heat shrink to enclose the pins and provide extra strength and aesthetics.

PCB

Eagle.jpg
schematic_pro_mini.png
schematic_header.png
PCB.png
After laying out my PCB with the Arduino Pro Mini package, I realized that I had a lot of empty space that only had holes for the one half of the Arduino.  Since I am on a college student budget, there was no way that I was going to pay for all that empty space.  I decided to use a single row header footprint that has 12 pins, identical to one side of the Arduino Pro Mini.  This helped me to save some space which allowed me to cut some cost which is always a bonus.  To try and keep a small form factor, I am mounting the Arduino on the opposite side of the board from the MUX.

My final board is just a two layer board to connect the mux to the Arduino.  I didn't put any connectors for a battery because I am currently only using the flex glove while it is tethered to the computer so I just use the power from the FTDI cable.

Downloads

Final

As it turns out, for the same price of this ONE glove, you can get a Leap Motion which can track BOTH hands in three dimensional space.  Although this is not necessarily the most cost effective project, it is a good way to learn more about electronics and Arduino, and teach you more about assembling projects.

This project helped me to better understand the best way for me to work on a project and also got me a little bit more experience in writing an Instructable that will hopefully help someone else along their journey through the world of electronics.