Introduction: Interactive Gloves

Picture of Interactive Gloves

This interactive glove uses flex sensors, conductive fabric, and an accelerometer to sense hand orientation, bend of each finger, and fingertip touches. It also has a small motor in the palm of the hand for haptic feedback. The glove is intended to be a general I/O device, not tied to any particular application, so we created several application to demonstrate the possibilities.

This Instructable was made as part of the CS graduate course "Tangible Interactive Computing" at the University of Maryland, College Park taught by Professor Jon Froehlich. Please see for more details.

This work was done in collaboration with Majeed Kazemitabaar.

Step 1: Materials

Picture of Materials
  • Lilypad Arduino
  • Lilypad accelerometer
  • Lilypad vibe board
  • 2.2" Flex sensor (3)
  • Conductive thread
  • Conductive fabric (just enough for the finger tips)
  • Lilypad FTDI breakout (to connect to USB)
  • Plain fabric to insulate glove layers
  • Close-fitting gloves (or make your own)
  • Resistors (7)

Note on resistors: We used 10k resistors for all seven, but depending on the specs of your flex sensors, you may want to replace the three resistors connected to them with a different value. The ones connected to the finger pads are used as pull-up resistors and so need to be a sufficiently large value, but the ones connected to flex sensors are voltage dividers - meaning you will want to find resistor values with a similar magnitude of resistance as your flex sensor. In our case, the flex sensors had a flat resistance of 10k, so we used 10k resistors. You can experiment to see what gives you the best range for reading values.

Step 2: Prep Materials and Glove

Picture of Prep Materials and Glove

Before we get started, we need to prepare the glove and materials for sewing on. In this project, we opted to make our own glove, by tracing our hand on a piece of paper and using that as a template.

Next, we sewed on conductive patches to the fingertips of the glove.

Then, to keep the flex sensors in position, sew a casing (a narrow, open pocket just wide enough to slide the flex sensors in) to three fingers.

Finally, to make the resistors and flex sensors conductive thread-friendly, use a pair of needlenose pliers to curl the ends into loops.

Step 3: First Layer (Lilypad, Touchpads, Flex Sensors, Vibe Board, Resistors)

Picture of First Layer (Lilypad, Touchpads, Flex Sensors, Vibe Board, Resistors)

Using the placement diagram above, sew on the first layer of circuitry with the conductive thread. Make sure you have firm connections to the components by sewing several times through the loops. It's a good idea to test your circuit (using a multimeter or another device) after each layer before starting the next, to make sure you haven't stitched threads too close together or have loose connections.

Step 4: Second Layer (Flex Sensor Connections)

Picture of Second Layer (Flex Sensor Connections)

Cut two pieces of fabric to fit above the overlapping section of circuit, and tack them in place. Now, sewing the conductive thread only on the top layer (otherwise you'll short out the circuit!), add the connections from the flex sensors back to the Arduino.

Step 5: Layer 3 (Touch Sensor Connections)

Picture of Layer 3 (Touch Sensor Connections)

Cut another two pieces of fabric to cover the overlap from the previous layers, and tack in place. Again, sewing only the top layer , make the connections from the touch pads on the fingers to the Arduino. In our prototype we made a mistake in circuit design - pin 13 was not a valid pin to use on the Lilypad, so as shown above we had to add an extra layer to reroute that connection. You can avoid this by simply shifting over the connections to pins 9 - 12 in order.

Step 6: Layer 4 (Accelerometer)

Picture of Layer 4 (Accelerometer)

The last layer is the accelerometer. Tack two layers of fabric and sew the accelerometer in place. You're done with the glove!

Step 7: Calibrate

You'll need to calibrate your flex sensors and accelerometer before programming. We did this by simply writing the raw values from the Arduino out to serial and taking note of the values at particular positions.

To calibrate flex sensors:

  • flex#Zero is the value "at rest" (when the sensor is flat)
  • flex#Min is the value at maximum finger bend

To calibrate the accelerometer:

  • xZero is the x value when the accelerometer is flat
  • yZero is the y value when the accelerometer is flat
  • zZero is the z value when the board is vertical

Step 8: Program

We developed a number of Processing programs to run with the glove that can be downloaded on Github:

  • Asteroids: the classic game, now controlled by finger touches and hand orientation
  • Cube in Control: a demo which uses all the sensors on the glove (good for checking your calibration). A 3D cube rotates with accelerometer, shrinks in each dimension with increased flex, changes color with finger touches, and buzzes the vibe motor with finger touch.
  • Lines in Control: A music visualizer with colors and line field controlled by hand orientation and flex
  • Pacman: Control a pacman character using accelerometer and flex sensors to change direction
  • Presenter: Send keystrokes to a program (in this example, right/left key presses, suitable for something like a Powerpoint presentation). This could easily be extended to include other keys.

Once calibrated, it's relatively straightforward to adapt programs for the glove. Just replace keypresses or mouse clicks with values from the glove (either acccelerometer / flex sensor mappings or thresholds, or touch pad combinations).

Have fun!


JayanthR5 made it! (author)2016-10-23

Managed to do it without stitching on any additional layers! Thanks for the great idea.

Here's a video I made of me using it as a gaming controller:

JayanthR5 (author)JayanthR52016-10-23

Also, here's a suggestion. You can entirely avoid using the pull-up resistors for the touch pads by using the Arduino's internal pull up resistors instead.

Simply declare the pins as pinMode(6, INPUT_PULLUP) instead of pinMode(6, INPUT). And then connect the touch pads to the digital pins directly without the voltage divider.

shinyshinyshiny made it! (author)2015-06-29

Finished making one. Will send some git pull requests soon.

I tried to use a lilypad with a micro USB, but realised too late it doesn't have enough analogue inputs. But it did have a nicer feel than the ftdi programmer hanging off it.

emcnany (author)shinyshinyshiny2015-06-29

Wow, that looks great - I like the fabric too, very fun! We had originally hoped to use bluetooth or something similar to go wireless, but ran out of time. For testing and demo purposes having a USB cable worked well enough.

shinyshinyshiny (author)2015-06-21

Thank you for this instructions. I've been working on making these for a week now.

emcnany (author)shinyshinyshiny2015-06-22

That's awesome! I'd love to see how it turns out, and if you find anything that needs clarified please let me know!

shinyshinyshiny (author)emcnany2015-06-22

Yes, what resistors to use? I used 10k. but i don't think you specified anywhere.

emcnany (author)shinyshinyshiny2015-06-22

Oops - we used 10K resistors as well, we found that value worked well for both the voltage divider and pull-up resistors. Thanks for pointing it out, I'll update the instructions!

shinyshinyshiny (author)emcnany2015-06-22

Trolzlolz (author)2015-05-26

Awesome, I always wanted to re-enact Iron Man 3. :)

seamster (author)2015-05-22

Interesting! I'm glad you included the video to show the gloves in use. Nice work!

About This Instructable




More by emcnany:Interactive Gloves3D Printed Rocket Night Light
Add instructable to: