viernes, 23 de marzo de 2012

Mindflex Duel procesado RAW con Openbive

Openbive es un proyecto de software libre para procesado de señales, soporta muchas interfaces EEG , incluida la del Mindset de NeuroSky.
Como el mindflex duel incluye un chip ThinkGear es posible utilizar este software de procesamiento si se lo configura con salida RAW .

Descargar e instalar openvibe según nuestro sistema operativo.

http://openvibe.inria.fr

El programa tiene dos partes una que conecta la información procedente del Mindflex por puerto serie (57600 bauds, en mi caso Bluetooth en COM4), con una aplicación en el IP LOCALHOST en el puerto de red 1024.

Ejecutar Openvibe adquisition server
y elegir el dispositivo MindSET V. 2.1+ y click en conectar.

Se abrirá una consola donde nos informara que se ha conectado correctamente
debe decirnos "connection succeeded!!"


Click en el botón REPRODUCIR



Luego ejecutar Openvibe designer

Descargar estos escenarios básicos de prueba ya configurados para el mindset

https://sites.google.com/site/morlokstore/signal-display_serv.xml

https://sites.google.com/site/morlokstore/power-spectrum.xml


Abrirlos desde el Openvibe designer y pulsar el boton PLAY

Ahora a experimentar y aprender a usar las muchas opciones que nos da este excelente software.
Al tener el mindset solo un canal hay muchas opciones que no podremos aprovechar, pero si creo se podrían conectar los dos Mindflex Duel para tener dos canales.


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

sábado, 27 de noviembre de 2010

Spotijump, nueva versión disponible.



A pedido de los usuarios de spotijump 0.4 , y luego de muchas quejas por la poca amigabilidad (del software, no mía) me he puesto con una mejora al programa, en ésta ya no es necesario que el Spotify esté en primer plano y puede usarse mientras se trabaja en otra aplicación...con algún "pero" que ya explicaré.

Ahora lo que no les gusta a los cómodos...

Instrucciones de instalación:
-Copiar Spotijum_05.exe en la carpeta de Spotify (C:\archivos de programa\spotify).
-Crear un acceso directo a Spotijump en el escritorio.
-Cerrar la carpeta (importante, tiene que estar cerrada cuando inicia Spotijump).
-Doble click en el acceso directo creado.
-Esperar se inicien los dos programas (spotijump inicia automáticamente al spotify).
-Asegurarse este marcada la casilla Mover TESPOINT ( es el cuadrito rojo).
-Arrastrar el TESTPOINT al final de la barra de progreso de reproducción (donde se testean los pixeles para detectar cuando llegue la bolita blanca).
-Pulsar el botón GUARDAR, y ya la próxima vez se recordara la coordenada del testpoint.
- Desmarcar la casilla Mover TESTPOINT

Recomendaciones y casos de uso:
-Usar spotify normalmente, asegurándose dejar activa la barra de selección de temas en el lado derecho , en los temas y no en las listas de reproducción.

- Cuando se quiera utilizar otra aplicación en primer plano, deberá tenerse en cuenta que tiene que estar visible la barra de progreso de reproducción del Spotify, se logra poniendo la ventana de la aplicación que se esta usando en modo restaurar y ajustar la ventana en la parte inferior para que quede visible la parte inferior del Spotify.

- Si se dispone de dos monitores y configurado en escritorios separados, en una se pone el spotify y en la otra nuestra aplicación, teniendo en cuenta de arrastrar el TESTPOINT hacia el otro escritorio, (por un motivo no resuelto, para pasar de un escritorio a otro debo arrastrarlo por la parte superior del escritorio, de la mitad para arriba).

- He probado utilizarlo con escritorios virtuales, pero no he tenido éxito, ya que no son realmente escritorios, sino que cambian las ventanas que están en un mismo escritorio. Si alguien consigue utilizarlo con un escritorio virtual, agradezco la información.

- Si en algún momento no sabemos donde esta el TESTPOINT, sobretodo cuando se trabaja con dos escritorios, al hacer click en la palabra en azul MORLOKLABS se ubica en la posición inicial sobre la ventana de SpotiJump.

- Puede haber algún problema con las notificaciones de Windows , si tapan el final de la barra.

El que quiera probar la nueva versión de Spotijump aquí lo tiene, bajo su propia responsabilidad y solo con fines educativos.


http://sites.google.com/site/morlokstore/spotijump05_b.zip

