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: https://www.instructables.com/id/Como-Hacer-Un-Guan...

Step 1: Creating the Glove Connectors

Materials:

  • 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

  • Right: Positive
  • Left: Negative

Step 3: 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

  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

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:

  • 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

Share

    Recommendations

    • PCB Contest

      PCB Contest
    • Big and Small Contest

      Big and Small Contest
    • First Time Author

      First Time Author

    10 Discussions

    0
    None
    KISHOREd5

    1 year ago

    What are its applications

    0
    None
    Divella96dturner26

    Reply 2 years ago

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

    0
    None
    momoluv

    2 years ago

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

    1 reply
    0
    None
    Andrés Duránmomoluv

    Reply 2 years ago

    Thank you very much! We greatly appreciate your comment

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

    0
    None
    Dav22

    2 years ago

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

    0
    None
    Dav22

    2 years ago

    pretty cool... thank you for the instructable