Mind control

b(f)rutalchrist
lemontech-engineering
4 min readMar 31, 2017

Cuando era estudiante prometí comprar cosas innecesarias cuando trabajara, por esto hace unos meses compré un lector de ondas cerebrales: NeuroSky Mindwave Mobile… bajó a $81.67 USD, damn it!.

bajó a $81.67 USD, damn it!

Lo que me motivó a comprarlo fue la idea de crear un dispositivo que reconociera cuando un conductor se estuviera durmiendo al volante. Cuando llegó y lo utilicé, mi oreja me dijo que si mantenía 5 minutos más el clip renunciaría de mi cuerpo. Así, aborté la idea de ser millonario.

Después de la frustración pensé que podía hacer para justificar los $120 USD que había gastado, otra vez, innecesariamente. ¡Charlits para Lemontech!.

NeuroSky Mindwave

El NeuroSky Mindwave es un lector de ondas cerebrales que funciona similar a un EEG. Si bien este dispositivo es bastante básico sirve como primera aproximación a entender, de modo muy general, cómo funciona el cerebro.

http://www.beyondthemind.com/extras/meditation-the-brain/brain-waves-for-beginners/

Las frecuencias (ondas) que lee el NeuroSky Mindwave son: Delta, Theta, Low Alpha, Hi Alpha, Low Beta, Hi Beta, Low Gamma y Mid Gamma. Para profundizar un poco sobre esto puedes dar un mirada por acá.

Actualmente el mayor uso del dispositivo es para detectar la meditación o la atención. Con esto, se han desarrollado una infinidad de juegos, herramientas educacionales y aplicaciones de meditación. También la comunidad ha desarrollado cosas interesantes como esta chica:

Cylon.js

Cylon.js es un framework de JavaScript para computación física. Este framework proporciona un gran número de controladores para distintas plataformas y dispositivos.

El controlador del NeuroSky Mindwave proporciona eventos muy simples de utilizar:

  • attention: envía un valor de 0 a 100 cuando el código de atención es detectado en el paquete de datos.
  • meditation: envía un valor de 0 a 100 cuando el código de meditación es detectado en el paquete de datos.
  • eeg: envía un set de datos con los valores de las frecuencias de ondas.

Un ejemplo simple del manejo de un evento en Cylon.js sería el siguiente:

OpenCV

OpenCV es una biblioteca de visión computacional creada por IBM. Esta biblioteca la usaré básicamente para reconocer markers utilizando el módulo de python python-ar-markers.

La idea

¿Que podemos hacer mezclando todas estas tecnologías? intentar controlar dispositivos físicos con la mente.

Diagrama de actividad

El funcionamiento es simple. Existen 3 procesos:

  • Mindwave: encargado de obtener el evento de atención y aumentar un contador de atención.
  • Webcam (OpenCV): encargado identificar marcadores y guardar su ID.
  • Loop principal: encargado de identificar cuando se a prestado atención a a un marker y disparar el evento asociado a esto.

Implementación

Hardware

Primero que todo tendremos que hacer un pequeño h4ck! a nuestro Mindwave.

Philips SPC530NC 🙏

Ahora, los dispositivos que conectemos a nuestro Arduino son a gusto del consumidor. Para esta demo utilicé un módulo de Relé para que fuese más vistoso.

Imagen robada de internet

Y finalmente debemos asignar el maker a un dispositivo.

666

La forma de hacer el map entre el dispositivo y la aplicación la explicaré en la siguiente sección.

Software

El código puede ser descargado y probado desde:

Unas de las cosas que me gustaría explicar es el map entre los dispositivos y los markers. Existe un archivo llamado arduino_devices.js el cual contiene esta lógica.

Cada uno de los objetos tiene como key el identificador del marker generado con python-ar-markers. Lo interesante de eso es el campo action, aquí podemos agregar las acciones que queramos para cuando se preste atención a un marker. Esto puede ser una herramienta muy potente pensando en todas las posibilidades de integración que nos ofrece Node.

Al mirar el código quizás te preguntes ¿por qué no utilicé el módulo de OpenCV de Cylon.js en vez de hacer una comunicación con Python?. La respuesta es simple:

Charlits

--

--