loading

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

What are its applications
would this work with an arduino mega?
<p>Off course, all you need is 5 analog inputs for the sensorFlex and 2 digital pins for bluetooth :)</p>
<strong><em>+1</em></strong>
<p>nice a powerglove</p>
<p>Yup, that have all the power that your mind can give it. ;)</p>
<p>Wow. This took a lot of dedication and effort. I wish my instructables could compare to yours!</p>
<p>Thank you very much! We greatly appreciate your comment</p><p>We are happy that it has been useful to you and you like it :)</p>
If interested, i find some pretty cheap parts over here... insanedeals4u.com
pretty cool... thank you for the instructable<br>

About This Instructable

5,729views

174favorites

License:

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