Backyard Brains Logo

¡Neurociencia para Todos!

+56 9 9733-6213


productos ()

Experimento: Interfaz Humano - Humano

Has tenido ganas alguna vez de abandonar tu fuerza de voluntad y simplemente dejarte llevar? Si no, quizás has tenido el deseo de tomar el mando de la voluntad de otra persona. Pues bien, ahora podrás lograrlo con nuestro nuevo experimento "Interfaz Humano - Humano"

Tiempo 2 horas
Dificultad Avanzado

¿Qué vas a aprender?

Continuando nuestros experimentos de 1) Neuroprótesis y del 2) EMG SpikerShield, vas a aprender a usar tu señal muscular para controlar otros dispositivos; en este caso, vas a controlar un equipo TENS (Estimulador Nervioso Eléctrico Transcutáneo) para excitar y contraer el músculo de otro ser humano.

Prácticos Requeridos

  • EMG SpikerShield - Debieras estar familiarizado el SpikerBox EMG y con Arduino


Armando la Conexión:

¡La Interfaz Humano-Humano ya está disponible como un paquete pre-armado! Viene con todo lo que necesitas, incluyendo una placa arduino previamente programada con el código HHI. Para someter al resto a tu voluntad lo antes posible, ¡revísalo en nuestra tienda! Si eres un diseñador de neuroprótesis que recién está empezando, e igual te interesa construir y conseguirte las piezas por ti mismo, revisa nuestra guía Hazlo Tú Mismo para ver las instrucciones.

Antecedentes

Nota: Por definición, un equipo TENS entrega una corriente suficiente para generar una contracción muscular. No coloques los electrodos en los músculos de la garganta o el pecho. Este experimento es adecuado para estudiantes universitarios. Para realizarlo a nivel escolar (educación media), se requiere de supervisión adulta.

Anteriormente hemos hablado sobre las "neuroprótesis", el diseño de máquinas con las que se logra crear una interfaz con neuronas vivas para controlar un dispositivo, o para llevar a cabo una "sustitución sensorial". Pero, ¿y qué pasa con los músculos? Si una persona tiene sus nervios raquídeos dañados, los músculos mismos pueden ser estimulados. Esta línea de investigación se conoce como "estimulación eléctrica funcional".

La estimulación eléctrica funcional se usa habitualmente para, por ejemplo, ayudar a una persona a pararse, o para mejorar su caminar ayudéndola a mover un pie hacia adelante.

En otros casos, como en una persona que tiene una extremidad artificial -un brazo robótico por ejemplo- es posible usar la actividad eléctrica generada por las señales electromiográficas de sus músculos pectorales para controlar los motores y el sistema de control en el brazo robótico. Un ejemplo notable es el caso de Jesse Sullivan, quien perdió sus brazos hacienda una instalación eléctrica.

Relación con el RoboRoach

Los fanáticos del RoboRoach siempre nos preguntan: "¿Y cuándo van a hacer que esto funcione en humanos?" Nuestra respuesta, para satisfacer las demandas de nuestros clientes fue Society. Pero esto no fue suficiente. El público demanda algo más directo.

Por otro lado, los detractores del RoboRoach nos preguntan: "¿Te gustaría que otra persona te controlara usando estimulación eléctrica?" Ahora, luego de meses en el laboratorio, por fin tenemos la respuesta...

"...depende".

Si la persona que te está controlando te gusta, puede ser bastante agradable.

Downloads

Your HHI arduino comes pre-loaded with the HHI code. If you use your arduino for other projects, if you accidentally press the reset button, or would like to adjust the thresholds, you will have to re-upload the code! You can do this with the Arduino software. If you are new to Arduino and need to learn how to upload code, check out this helpful guide

Download our Arduino(.ino) Human-Human-Interface Sketch

Video

Antecedentes Técnicos: Cómo Construirlo

Esto es lo que vamos a armar:

Puedes comprar cualquier TENS (Estimulador Nervioso Eléctrico Transcutáneo) disponible en el mercado. Nosotros usamos un TENS 3000 de Current Solutions en Austin, TX.

Aquí puedes ver que lo tenemos configurado a pulsos de 50-80 ms de duración y 10 Hz de frecuencia. Un TENS típico tiene un cable de salida que consta de dos cables. Uno es de señal y el otro de tierra. Tienes que cortar uno de estos cables para armar los cabezales que se conectan al EMG SpikerShield (nuestro SpikerBox EMG que se monta en un Arduino).

Las instrucciones para armar el cable están aquí.