sábado, 30 de octubre de 2010

Modificación software LFI Laser Show para control por puerto paralelo


He conseguido en ebay unos galvos chinos de 20k muy baratos así que me he sacado el gusto, hace años me interesaba el tema pero eran inaccesible . Para probarlos tenia dos opciones utilizar una tarjeta de sonido a la que se le eliminan los condensadores de desacoplo y utilizar el software LFI o LASERBOY que son libres, o utilizar el puerto paralelo y un circuito auxiliar (dos registros y DACs) , para lo cual se utiliza el software POPELSCAN anterior a la versión 4.0 ya que no tiene mas soporte para puerto paralelo.
Me gusta mas el LFI, que tiene mas prestaciones, pero no tiene soporte para puerto paralelo, y como tengo ya hecho una tarjeta DAC compatible , preferí intentar modificar las fuentes para poder controlar el laser con el PP.
Para acceder al puerto he agregado la DLL inpout32, escalar los puntos de la imagen a 8 bits y escribirlos en los registros de los DAC según el protocolo usado en POPELSCAN.
Aquí están por si alguien la necesita. El ejecutable y las fuentes , supone el PP esta en HEX 0378.

Ejecutable para WIN 32bits
http://sites.google.com/site/morlokstore/lfi_DAC_PP_binary.rar

Fuentes
http://sites.google.com/site/morlokstore/lfi_dacpp_source.rar

domingo, 1 de noviembre de 2009

SpotiJump: Saltar publicidad de Spotify Free (prueba de concepto)

Aprovechando el tiempo de ocio disponible de este puente de noviembre, en un momento de inspiración creativa, he creado una pequeña aplicación para saltar la publicidad de audio del Spotify, es una primera versión , que ni se si la continuare, tiene algunas limitaciones, pero puede ser interesante el concepto.

Como funciona? La idea es simular que una persona esta operando el Spotify, pasando al siguiente tema cuando falta un segundo para que termine,lo que no afecta mucho ya que todos los temas ya no tienen sonido los 4 - 5 segundos finales . De esta manera Spotify no inserta publicidad, al menos en la versión actual, que pueden cambiarlo en cualquier momento y mi programa ya no serviría.

Para detectar que falta un segundo para terminar de reproducir, uso un sistema de "visión" de la pantalla, capturando la imagen de la barra de progreso y comparándola con un patrón previamente almacenado, cuando la imagen capturada coincide , el programa simula se ha pulsado la tecla de flecha hacia abajo y ENTER, de manera que Spotify salta al tema siguiente.
He reutilizado algo de mi código de un antiguo proyecto de cuando trabaje en un software lector de pantalla para ciegos.


Limitaciones:
- Spotify debe estar activo en pantalla completa y tener el foco del teclado en la lista de reproducción. ( la barra de selección debe estar celeste )
- La configuración inicial esta hecha para Win XP con pantalla de 1280 x 800 y la barra de programas visible.


Como se usa?
Tiene que ejecutarse en todo momento minimizado, y Spotify en pantalla completa y con el foco de teclado en la barra de seleccion de temas (color celeste)

En caso de otra configuración de pantalla, o en Vista o Win 7 , debera tomarse un nuevo patrón, para ello restaurar la ventana de SpotiJump y mover el puntero del raton sobre la zona final de la barra de progreso de Spotify, en ese momento se debe estar reproduciendo un tema , cuando el punto blanco este por llegar al final, pulsar la tecla CONTROL . Luego pulsar el boton GUARDAR para almacenar el patrón en disco, el cual se cargara automáticamente al iniciar SpotiJump.
Si no se desea avance de tema y reproduzca el mismo o si se reproduce desde COLA DE REPRODUCCION , desmarcar la casilla de Avance automático.












El que quiera probarlo aquí lo tiene, claro como siempre en estos casos , bajo su propia responsabilidad y solo con fines educativos.

http://sites.google.com/site/morlokstore/spotijump.rar


Hay una ultima version mejorada en esta otra entrada:
http://morloklabs.blogspot.com/2010/11/spotijump-nueva-version-disponible.html

lunes, 4 de junio de 2007

Fonera Robot

