Accionar mecanismos con el pensamiento

Por Soloelectronicos @soloelectronico

Las personas con discapacidades graves no pueden interactuar con su entorno como la gente normal. Ellos siempre necesitan ayuda para hacer pequeñas tareas como encender un ventilador o un televisor. Para cerrar esta brecha entre un paciente y un interruptor es necesario que haya alguna manera que no requiera movimientos musculares. La mejor manera que podía imaginar era la tecnología EEG. Esto significa que uno puede controlar un dispositivo por el uso de sus / sus ondas cerebrales sin realizar ningún movimiento físico.

Para ello BhuvneshT1  ha usado un juguete disponible comercialmente denominado Mindflex ,el cual utiliza el mismo chip Neurosky EEG. El autor integró un módulo Bluetooth HC-05   con  el auricular NeuroSky MyndWave para  por medio de ingeniería inversa  asi  como con  la ayuda de un Arduino y Processing BhuvneshT1   fue capaz de controlar un ventilador.

Los componente usados son:

  • Un auricular EEG
    Solía ​​Mindflex el auricular del juguete, ya que puede funcionar de la misma en comparación con otros auriculares a un precio razonable muy bajo. Usted puede conseguir uno en Ebay por un precio tan bajo como $ 15.
  • Un HC-05 o HC-06 del módulo del bluetooth
    Se utiliza para ajustar el auricular Mindflex – $ 6.
  • Arduino Uno – $ 12
  • Un pequeño ventilador
    Usé un pequeño ventilador del equipo de 12V para la demostración, ya que estaba mintiendo alrededor y satisfacer la necesidad.
  • Tres pequeños cables de puente.

Hay dos partes en el auricular. Un lado contiene las baterías y el otro que contiene del interruptor   contiene tambien la electrónica necesaria

  • Abra el lado que tiene un interruptor en él.
  • Retire los 4 tornillos para acceder a la placa de circuito.
  • Una vez dentro, quite los 2 tornillos que sujetan la placa de circuito a la carcasa.

Ahora tiene que soldar tres pequeños cables al circuito dentro de la caja.

  1. “T” (de transmisión) pines en el chip
  2. Uno con el GND (tierra).
  3. En tercer lugar, con el VCC (Power).

Espero que su módulo bluetooth venga on cables de puente hembra-hembra. Ahora,

  • conectar el cable soldado al pin T del circuito con el RXD
  • GND a GND
  • y el VCC a la VCC del módulo Bluetooth.

Ahora aislar todo y fijar el módulo Bluetooth con el auricular. Coloque las baterías en el otro lado del auricular y encenderlo. Una luz roja en el auricular y una luz en el módulo Bluetooth muestra que esta funcionando

El siguiente paso será el de establecer comunicación entre el auricular y el ordenador para leer los datos de EEG de ella,para lo cual primero debeemparejar el módulo Bluetooth a la computadora (puede seguir los pasos que se indican en este enlace ).

Ahora, Descargue BrainWaveOSC para su plataforma y descomprimirlo en una carpeta.

Antes de ejecutar la aplicación, tendrá que identificar cómo el sistema ve su dispositivo bluetooth.
Usuarios de Windows:
Usted necesita encontrar el puerto COM que el dispositivo Bluetooth está conectado. Este enlace le ayudará a encontrar el puerto COM al que está conectado el dispositivo Bluetooth.

Una vez que encuentre el dispositivo, abra el archivo settings.xml ubicado en la carpeta de datos de BrainWaveOSC.
La cuarta línea debe decir algo así como COM6 entre las etiquetas. Cambiar eso a su cadena de dispositivo que ha encontrado antes.

Después de abrir la aplicación, se debe comenzar con un panel rojo a la izquierda y se pone verde una vez que se inicia la recepción de datos. Eso es todo, usted está leyendo sus ondas cerebrales de la corteza prefrontal del cerebro, que por lo general se ocupa de la lógica.

Ahora nuestro siguiente paso será utilizar estos datos para controlar un ventilador utilizando Procesamiento y Arduino

Processing es un lenguaje de programación de código abierto que está diseñado para ser fácil de usar y es ideal para principiantes. Se basa en Java, por lo que si usted está familiarizado con eso, verás algunas de las similitudes. Descárgalo aquí e instalarlo antes de empezar.

Ahora tenemos que analizar los datos (mensajes OSC) recibida a través BrainWaveOSC.

Comience abriendo procesamiento y la creación de un nuevo boceto.

Importe la Biblioteca OSC

A partir de un boceto en blanco, tendrá que importar la biblioteca de la OSC.Puede hacerlo escribiendo:

import oscP5.*;

or

Go to Sketch->Import Library->oscP5.

