Introduction: Como Hacer Un Guante Con Sensores Flex Y Conexión Para Android

El objetivo de este proyecto es crear un sistema de entrada para dispositivos móviles, que está controlado por los movimientos de los dedos, en este caso, con la ayuda de un guante

To see this tutorial in english, please click here : https://www.instructables.com/id/How-to-Make-a-Sens...

Step 1: Creando Las Conexiones En El Guante

Materiales:

  • guantes
  • 5 sensores Flex(de 2.2 pulgadas o 5.4 pulgadas)
  • 7 conectores negros para las conexiones negativas
  • 7 conectores rojos para conexiones positivas
  • 5 conectores verdes para la señal
  • 2 conectores amarillos para las salidas Tx y Rx del bluetooth
  • 5 resistencias de 330 ohm
  • 1 PCB perforada
  • 1 arduino UNO
  • 1 modulo bluetooth HC-06

Step 2: Soldando Los Conectores a Los Sensores Flex

  • Derecho: Positivo
  • Izquierdo: Negativo

Step 3: Uniendo Los Sensores Flex Al Guante

*IMPORTANTE: En este caso lo que se hizo fue adherirlos con hilo con el proposito de mantenerlos lo mas cerca posible de los dedos

Step 4: Soldando El Guante a La PCB

1. Soldar los 5 cables rojos de los sensores Flex juntos y soldarle los otros dos cables rojos que mas adelante conectaremos

2. Soldar el cable negro de un SensorFlex con una resistencia, y un cable verde como salida en el mismo lado de la resistencia( entre el cable negro y la resistencia), hacer esto con los 5 Cables negros, uno por cada una de las resistencias.

3. Soldar las 5 resistencias juntas (por el lado opuesto a los cables verdes), y unirles dos cables negros que mas adelante conectaremos

Step 5: Conectar Con El Arduino Y El Bluetooth

Conectar los conectores verdes en las entradas analógicas del Arduino de la siguiente forma:

  • Conector del pulgar = A0
  • Conector del índice = A1
  • Conector del medio = A2
  • Conector del anular = A3
  • Conector del meñique = A4

Conectar un conector negro en la salida GND del Arduino y el otro conector negro en la entrada GND del Bluetooth

Conectar un conector rojo en la salida 5V del Arduino y el otro conector rojo en la entrada +5V del Bluetooth

Bluetooth:

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

Step 6: Código Del Arduino

#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: Código De AppInventor

Importar a AppInventor (código editable)

Step 8: Archivo .APK Para Android

Finalmente, el archivo para Android

Step 9: Ejemplo