jueves, 22 de diciembre de 2011

Mindflex duel hacking (conversion a 50HZ y salida RAW )

Con un atraso de casi un año por fin los reyes me han traido el Mindflex !! , la nueva version, con la ventaja que trae dos sensores EEG (electroencefalograma) independientes.
Despues de probarlo un dia, me aburrio, no parece responder siempre igual a nuestro pensamiento, aunque si es claro que si por ejemplo cuentas para atras de 7 en 7 o deletreas el abecedario al reves detecta diferente actividad cerebral, que si estas con los ojos cerrados y no piensas en nada, pero algunas veces sin que hagas nada detecta unos cambios exagerados.

Investigando un poco se ve que esta hecho con el módulo EEG ThinkGear de la empresa NeuroSky. He podido encontrar alguna referencia a una version anterior TGAM1 Rev. 2 donde se encuentra informacion sobre la configuración a bajo nivel del chip que esta montado en el PCB.
La version del módulo del Mindflex Duel es la TGAM1 Rev. 2.8, han modificado algunas cosas en el PCB, como mi regalo ha venido de USA tiene un filtro notch configurado para 60 HZ, pero que pude cambiar a 50 HZ para europa. Para esto solo hay que desoldar y soldar dos vias del PCB, en esta revision lo han puesto mas fácil y no es necesario manipular la resistencia de 10k R23 y R27 (SMD 0402) que es muy pequeña.



Configuracion de filtro 60/50 Hz y selección modo normal/raw




Switch de selección de modo


Para el que tenga este mismo problema aqui le doy la receta, probar primero con el sensor 2, ya que si algo sale mal al menos tendremos el sensor 1, que es el que se debe usar obligatoriamente si se quiere usar solo y no en modo de dos jugadores.
Viendo el datasheet se ve que se puede obtener la salida de datos en bruto (RAW) para tener un control total haciendo el procesamiento de las señales nosotros mismos, hay dos modos de hacer esto , enviando comandos por el puerto serie (cuidado !! niveles LTTL 3.3 v) o configurando unas resistencias para indicarle al chip que modo queremos, he optado por este ultimo para no tener que modificar tanto el circuito y poder pasar de un modo a otro facilmente sin tner que enviar comandos, para esto le puse un switch de 2 posiciones lo que me permite usarlo en modo RAW para enviar los datos al PC o modo normal para usarlo normalmente con el juego (ver como hacerlo en el datasheet), la salida de datos es a 9600 cuando la salida es normal (power bands) y raw a 57600 baudios.

Para procesar los datos he realizado unas pruebas en Matlab el protocolo en modo RAW no parece ser igual que en las versiones anteriores, segun lo que veo, es asi :

0xfd
0xFF
BL
BH

raw=BL+256*BH
if (raw > 32768) raw=raw-65536

Sigo investigando...


Salida de datos por módulo Bluetooth con perfil SPP