Añadimos un poco de espacio extra en el SpikerShield EMG para que puedas soldar tu propio circuito. Vamos a usar este espacio para soldar el relé y el LED rojo en el EMG SpikerShield para el experimento de Interfaz Humano - Humano.

El circuito que le agregamos al SpikerShield EMG es bastante simple, y consiste de una salida digital que va a un LED y otra salida digital que va a un relé de 5V.

Fíjate que en la imagen de arriba agregamos un Jumper entre la tierra y JFP por razones de estabilidad. Una vez que hayas soldado el circuito al EMG SpikerShield, monta el EMG SpikerShield sobre el Arduino en la orientación correcta.

El Arduino es alimentado por un cable USB que puedes conectar a tu computador. Vas a necesitar un computador para subir nuestro código HHI_led_strip_switches.ino a tu Arduino.

Explicación del Código HHI_led_strip_switches.ino

Puntos a destacar:

  1. Tenemos la entrada del EMG en analog-in 0. Esto se hace con un jumper. Puedes cambiar la posición del jumper para fijar el analog-in a analog-in 0 (izquierda), analog-in 1 (centro), o analog-in 2 (derecha). Esto te permite montar hasta three EMG SpikerShields al mismo tiempo si lo deseas, para hacer otros experimentos haciendo registros de múltiples grupos musculares...
  2. Tenemos la salida del LED en Digital Out 3.
  3. Tenemos la salida de Estimulación (para activar el relé) en Digital Out 5.

En el código, la función analogRead se usa para convertir la señal EMG a un número entre 0 y 10. Este número, que se actualiza cada 100 ms, se llama "finalReading". Ahora, establecemos un umbral en un bloque if, con la línea " if (finalReading > 4)". Cuando la señal EMG sube de "4" activamos el relé con Digital Out 5. Esto envía un high de 1 segundo, activando el relé, y permitiendo que la corriente fluya a través del equipo TENS y estimule el músculo de tu compañero. Al mismo tiempo, encendemos el LED con Digital Out 3 para darle a tu compañero una señal visual para saber si está o no activando el relé con su actividad muscular. Puedes cambiar este valor, "4", a un valor menor para que sea más fácil lograr la estimulación (amplitud menor del EMG), o a un valor mayor para hacer más difícil la estimulación (amplitud mayor del EMG).

El Código

/* Arduino Code for an EMG SpikerShield to control a TENS device */
#define NUM_LED 6  //sets the maximum numbers of LEDs
#define MAX_Low 9 //for people with low EMG activity
#define MAX_High 18//for people with high EMG activity
#define Threshold 3 // this sets the light to activate TENS
int reading[10];
int finalReading;
int StimPin = 3; // TENS Digital 3
int SwitchPin = 4;   // pushbutton connected to digital pin 4 -  this will momentarily turn on TENS
int SwitchThreshold = 7; //pushbutton connected to digital pin 7 - this will switch thresholds
int SwitchState = 0;
int SwitchThresholdState = 0;
int MAX = 0;
byte litLeds = 0;
byte multiplier = 1;
byte leds[] = {8, 9, 10, 11, 12, 13};

void setup(){
  Serial.begin(9600); //begin serial communications
  pinMode(StimPin, OUTPUT); // Set TENS output to StimPin
  pinMode(SwitchPin, INPUT);      // sets the digital pin 4 as the switch input
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
    pinMode(leds[i], OUTPUT);
  }
  MAX = MAX_High; //This sets the default to people with high EMG activity.
}

void loop(){
    //note the serial print stuff is sjust debugging tools
    SwitchThresholdState = digitalRead(SwitchThreshold);
    if (SwitchThresholdState == HIGH){ // This will allow the switching between a low threshold and high threshold state on S2
    if (MAX == MAX_High){
     MAX = MAX_Low;}
    else{
     MAX = MAX_High;} 
    while (SwitchThresholdState == HIGH) { // This will pause the program while the person is touching the threshold button, 
    SwitchThresholdState = digitalRead(SwitchThreshold);  
    delay(10); }                         // so it doesn't flip back and forth while button is pushed
    }

    SwitchState = digitalRead(SwitchPin);
    //Serial.println(SwitchState);
    if (SwitchState == HIGH){ // This will activate the TENS if the PushButton is pressed on S1
    digitalWrite(StimPin, HIGH); 
    //Serial.println('Stim');
     while (SwitchState == HIGH) { // This will pause the program while the person is touching TENS test button
    SwitchState = digitalRead(SwitchPin);  
    delay(10); }    
    } 
  
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
    reading[i] = analogRead(A0) * multiplier;
    delay(2);
  }
  for(int i = 0; i < 10; i++){   //average the ten readings
    finalReading += reading[i];
  }
  finalReading /= 10;
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low and stim pin low

    digitalWrite(leds[j], LOW);
    digitalWrite(StimPin, LOW); 
  }
  //Serial.print(finalReading);
  //Serial.print("\t");
  finalReading = constrain(finalReading, 0, MAX);
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
  //Serial.println(litLeds);
  
  for(int k = 0; k < litLeds; k++){
    digitalWrite(leds[k], HIGH); // This turns on the LEDS
    if (k >= Threshold){
      digitalWrite(StimPin, HIGH); // This turns on the TENS as a function of which LED is lit
    } 
  }
   //delay(10);
  //for serial debugging, uncomment the next two lines.
  //Serial.println(finalReading);
  //delay(100);
}
    
    

