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

16 comentarios:

AntiTesi dijo...

hi morloklabs that's great and helpfull!!! can i contact you directly to share some tests and experiments? my email i domenico at sciajno dot net. ciao domenico

Morlok dijo...

Ok, Domenico ya contacto contigo.
Saludos Morlok.

Anónimo dijo...

Why convert to 50 Mhz?
The Mindflex duel does not work the same as simple Mindflex?

Anónimo dijo...

Yes, but in europe the power line work to 50 hz, i need configure the filter for my zone. Original Mindflexs buy in USA have setting filter to 60 hz.

Conor Russomanno dijo...

Hi Morlok. I would also like to contact you directly. I've been doing some work with the thinkgear and I'm trying to get the RAW EEG signal, but I'm in the USA so I want to keep it at 60HZ. I'm a bit confused how to switch the default settings so the RAW signal is output. Would you be willing to contact me via email? If so, shoot me a message at conor russomanno gmail com. To see the stuff I've been working on, check out this neurosky/android hack I did: http://conorrussomanno.me/2012/06/19/interactive-android-application-for-eeg-biofeedback/

Ricardo Luna dijo...

hola morloklabs, excelente trabajo quería consultarte si has podido probar conectar con éxito el mindflex al módulo bluetooth que se ve en la foto, ya que tengo un igual al que tienes y sólo recibo caracteres raros, aparentemente está correctamente configurado a 9600. Cuando lo conecto por cable al arduino funciona sin problemas.

muchas gracias.

Morlok dijo...

Si me funciona bien, debes tener en cuenta el baudrate del modulo, que este configurado en 9600, porque puede venir con otra por defecto, el que yo tengo admite comandos AT y puedes cambiarlo y se queda almacenado. Si usas el mindflex en modo RAW debes ponerlo a 57600.

Ricardo Luna dijo...

Gracias Morloklabs, al final he conseguido conectarlo, el problema es que estaba mandado datos directamente al pc y no utilizaba el arduino para que procesara los comandos que envia mindflex. Al final compré un módulo bluetooth que se pudiera configurar como master y es que va al arduino.
Quería preguntarte, que información se obtiene cuando se tiene configurado el mindflex en modo Raw

Un saludo.
Ricardo.

Morlok dijo...

En modo raw tienes la señal pura del amplificador diferencial, hay que hacer un FFT, he hecho algunas pruebas en matlab y con openvibes, la informacion que obtienes es mucho mas completa. Tienes algo para ir probando,
aqui

Ricardo Luna dijo...

Muchas gracias Morlok, voy a modificar el mindflex como indicas para poder disponer también de salida Raw con el interruptor,el problema será como modificar el modulo bluetooth para cambiar los baudios sin tener que conectarlo con cable

Ricardo Luna dijo...

Ya he modificado Mindflex para trabajar en Raw y desde luego no tiene nada que ver, he probado los que me mandabas y luego los que vienen de ejemplo y se ven resultados más claros.
Me he instalado también el entorno Adastra y probaré a ver que tal va con .net

saludos.

Anónimo dijo...

Hi,

I am working on one of my projects related to bio-sensors, and researching on Mindflex duel. Can anyboy tell me, is there any provisioning for finding skin impedance using stimulation or is there any stimulation circuit in it? Sincere thanks for help.

Morlok dijo...

The thinkger is only amp diferential and adc sigma converter, no injection sink :-(

dallan dijo...

I have a very simple question Morlok, far below what you are doing which is fascinating.

I bought a Mindflex from US but need to make the 50hz conversion (only) so I can use it.

Would you mind very much, to please give simple directions on what I need to do in this case?

Muchas gracias!deb
dillydallan@yahoo.com

Morlok dijo...

Ok, es muy simple para el Mindflex Duel, para cambiarlo a 50 HZ, haz click en la segunda fotografia de esta entrada para ver bien en detalle.
Debes remover el estaño que une el pad de la izquierda con el pad central y unirlo con el de la derecha.

60 HZ -> 1---2 3

50 HZ -> 1 2---3

Kostas dijo...

Buen trabajo Morlok. Yo tengo el Mindwave Mobile y ahora he adquirido el Mind Flex Duel y me gustaría conectarlo por Bluetooth al PC para procesar sus datos. Me podrías dar los datos exactos de la placa Bluetooth, conexiones, etc...? Gracias. Mi correo es kostas@ktthome.com