Este proyecto consistió en hacer un robot con Linux embebido a muy bajo costo, pensándolo bien, creo que me ha salido 0 (cero) euros :-) , no tengo ningún cargo de conciencia con respecto al haber utilizado una fonera para algo que no era para lo que la regalaban los de FON, en primer lugar si te regalan algo puedes hacer lo que te plazca, segundo, indirectamente le hecho publicidad , al menos gente que no conocia la empresa ahora la conoce.
Bueno no me extenderé sobre si Fon violo o no la GPL al distribuir el software capado y que no se podía compilar e instalar el software de manera independiente. Lo que si contare rapidamente es que Fon existe gracias a los hacker de Seattle wireless y su lucha contra Cisco , para que liberaran el software del Linksys wrt54 (descubrieron tenia Linux internamente), gracias a eso se inicio el proyecto OpenWrt , con que funciona el software de Fon.

Bien centrándome en el FonBot, comentar que funciona con 2 motores paso a paso, que si bien no tienen velocidad , si precisión, que era para lo que originalmente habia creado la base movil, ya que lleva un sistema para subir y bajar un marcador, de manera que pueda dibujar lineas en el suelo. Una replicación de los trabajos pioneros del MIT en robótica movil y educativa de los años 60, con su tortuga logo.
Puede ser controlado manualmente desde su pagina web o programar movimientos autónomos con scripts desde una consola SSH.

Los comandos de movimiento del FonBot son:

Girar derecha GD [grados]
Girar izquierda GI [grados]
Avanzar AV [cm]
Atras AT [cm]
Subir marcador LAPIZ 1
Bajar Marcador LAPIZ 0

He querido respetar la esencia del lenguaje LOGO [1]. Deje la tarea inconclusa de portar el LOGO original al procesador MIPS de la fonera, y directamente implemente algo básico sólo el proceso de movimientos y un sistema de odometria , para que el bicho sepa donde se encuentra.

Estos movimientos son pasados como parámetros a una aplicación que procesa estos (uso como compilador el GCC con el IDE Anjuta desde Ubuntu, y luego compilo para la fonera por linea de comando, así me ahorra tiempo y dolores de cabeza ), la he llamado MOVER (ya se, muy original), así escribiendo desde la consola ./MOVER - GD 20 , por ejemplo gira a la derecha 20 grados. También se pude pasar como parámetro un archivo de recorrido, el cual consiste en una lista de comandos los cuales van siendo leídos uno a uno de manera secuencial.

Otra manera de mover el robot de manera autónoma es utilizando la aplicación BUSCAR donde utilizo algoritmos de IA para búsqueda de caminos, basando sus decisiones en un mapa del espacio 2D , el cual es una matriz en un archivo formada por símbolos " " y "*", según sea una posición ocupable o no por el robot, la posición inicial y final sera marcada en el archivo como una "f" . La idea es luego con una cámara IP tomar imagenes zenitales y con la misma fonera leer la imagen e identificar donde esta, su ángulo, y generar el archivo de mapa según se detecten objetos en el suelo.

En cuanto al sistema de control es por el puerto serie con la configuración original de la fonera , 9600 baudios y sin desactivar el acceso a la consola por el puerto serie. He utilizado un 16f628,un uln2008 para los motores, y un TIP 29 para el solenoide del marcador. El Pic esta programado en CCS , y aquí es donde viene lo original y que para nada es el método que debería utilizarse, y que haría que en la facultad te pongan una mala nota :-), pero quería experimentar algo distinto, al esquema clasico en comunicación serie, donde un lado es el CPU y el otro un dispositivo de E/S, lo que he hecho es que el microcontrolador escribe comandos directamente a la fonera, osea el PIC escribe comandos Linux !!! para por ejemplo informarle que el movimiento de los motores ha concluido, y para pasar el estado de variables del PIC ( interesante para leer los ADC ) y luego "montarlo" como un archivo en el sistema de ficheros, asi se puede acceder desde el OpenWrt de manera transparente a estos datos y sin tener que escribir una linea de codigo en la fonera.

Continuara...


martes, 29 de mayo de 2007

Cabeza parlante de la KDD P2P


Este robot lo hice con partes de impresoras, un microcontrolador, algunos chips y alguna que otra cosa que encontre, la idea era hacer un sistema que se pueda programar distintos movimientos y coordinarlos con frases generadas con un sintetizador de voz, todo controlado por el puerto serie y con Ubuntu.
Lo he llevado a la KDD P2P que organizamos con la gente del Hackarena Hacklabs de Sevilla, algunas fotos que tomo un amigo pueden verlas aqui.