Procedimiento Experimental

El Controlador

  1. Conecta los cables de electrodo al EMG SpikerShield. Normalmente ponemos los electrodos EMG en el antebrazo (rojo y negro en el músculo del antebrazo) y la tierra (la pinza sin funda) en el dorso de la mano.
  2. Ahora pídele al controlador que flecte los músculos del antebrazo. Una flexión fuerte debiera encender el LED por un segundo. Si el LED no se enciende, puedes:

    a) cambiar el valor numérico de la declaración if (finalReading > 4) en el código Arduino (usando el Software de Arduino) a un valor menor para bajar el umbral. Ojo, tienes que volver a subir el código al Arduino si quieres cambiar este valor.

    b) subir la ganancia en el EMG SpikerShield girando el tornillo naranja del potenciómetro en sentido contrario a las agujas del reloj.

  3. Nota: Si el LED comienza a parpadear por sí solo, significa que el circuito está inestable, debido a que la ganancia en el EMG SpikerShield es muy alta. Para arreglarlo, puedes girar el tornillo naranja del potenciómetro en el sentido de las agujas del reloj.

Ahora ya estás listo para conectar al "Humano Controlado".

El Controlado
  1. Lo primero que tienes que hacer es encontrar el umbral de tu compañero. Coloca dos electrodos EMG de superficie a través del nervio cubital, que recorre la cara frontal del antebrazo.
  2. Ahora, conecta el equipo TENS al antebrazo, usando el cable TENS modificado que armaste antes.
  3. Pídele a tu compañero que aumente lentamente la amplitud del TENS hasta observar un cambio visible en la actividad muscular. Debieras tener los pines macho unidos, usando el pequeño conector que construiste. La estimulación se siente como si te estuvieran pinchando suavemente los músculos con agujas. No es algo demasiado desagradable, pero a algunas personas puede no gustarle.
  4. Ahora que han ajustado el umbral, conecta los pines del conector del electrodo a la salida de Estimulación del EMG SpikerShield.
  5. ¡Y ya estás listo! Ahora, cuando el humano "Controlador" flecte sus músculos, los músculos del humano "Controlado" debieran contraerse también. ¡Disfruta de tu interfaz humano - humano!

¡Sé creativo! ¡Cuéntanos a qué se te ha ocurrido conectar tu señal EMG! ¡Deja que tu mente y el inventor dentro de ti fluyan!

Preguntas de Discusión

  1. Quizás notaste que el umbral para activar el LED y el relé es distinto entre humanos. ¿Por qué crees que pasa esto?
  2. El equipo está armado con un solo canal, pero puedes montar más SpikerShields para tener hasta tres canales de entrada analógicos (y nuestro equipo TENS tiene dos canales de salida!) Si tienes dos grados de control de salida y tres señales de control de entrada, ¿crees que sería posible obtener movimientos más sofisticados?
  3. Si bien la estimulación muscular con TENS es interesante, no llega a ser tan elegante y fluida como los movimientos naturales. ¿Por qué?
  4. Este experimento es una demostración muy buena y entretenida de Neuroprótesis, tanto para salas de clase como para el público en general. Sin embargo, ¿qué crees que hace falta para que este equipo pueda ser utilizado a nivel clínico? Este experimento da pie para hacer varias bromas sobre lograr controlar a un ser humano pero, ¿qué se necesita para tener un control completo sobre sus movimientos?

Agradecimientos

Agradecemos especialmente a Matías Gutiérrez, de la empresa chilena bioquimica.cl, por desafiarnos a construir y preparar una demostración de este experimento para los ChileVa, eventos de divulgación científica en los que el participa.

Finalmente: Gracias a Ítalo Ahumada Morasky, un artista chileno que nos hizo todos estas ilustraciones.