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

22 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.

Unknown 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/

Unknown 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.

Unknown 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

Unknown 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

Unknown 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

Erik Landeros M. dijo...

Hola , primero que todo felicitaciones por tu gran trabajo. Te comento que soy un completo inexperto en electrónica , pero si conozco de ciencias de la salud , es por lo anterior que me anime en conectar el mindflex a un modulo xbee serie 1 , todo bien hasta ahí. El problema me surge cuando quiero recibir la información de mindflex en el pc. Mi pregunta es , existe algún programa (aparte de X-CTU) en el cual pueda cargar las librerías de procesamiento ( Brain Grapher etc)?Desde ya muchas gracias por tu respuesta. Saludos

Unknown dijo...

I've been doing some research on the TGAM1 datasheets, and for anyone interested, the 50Hz/60Hz filter is selected by the jumper labelled "M" on the older (single) Mindflex.
This is the pdf I read it in:-
http://wearcam.org/ece516/neurosky_eeg_brainwave_chip_and_board_tgam1.pdf (Page 8)

Great blog, by the way, and very clear photos. Bravo. :)

Unknown dijo...

Hello. I have a big problem. Two years ago I bought a headset mindvave Mobile based tgam1. This headset worked fine. In April 2015, I took a break from work with a headset and put it in the closet (I have not pulled out of the headset battery). In December 2015 I decided to resume work with the headset - I got it turned on but it does not work - at first blue light lights up and glows a few seconds but then the light flashes and Think Gear displays a message that there is no connection. - This proshodit on my computer (Winds 7). And on my Android device, the signal stays lit, but the data does not occur. Tell me what you can do whatever headset resumed work?

Paci dijo...

Hola amigo, te felicito por tu guia, esta muy buena. Por mala suerte actualmente tengo el Mindflex con el TGAM1 ver 2.3 (la version vieja, la misma http://wearcam.org/ece516/neurosky_eeg_brainwave_chip_and_board_tgam1.pdf).
Mi pregunta es: sabes como hacer la conversion a 50Hz de esta version? Me podrias explicar? mi correo es pacimedina@gmail.com
Te agradesco mucho

Tim dijo...

Hello,

Thanks to your post I could found the signal problem I had.
I have the module rev.2.9 is very similar with your but it has a resistor on the back to perform the notch filter shunt.
Have change it and now the values are already better.
But still have problems with raw values most of the time if displays:

ERROR: Packet too long 170
49,55,48
ERROR: Packet too long 170
49,55,48
ERROR: Checksum
49,55,48
ERROR: Checksum
49,55,48
ERROR: Checksum
49,55,48

do you have any idea what could it be?
Thanks.

If you would like I can send you a picture of my module and the change made.

Tim

Unknown dijo...

Hola amigos Ha pasado mucho tiempo desde el último comentario, pero acabo de comenzar a lidiar con este juguete. ¿Quizás alguien compartirá el código para que arduino descifre los datos sin procesar? ¿o explicarme que descifre la secuencia 0xaa 0xaa 0x04 0x80 0x02 0xXX 0xXX 0xXX? Si el primer 0xXX es el byte más significativo y el segundo es el menos significativo, obtienes algún tipo de tontería. Mi bandeja de entrada einazarov@hotmaii.com