Si usted no puede encontrar oscP5, puede que tenga que añadir primero yendo a bosquejos> Importar Library-> Añadir Biblioteca … y la búsqueda de oscP5.Una vez hecho esto, tendrá que crear un objeto vacío para que en la siguiente línea escribiendo:

Oscp5 OscP5;

Crear su configuración y dibujar funciones

Esta es fácil. Sólo tienes que escribir lo siguiente:

void setup () {

}

void draw () {

}

Acaba de crear el esqueleto.

Ahora que usted tiene su esqueleto, vamos a rellenarlo y comenzar a leer los mensajes OSC difundidos por BrainWaveOSC. Asegúrese BrainWaveOSC se está ejecutando y el auricular está conectado. Usted puede decir por el color del panel de la izquierda. Si es verde, entonces estás bien.

Encontrar a su puerto de OSC
En BrainWaveOSC, busque el puerto OSC. En la esquina superior izquierda, debería ver algo como:

OSC – 127.0.0.1:7771

El 127.0.0.1 es la dirección ip localhost y 7771 es el número de puerto. Tendrá que guardar este número de puerto para después.

Configuración de procesamiento para recibir mensajes OSC

Ahora usted querrá añadir esta línea dentro de su función de configuración () entre las llaves. Consulte las imágenes como una referencia.

Su función setup () debería tener este aspecto:

void setup () {

oscp5 = new OscP5 (esto, 7771);

}

¡Genial! Sólo ha contado la aplicación para empezar a escuchar en el puerto 7771 para mensajes OSC entrantes. Ya que está en la función de configuración, sólo va a correr una vez al principio.

Recibir los mensajes OSC

A continuación vamos a crear una función para recibir los mensajes OSC.Mientras setup () sólo se ejecuta una vez, y dibujar () funciona todo el tiempo, la función crearemos sólo se ejecuta cuando se recibe un mensaje OSC.

Crear una función que tiene este aspecto:

anular oscEvent (OscMessage theMessage) {

// Imprimir la dirección y typetag del mensaje a la consola

println (“Mensaje recibido OSC El patrón de dirección es!” + theMessage.addrPattern (+) “La typetag es:”. + theMessage.typetag ());

}

Analizamos  el código  hacia abajo:

void oscEvent (OscMessage theMessage) dice que esta función se llamaoscEvent, y se necesita un objeto OscMessage como un parámetro llamado theMessage. Ignorar el vacío de momento, significa que no se espera que la función para devolver un valor.

La segunda línea es println, que es la abreviatura de impresión Line. Esto escribe mensajes en el área de color negro debajo de su editor de texto cuando se ejecuta la aplicación (llamada la consola). El contenido de println dicen que imprimir “OSC Mensaje recibido!” y utiliza dos métodos de OscMessage:

  • Patrón Dirección – Esto es como el tema de un correo electrónico. Es el nombre del mensaje
  • Typetag – Esto le indica lo que los contenidos del mensaje son
    • Por ejemplo, un typetag de iii significa que hay 3 números enteros dentro del mensaje

Ejecutar la aplicación

Lo que tenemos que hacer ahora es extraer los números de los mensajes que hemos estado recibiendo y hacer algo útil con él.Para esto, yo sólo voy a centrar en el valor Atención procedentes de BrainWaveOSC. Así que todo lo que tenemos que hacer es comprobar los mensajes entrantes para él y sáquelo.Dentro de su función oscEvent, tendrá que añadir:

if ( theMessage.checkAddrPattern(“/attention”) == true ) {

println (“Su atención está en:” + theMessage.get (0) .floatValue ());

}

Impresionante. Así que ahora estamos recibiendo sólo los valores de atención e imprimirlas a la pantalla. Necesitamos una manera de pasar esta información a otra función para que podamos hacer algo con él. La forma más fácil de hacerlo es con una variable global. Añadir esta línea debajo

Oscp5 OscP5;

float currentAttention;

Cambie su función oscEvent a tener este aspecto:

if (theMessage.checkAddrPattern (“/ atención”) == true) {currentAttention = theMessage.get (0) .floatValue (); println (“Su atención está en:” + currentAttention); }

Ahora, usted ha creado una variable que se puede acceder desde cualquier función y es actualizado cuando oscEvent ve un mensaje de OSC con el patrón de dirección “/ atención”.POR TANTO AHORA  USTED ES CAPAZ DE EXTRAER LOS VALORES DE ATENCIÓN A PARTIR DE LSO DATOS EEG, el siguiente paso seria enviar este valor a su Arduino Uno:

  • Conecte el Arduino al ordenador.
  • Compruebe el número de puerto al que esté conectada al.
  • Enviar valores de la transformación de este puerto.
  • Escribir un boceto que lee los valores enviados desde el procesamiento.
  • Conecte el ventilador a cualquiera de los pines de Arduino.
  • Establezca un valor de umbral de la atención y hacer un disparador para el ventilador para encender y apagar.

Fuente  aqui