Introduction: How to Make a SensorGlove With Android Connection

Picture of How to Make a SensorGlove With Android Connection

The aim is to create an input system for mobile devices, which is controlled by the movements of the fingers, in this case with the help of a glove.

Para ver este tutorial en español, por favor haga click aqui:

Step 1: Creating the Glove Connectors

Picture of Creating the Glove Connectors


  • Gloves
  • 5 sensorFlex(2.2in or 5.4in)
  • 7 black breadboard jumper wires (for negative)
  • 7 red breadboard jumper wires(for positives)
  • 5 green breadboard jumper wires (for signal)
  • 2 yellow breadboard jumper wires (for Bluetooth Tx/Rx)
  • 5 ohm resistors 330
  • 1 PCB Board Perforated
  • 1 arduino UNO
  • 1 bluetooth module HC-06

Step 2: Welding SensorFlex With Jumpers

Picture of Welding SensorFlex With Jumpers
  • Right: Positive
  • Left: Negative

Step 3: Join SensorFlex and the Glove by Sewing

Picture of Join SensorFlex and the Glove by Sewing

*IMPORTANT: The purpose of this is to move the SensorFlex so close to the fingers as be possible

Step 4: Welding Glove With PCB Board

Picture of Welding Glove With PCB Board
  1. Solder the 5 red jumpers to the same bus and 2 red jumpers as Output
  2. Solder a black jumper with a resistance and a green jumper as Output to the same side of resistance (Between black jumper and resistance)
  3. Solder the 5 resistance to the same bus and 2 black jumpers as Output

Step 5: Connect With Arduino and Bluetooth

Picture of Connect With Arduino and Bluetooth

Connect the green jumpers to the Arduino Analog Inputs.

  • Thumb jumper = A0
  • Index jumper = A1
  • Middle jumper = A2
  • Ring jumper = A3
  • Pinky jumper = A4

Connect a black jumper to the Arduino GND Output and the other to Bluetooth GND Input

Connect a red jumper to the Arduino 5v Output and the other to Bluetooth +5v Input


  • Bluetooth Tx -> Pin2 Arduino
  • Bluetooth Rx -> Pin3 Arduino

Step 6: Arduino Code

#include <SoftwareSerial.h>

SoftwareSerial bluetooth(2,3);

int flex1 = A0; int flex2 = A1; int flex3 = A2; int flex4 = A3; int flex5 = A4; int valorflex1; int valorflex2; int valorflex3; int valorflex4; int valorflex5; int estadoTotal_valorflex; int num_anterior = 0; int lista_num[] = {2,3,4}; int contador =0;

void setup() { Serial.begin(9600); bluetooth.begin(9600);


void loop() {

valorflex1 = analogRead(flex1); valorflex2 = analogRead(flex2); valorflex3 = analogRead(flex3); valorflex4 = analogRead(flex4); valorflex5 = analogRead(flex5);

int array_valoresflex[] = {valorflex1,valorflex2,valorflex3,valorflex4,valorflex5};

estadoTotal_valorflex = valorTotal(array_valoresflex);

int num_bytes_enviar=(bindec(estadoTotal_valorflex));

lista_num[contador]=num_bytes_enviar; if (contador<2){ contador = contador+1; } else{ contador=0; }

if (lista_num[0]==lista_num[1] && lista_num[0]==lista_num[2]){ if (num_anterior!=num_bytes_enviar){ bluetooth.write(num_bytes_enviar); print_valores(); num_anterior = num_bytes_enviar; } } delay(25); }

int valorTotal(int lista[]) { int pulgar= lista[0]; int indice= lista[1]; int medio= lista[2]; int anular= lista[3]; int menique= lista[4]; int result= 11111;

if (pulgar>=2) { result= result-10000; } if (indice>=6) { result= result-1000; } if (medio>=6) { result= result-100; } if (anular>=6) { result= result-10; } if (menique>=6) { result= result-1; } return result; }

int bindec(int num) { int dedo= 0; if (num%10==1) { dedo=dedo+1; } if (((num/10)%10)==1) { dedo=dedo+2; } if ((((num/10)/10)%10)==1) { dedo=dedo+4; } if (((((num/10)/10)/10)%10)==1) { dedo=dedo+8; } if ((((((num/10)/10)/10)/10)%10)==1) { dedo=dedo+16; } return dedo; }

void print_valores(){

Serial.print("Pulgar:"); Serial.print(valorflex1); if (valorflex1<10){ Serial.print(" "); } Serial.print(" Indice:"); Serial.print(valorflex2); if (valorflex2<10){ Serial.print(" "); } Serial.print(" Medio:"); Serial.print(valorflex3); if (valorflex3<10){ Serial.print(" "); } Serial.print(" Anular:"); Serial.print(valorflex4); if (valorflex4<10){ Serial.print(" "); } Serial.print(" Menique:"); Serial.print(valorflex5); if (valorflex5<10){ Serial.print(" "); }

Serial.print(" Binario:"); Serial.print(estadoTotal_valorflex); if (estadoTotal_valorflex<10000){ Serial.print(" "); if (estadoTotal_valorflex<1000){ Serial.print(" "); if (estadoTotal_valorflex<100){ Serial.print(" "); if (estadoTotal_valorflex<10){ Serial.print(" "); } } } } Serial.print(" Decimal:"); Serial.println(bindec(estadoTotal_valorflex)); }

Step 7: AppInventor Code:

Import on AppInventor (Editable Code)

Step 8: .APK File for Android

Finale file for Android

Step 9: Example


KISHOREd5 (author)2017-01-20

What are its applications

dturner26 (author)2016-03-28

would this work with an arduino mega?

Divella96 (author)dturner262016-03-28

Off course, all you need is 5 analog inputs for the sensorFlex and 2 digital pins for bluetooth :)

Andrés Durán (author)Divella962016-03-30


An account (author)2016-03-29

nice a powerglove

Yup, that have all the power that your mind can give it. ;)

momoluv (author)2016-03-28

Wow. This took a lot of dedication and effort. I wish my instructables could compare to yours!

Andrés Durán (author)momoluv2016-03-30

Thank you very much! We greatly appreciate your comment

We are happy that it has been useful to you and you like it :)

Dav22 (author)2016-03-28

If interested, i find some pretty cheap parts over here...

Dav22 (author)2016-03-28

pretty cool... thank you for the instructable

About This Instructable




More by Andrés Durán:How to make a SensorGlove with Android connection
Add instructable to: