Construcción de una prótesis de mano, controlada a … Para la realización del presente trabajo...
Transcript of Construcción de una prótesis de mano, controlada a … Para la realización del presente trabajo...
Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a
través del análisis de una unidad Mindflex.
Andrés Mauricio Cruz Rodríguez
Universidad Nacional de Colombia Facultad de Ciencias, Departamento de Física Maestría en Ciencias Física – Profundización
Bogotá, Colombia 2016
Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a
través del análisis de una unidad Mindflex.
Andrés Mauricio Cruz Rodríguez
Tesis o trabajo de investigación presentada(o) como requisito parcial para optar al título
de:
MAGISTER EN CIENCIAS – FÍSICA. PROFUNDIZACIÓN
Director: Doctor PEDRO HERNÁN SÁNCHEZ MACHET.
Línea de Investigación:
Física Experimental aplicada
Universidad Nacional de Colombia Facultad de Ciencias, Departamento de Física Maestría en Ciencias Física – Profundización
Bogotá, Colombia 2016
Agradecimientos Para la realización del presente trabajo agradezco en primera instancia a Dios por
permitirme construir un nuevo proyecto en el ámbito profesional. También agradezco a mi
familia por su apoyo incondicional en los aspectos económicos y emocionales.
En tercer lugar quiero agradecer enormemente a mi Director de proyecto, el Profesor
Pedro Hernan Sanchez Machet, quien con su dedicación y amplio saber en el campo de
la física, alimentó mi espíritu investigativo y me enseñó a dedicarme a la ciencia con
pasión y esfuerzo; agradezco su compromiso para conmigo y el proyecto, aun en sus
momentos difíciles de salud, en donde se hacia mas fuerte y mas constante para
colaborarme.
Resumen y Abstract V
Resumen El documento resume en términos generales la propuesta de trabajo en torno a la construcción de una prótesis de mano controlada a través de señales EEG, justificando los elementos fundamentales de la escogencia del tema, planteando los objetivos, los avances conseguidos y la metodología llevada a cabo para alcanzar los mismos. Dentro de la metodología se establecerán algunos parámetros teóricos de lo que es conocido como una unidad Mindflex creada por la empresa Matel® y como un micro controlador puede ser expuesto a procesos de ingeniería inversa para conocerlo detalladamente y ampliar la gama de posibles aplicaciones.
Palabras clave: Electroencefalografía, Mindflex, interfaz, micro controlador, actuadores, Arduino.
VI Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Abstract The document outlines in general terms the proposed work on the construction of a prosthetic hand controlled by EEG signals, justifying the fundamental elements of the choice of subject, raising the objectives, the progress made and the methodology carried out to achieve the same. Within the methodology some theoretical parameters of what is known as a MindFlex unit created by the company Matel be established and as a microcontroller can be exposed to reverse processes re contrive to know in detail and expand the range of possible applications.
Keywords: Electroencephalography, Mindflex , interface, microcontroller , actuators, Arduino.
Contenido VII
Contenido
Tabla de contenido
1. Generalidades........................................................................................................31.1 ReseñaHistórica...........................................................................................................31.2 InterfacesdeComunicaciónAtravésdeEEG.(BCI).......................................................5
2. ReferentesTeóricos................................................................................................72.1 SeñalesElectroencefalográficas(EEG)...........................................................................7
2.1.1 Potencialdeaccióngeneradoenlasneuronas............................................................82.1.2 GeneracióndelasseñalesEEG...................................................................................102.1.3 Loselectrodos,clasificaciónytiposdeconexión.......................................................11
2.2 Configuracióndelacortezacerebral...........................................................................142.3 ClasificacióndelospotencialesdelasseñalesEEG......................................................17
2.3.1 Ritmoscerebrales.......................................................................................................192.3.2 Potencialesevocados.................................................................................................20
2.4 Potencialesrelacionadosconeventos(P300)..............................................................21
3. Capítulo3.Procesamientoyanálisisdeseñales....................................................233.1 Análisistiempofrecuencia..........................................................................................233.2 Análisistiempofrecuencia(t-f)utilizandoWavelets...................................................24
3.2.1 DescomposiciónWavelet...........................................................................................243.2.2 AnálisisdeseñalesEEG..............................................................................................28
4. Desarrolloexperimentalinicial.............................................................................314.1 UnidadMindflex.........................................................................................................324.2 ElArduinoONEcomomicrocontroladorprimario......................................................354.3 Obtencionprimariadeseñales...................................................................................39
4.3.1 Montajefísicopreliminar...........................................................................................404.3.2 AdaptacionesdeFuncionalidad.................................................................................49
5. Desarrolloexperimentalfinal:Modificacióndelaetapaderecepcióndedatosyaplicaciónalaprótesisdemano..................................................................................59
5.1 Nuevosdispositivosparamejoradelafuncionalidad..................................................595.1.1 ElArduinoMINIcomoNuevoMicroControlador......................................................595.1.2 ModuloFTDI32...........................................................................................................615.1.3 ModuloHC-05............................................................................................................63
VIII Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
5.2 Configuracióndelmontajefinal..................................................................................65
5.2.1 Diseñodelaprotesis...................................................................................................665.2.2 Montajefísicofinal......................................................................................................67
6. Conclusionesyrecomendaciones..........................................................................756.1 Conclusiones...............................................................................................................756.2 Recomendaciones.......................................................................................................76
Contenido IX
Lista de figuras
Figura1EstructuraGeneralDeUnaBci...........................................................................................................6Figura2LaNeuronaYSuRepresentación.........................................................................................................8Figura3PotencialDeAcciónEnLaMembranaDeUnaNeurona.....................................................................9Figura4GeneraciónDeUnaSeñalEeg.TomadoDe[8]..................................................................................10Figura5ElectrodosSuperficiales.....................................................................................................................11Figura6ElectrodosCorticales.........................................................................................................................12Figura7ElectrodosProfundosOIntracorticales.............................................................................................12Figura8ConfiguraciónDeElectrodos.TomadoDe[1]....................................................................................13Figura9SistemaInternacional10-20.TomadoDe[11]..................................................................................14Figura10LóbulosCerebrales.TomadoDe[8].................................................................................................15Figura11CircunvolucionesCerebrales,VistaLateralIzquierda.TomadoDe[8]............................................15Figura12ÁreasDeBrodmann[8]...................................................................................................................15Figura13ÁreaCerebralesYFunciónDelLóbuloFrontal................................................................................16Figura14ClasificaciónDeLosPotencialesEeg.TomadoDe[1]......................................................................17Figura15EspectroTípicoDeLasSeñalesEeg.TomadoDe[1]........................................................................18Figura16EfectoEspectralDeUnVentaneo.TomadoDe[1]..........................................................................24Figura17EscalonamientosDeWaveletMadreYSusTransformadasDeFourier.TomadoDe[1].................26Figura18UnidadMindflex..............................................................................................................................33Figura19HardwareUnidadMindflex.............................................................................................................34Figura20AlgunosEjemplaresDeLaFamiliaArduino.....................................................................................36Figura21ShieldsMásReconocidosParaArduino...........................................................................................37Figura22DescripciónArduinoUno.................................................................................................................38Figura23ConfiguraciónPreliminarDeHardware...........................................................................................39Figura24VistaDelHandsetSinCubiertaBase................................................................................................40Figura25IdentificaciónDeLosPinesTxYRx..................................................................................................41Figura26UbicaciónDeLaTierraEnLaPlacaPrincipal...................................................................................42Figura27AjusteDeLasConexionesDeSalida................................................................................................43Figura28ConexiónDelHandsetAlArduino....................................................................................................43Figura29DatosCvsRecibidosEnElMonitorSerialDeArduino.....................................................................47Figura30InicioDeLaVisualización,DoceDatosRecibidos............................................................................48Figura31VisualizaciónDespuésDeCientoNoventaYOchoDatosRecibidos................................................49Figura32ConexiónDeTransmisiónPorCable................................................................................................50
VIII Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Figura33ConexiónDeTransmisiónVíaBluetooth.........................................................................................50Figura34ConfiguraciónDelConectorTs........................................................................................................51Figura35AdaptaciónDelConectorHembraParaConectorTs.....................................................................51Figura36CarcasaCerradaDelHandsetConAdaptadorHembra.................................................................52Figura37ModuloBluetoothEsclavoHC-06....................................................................................................53Figura38ConexiónModuloBluetoothEsclavoHC-06....................................................................................54Figura39VisualizaciónDeLaAplicaciónArdudroidYReconocimientoDelHc-06........................................56Figura40ConexiónFísicaDePruebaDelMódulohc-06..................................................................................57Figura41ConexiónFísicaDelMódulohc-06AlHandset.................................................................................58Figura42ArduinoUno(Izquierda)VersusArduinoMini(Derecha)................................................................60Figura43ModuloFTDI232.............................................................................................................................62Figura44ModuloHC-05.................................................................................................................................63Figura45ConexiònHC-05AArduinoMiniPro...............................................................................................64Figura46DiseñoFinalDeLaPròtesisDeMano..............................................................................................66Figura47EstructuraFinalDelDiseño..............................................................................................................67Figura48DiseñoDeLaPlacaGeneral.............................................................................................................68Figura49MontajeDelArduinoMiniProSobreLaPlaca................................................................................69Figura50MontajeDelMóduloHC-05SobreLaPlaca.....................................................................................70Figura51MontajeDelReguladorSobreLaPlaca............................................................................................70Figura52MontajeDelMóduloFTI232EnElArduinoMiniPro.......................................................................71Figura53MontajeDelServomotor(Actuador)SobreLaPlacaPrincipal........................................................71Figura54UbicaciónDeLasBateríasDeLitioSobreLaPlacaPrincipal............................................................72
Introducción
Una interfaz para control cerebral basada en señales de EEG (electroencefalografía), en
forma general denominada BCI (Brain Computer Interface) (Interfaz cerebro computador)
busca establecer un enlace directo entre el cerebro y una máquina, sin utilizar acciones
motoras directas; Su desarrollo está principalmente orientado hacia la ayuda a personas
con discapacidades motoras severas, que poseen deterioros en el sistema nervioso y
muscular, pero no presentan lesiones cerebrales.
Las BCI sin embargo, son generalmente de un precio tan elevado que la mayoría de
personas con discapacidad en Colombia no tienen acceso a ellas. Consultas realizadas
durante este año 2016 evidencian precios que oscilan entre los nueve y los treinta
millones de pesos colombianos.
Gracias al desarrollo de la tecnología, se han generado máquinas destinadas a juegos u
otras aplicaciones, como es el caso de la unidad MINDFLEX® creada en principio por la
empresa MATEL®, y destinada a labores de entretenimiento.
Analizar esta unidad y entender a partir de la física experimental que su comportamiento
es adaptable a las características de una BCI, se convierte en una tarea fundamental,
que puede ser aprovechada para grandes tareas de diseño a precios mucho más
asequibles.
Sumado a ello, uno de los objetivos fundamentales de la Maestría en Ciencias – Física
de la Universidad Nacional de Colombia, en su trabajo de Grado, en la modalidad de
profundización, pretende el dominio de un tema específico, en este caso el trabajo Físico
Experimental e Instrumental de la obtención y manipulación de señales eléctricas,
convirtiéndose el análisis y manejo de una BCI, en un tema apropiado de trabajo.
2 Introducción
Implementar sistemas eficientes de comunicación es un reto que la física experimental no
puede dejar de lado, debido a que el entendimiento de este tipo de sistemas donde se
incluyen la captura, la transmisión, y recepción de señales y el procesamiento de
información contenida en las señales eléctricas, en el caso de una BCI (interfaz cerebro
máquina) se convierten en un espacio apropiado de trabajo tanto de diseño como de
análisis físico experimental.
El abordaje y manejo claro de temáticas como la propagación de ondas
electromagnéticas, la generación de señales, los criterios de modulación, ruido y las
densidades espectrales a través de modelamientos matemáticos son el camino justo y
mas conveniente para el desarrollo de esta propuesta, que busca satisfacer una
necesidad actual y contribuir con el desarrollo profesional desde el campo de la física.
Como objetivo general del trabajo, se pretende aplicar señales EEG
(electroencefalográficas) obtenidas desde el lóbulo dorso lateral izquierdo del cerebro
humano, a una prótesis de mano, haciendo uso de una BCI (Interfaz de control cerebral),
mediante una unidad MINDFLEX.
Para alcanzar el objetivo general, se plantean los siguientes objetivos específicos
• Realizar el análisis de un sistema MINDFLEX para obtener señales EEG y
establecer los parámetros básicos de configuración y diseño de una BCI.
• Realizar adaptaciones de funcionalidad de la interfaz a través de diseño
experimental, que permitan mejorar la interpretación de las señales obtenidas.
• Aplicar la BCI en una prótesis de mano, diseñada con impresora 3D y que
responda a la señal eléctrica originada en el lóbulo frontal.
1. Generalidades
1.1 Reseña Histórica Establecer una relación directa entre cerebro y máquina, tiene sus primeros
antecedentes en 1967 cuando el investigador Edmond Dewan, un científico de los
laboratorios de la Fuerza Aérea estadounidense presentó una hipótesis original sobre la
función del dormir y de los movimientos oculares rápidos que se producían. La hipótesis
es que el cerebro posee esta función de reprogramación que durante el sueño genera
movimientos oculares rápidos, que gracias a cierto montaje experimental, podrían
traducirse en Código Morse. Mas adelante los experimentos confirmaron que la llamada
reprogramación a la que hacia referencia Dewan, correspondía a lo que hoy conocemos
como ritmos cerebrales Alfa [1].
Al mencionar a Dewan, también es necesario reconocer avances previos que le
permitieron a este y a otros científicos ahondar en el concepto de interfaz. Es necesario
entonces mencionar a Richard Caton, quien en 1875 usó el galvanómetro para observar
impulsos eléctricos de la superficie del cerebro vivo de algunos animales; años más
tarde Hans Berger dio continuidad a este trabajo y consiguió registrar la actividad
cerebral mediante electrografía de un cerebro humano en 1924, de ahí que estas ondas
sean conocidas como las ondas alfa u ondas Berger.
Ya en 1970 en la Universidad de California se dan a conocer los primeros dispositivos de
BCI con fines médicos en la recuperación de la audición la vista y la movilidad de algunos
individuos. En 1988 Farwell and Donchin de la University of Illinois implementaron un
4 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
sistema que a partir del potencial P300 (una onda positiva que se produce alrededor de
300 ms luego de observar un evento poco probable) permitía seleccionar letras en una
pantalla [1].
Alrededor de 1994 en la Universidad de Tecnología en Graz, Austria, comenzaron a
trabajar en BCI dedicándose al trabajo experimental para la identificación de los ritmos
cerebrales, fundamentalmente aquellos relacionados con actividades motoras.
En 1996, la Universidad de New Hampshire, USA, combinando la BCI de la universidad
de Graz con la de Dewan, desarrollan en forma simple y práctica la primera interfaz que
proporciona las funciones de un "ratón". Esta BCI permite desplazar el cursor en dos
dimensiones en la pantalla y además realizar la activación o "click", permitiendo mediante
un esquema de menús, realizar distintas tareas y además ejecutar programas estándar
[1].
En Latinoamérica, los avances también han sido satisfactorios en trabajos de diseño
experimental evidenciados en trabajos como Miguel Nicolelis (Brasil), en la universidad
de Duke, en Carolina del Norte (USA), donde se diseñó y se construyó un Exoesqueleto,
cuyo producto fue presentado finalmente en el partido inaugural de la copa mundial de
futbol de la FIFA en el año 2014. Uno de los registros recientes de trabajo es el de la
Universidad de Colima en México, quienes desarrollan la investigación del control
robótico por medio de ondas cerebrales, de un brazo robótico con cinco grados de
libertad e inalámbrico, especificando que la diadema de captación del impulso eléctrico
posee solo un electrodo, que hace que todo el diseño sea poco robusto y económico.
En Colombia también se han venido desarrollando propuestas de trabajo en torno a las
BCI; entre los trabajos mas destacados se encuentra el del Doctor José Borrego de la
universidad de Antioquia, quien ¨presenta un sistema operante cuyo motor o unidad
Capítulo 1 5
central la constituye un módulo de interfaz y un programa especial de computación. Este
módulo de interfaz integra: Una computadora comercial, un estroboscopio, un
electroencefalógrafo, un osciloscopio, estimuladores y otros accesorios. El conjunto
permite la medición de los potenciales evocados y variadas aplicaciones en
neurofisiología¨ [2]; Este trabajo obtuvo el premio de Ciencias Físicas y Naturales Ángel
Escobar entregado a nivel nacional en el año 1983.
Gracias a este tipo de trabajos se han venido presentando diferentes tipos de
propuestas, dentro de las cuales se pretende enfocar este trabajo de grado, para optar
por el título de Magister en Ciencias – Física.
1.2 Interfaces de Comunicación A través de EEG. (BCI) Una interfaz basada en EEG, es un montaje de comunicación que permite establecer una
relación directa entre el cerebro humano que reacciona ante un estímulo, y un
computador que lo interpreta y lo traduce en otro tipo de señal que puede ser utilizada
para generar trabajos con otros dispositivos.
Podemos dividir los sistemas BCI en tres grupos diferentes [3] :
Activo: se caracteriza por permitir el control de manera consciente y voluntaria de un
sistema BCI, independientemente de los eventos externos.
Reactivo: el control de la aplicación, está directamente relacionado con un estímulo
externo que indirectamente, modela la actividad cerebral.
Pasivo: se deriva del procesamiento de señales cerebrales arbitrarias y sin ninguna
intencionalidad por el usuario. La información recogida se utiliza para saber nuestro
estado cognitivo, como nuestros niveles de atención, relajación, etc.
Toda interfaz basada en EEG posee la siguiente estructura como se muestra en la Figura
1.
6 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
La gráfica anterior muestra la estructura general de una BCI, en donde la primera etapa
consiste en la adquisición de las señales provenientes del cerebro. Esta adquisición se
realiza a través de electrodos que son capaces captar las señales eléctricas ubicadas en
el cuero cabelludo.
Luego se encuentra la etapa del procesamiento, donde las señales eléctricas captadas
son traducidas en estimaciones de energía, que será analizada en una frecuencia de
muestreo acorde al ancho de banda de la señal EEG, que generalmente está en el
rango de 128 a 256 muestras por segundo, que luego se utilizarán en la etapa de
control.
En tercer lugar tenemos el clasificador que seleccionará las señales necesarias que
serán traducidas en señales provenientes del lóbulo que quiere ser trabajado y que
pueda representar estados de acción cerebral motora, visual, auditiva, de concentración,
etc.
En último lugar del proceso se tiene el trasladador que finalmente traduce la señal o
potencial eléctrico en una respuesta de acción como el movimiento de un motor o el
registro de una señal lumínica, o el deseado por el diseñador de la interfaz.
Figura 1 Estructura General de una BCI. Tomado de [1].
2. Referentes Teóricos
2.1 Señales Electroencefalográficas (EEG) Las señales EEG se obtienen gracias a las corrientes de naturaleza iónica presentes en
la corteza cerebral, las cuales se producen por la actividad en alguna región del cerebro,
provocada por acciones voluntarias o involuntarias del sujeto y pueden ser captadas con
unos electrodos que según su configuración pueden ser ubicados en diferentes lugares
de la cabeza para conseguir los registros deseados.
El sistema nervioso es un de tejido encargados de captar y procesar rápidamente las
señales internas y externas, tomando el control y coordinación sobre los demás órganos,
para así, lograr una oportuna y eficaz interacción con el medio ambiente cambiante. La
unidad básica del sistema nervioso es la neurona, la cual tiene la capacidad de
comunicarse eléctricamente con otras células, sean éstas nerviosas o no [3].
La información viaja entre neuronas por medio de impulsos eléctricos que se transmiten
de unas neuronas a otras. Estos impulsos, se reciben de otras neuronas en las dendritas
y pasan a través de la neurona hasta ser conducidas por el axón a los terminales de
salida, los cuales pueden conectarse con otra neurona, fibras musculares o glándulas [3,
4].
Cuando se produce un estimulo externo, el sistema nervioso actúa de la siguiente
manera; El estímulo es recibido en alguna región sensorial capturando alguna
información, la cual es transportada por el sistema nervioso a través de las neuronas
hasta una componente integradora en donde se analiza. Esta componente elabora la
respuesta, que es conducida a través de las neuronas hacia fibras musculares (respuesta
motora) o hacia glándulas (secreción glandular).
8 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Hay que tener en cuenta que la actividad cerebral es producida por un número muy
elevado de neuronas (aproximadamente cien mil millones en un cuerpo humano medio) y
cada una de las tareas que nuestro cuerpo puede realizar provoca una actividad cerebral
con forma e intensidad diferentes, además de localizarse en distintas zonas del sistema
nervioso [5].
2.1.1 Potencial de acción generado en las neuronas El cerebro está compuesto por millones de neuronas. Cada neurona está conformada por
un cuerpo celular llamado soma, dendritas, axones y terminaciones nerviosas Figura 2
[6].
La información llega a la neurona a través de las dendritas, las cuales reciben
información de en promedio 10000 neuronas. Con relación a la membrana celular, el
exterior de la neurona tiene mayor concentración de iones Na+ y el interior mayor
concentración de iones K+. Con esta concentración, el potencial de membrana es -70mV,
donde la parte interna se carga negativamente y la parte externa positivamente [6, 7].
Figura 2 La Neurona y su representación. Tomado de [4].
Capítulo 2 9
En la despolarización de la neurona debido a la información recibida en las dendritas, se
produce un potencial de acción que viaja a través del axón como se ve en la Figura 3 [8].
El mecanismo que produce el potencial de acción está relacionado con la bomba de
sodio potasio. En la despolarización se alcanza un umbral entre -70mV a -55mV los
canales de sodio dejan entrar los iones Na+, invirtiendo la polaridad de la membrana [7].
Esta alcanza un valor promedio de 30mV [8].
Cuando se ha producido la despolarización, se cierren los canales de sodio y se abren
los canales de potasio [7]. De esta forma salen los iones K+, produciéndose la
repolarización de la membrana. Cuando se alcanza el valor de -90mV este proceso se
denomina hiperpolarización, y sirve para que en esa etapa la neurona no reciba otro
estímulo [6]. Posteriormente la bomba de sodio potasio restablece el potencial de
membrana a -70mV.
El potencial de acción viaja a través del axón a una velocidad de entre 1 y 100 m/s, y
transmite la información a otras neuronas a través de un proceso químico denominado
Figura 3 Potencial de acción en la membrana de una neurona. Tomado de [4].
10 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
sinapsis. La suma de las sinapsis excitadoras e inhibidoras que ingresan por las
dendritas de una neurona establece si la neurona conduce o no conduce [6].
2.1.2 Generación de las señales EEG La corteza cerebral está conformada principalmente por neuronas piramidales [9], y las
señales EEG son producidas por la sincronización local de miles de neuronas
piramidales [6]. Esta sincronización se presenta por la sumatoria de sinapsis excitadoras
en las dendritas de miles de neuronas piramidales. Esto genera en cada neurona un
dipolo conformado entre la carga del soma y la carga de las dendritas, Figura 4.
De esta manera, la corriente en el cerebro está conformada por el bombeo de iones Na+,
K+, Ca++ y Cl− a través de la membrana de las neuronas [8].
En consecuencia, las señales electroencefalográficas EEG consisten en un conjunto de
ondas eléctricas generadas por la corteza cerebral [4].
Cuando se mide con electrodos superficiales (Scalp o no invasivos), el rango de voltajes
está entre 0 a 300µV, con frecuencias que oscilan entre 0.5 y 100 Hz. Dentro de las
Figura 2.18: Generacion de una senal EEG. Adaptado de [39].
En consecuencia, las senales electroencefalograficas (EEG) consisten en un conjunto deondas electricas generadas por la corteza cerebral (Fig. 2.18) [39]. Cuando se mide con elec-trodos superficiales, el rango de voltajes esta entre 0 a 300 µV , con frecuencias que oscilanentre 0.5 y 100 Hz. Dentro de las ventajas que tienen este tipo de senales, estan la buenaresolucion temporal (ms), el hecho de que las senales estan listas para ser capturadas, que lagrabacion es sencilla y el costo de los equipos es bajo. Una desventaja de las senales EEG essu baja resolucion espacial (cm) [62].
Ritmos cerebrales Las senales cerebrales se agrupan en cinco ritmos: delta (�), teta (✓),alfa (↵), beta (�) y gama (�) [62].
Los ritmos delta (�) son ondas cerebrales en el rango de 0.5-4 Hz. Se presentan con masfrecuencia en ninos y adolescentes. De igual forma, estan asociadas a estados de sueno y seatenuan con abrir los ojos y estados de somnolencia [63].
Los ritmos teta (✓) son ondas cerebrales en el rango de 4-8 Hz. Estas ondas se presentancon mas frecuencia en ninos y tienden a disminuir con la adultez. En los adultos tienen mayoractividad en Fz y Cz. Los ritmos (✓) se han asociado a estados de meditacion profunda [62].
Los ritmos alfa (↵) son ondas cerebrales en el rango de 8-13 Hz. Se presentan en todaslas etapas de la vida y tienden a tener la misma intensidad. Se presentan principalmentecuando la persona esta despierta, en reposo y con los ojos cerrados. Los ritmos (↵) presentanla mayor amplitud en los lobulos occipitales y desaparecen cuando la persona esta dormida[63].
22
Figura 4 Generación de una señal EEG. Tomado de [4].
Capítulo 2 11
ventajas que tienen este tipo de señales, están la buena resolución temporal (ms), el
hecho de que las señales están listas para ser capturadas, que la grabación es sencilla y
el costo de los equipos es bajo.
2.1.3 Los electrodos, clasificación y tipos de conexión. Un electrodo es una celda electroquímica en donde se busca la electrólisis mediante
corrientes eléctricas de sustancias ionizadas llamadas electrolitos, que pueden ser
ácidos, bases o sales.
La primera fase de la electrólisis es la ionización, siendo previa a la aplicación de la
corriente, luego viene la ionización donde los iones se dirigen, dependiendo de su carga
hacia los polos positivos o negativos, provocando entonces el tercer momento llamado
descarga, donde los aniones ceden electrones y los cationes toman electrones del
cátodo.
Existen básicamente tres tipos de electrodos para captar los biopotenciales cerebrales y
en términos generales, la calidad de las señales obtenidas aumenta conjuntamente con
la invasividad de la técnica utilizada. Los electrodos pueden ser [1] :
Superficiales (scalp): Están colocados sobre el cuero cabelludo. Para esta técnica, que
es la menos invasiva, se reserva la denominación Electroencefalograma (EEG).
Figura 5 Electrodos superficiales. Tomado de [4].
12 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Corticales: Se colocan directamente sobre la superficie expuesta de la corteza cerebral
(cortex). Este tipo de registro se denomina Electrocortigrama.
Profundos o Intracorticales. En este caso se utilizan electrodos tipo aguja, que pueden
contener varias secciones aisladas a fin de registrar potenciales a distintas
profundidades. Esta técnica se suele Electroencefalografía Profunda.
Figura 6 Electrodos corticales. Tomado de [4].
Figura 7 Electrodos Profundos o intracorticales. Tomado de [4].
Capítulo 2 13
Existen básicamente tres configuraciones típicas (Figura 4) para captar los potenciales
cerebrales a partir de electrodos superficiales[1]:
Monopolar: Se registra el potencial de cada electrodo respecto de uno particular utilizado
como referencia que usualmente se coloca en la oreja.
Bipolar: Se utilizan canales diferenciales que registran la diferencia de potencial entre dos
electrodos.
Laplaciana: Se rodea al electrodo principal o activo con 4 o más electrodos auxiliares
registrándose la diferencia de potencial entre el electrodo activo y el promedio de los
circundantes. Esta promediación puede realizarse en forma analógica pero lo usual es
realizarla en forma digital.
Las anteriores configuraciones cumplen con el sistema de referencia llamado 10-20 como
se observa en la figura 9, que se basa en la relación comprobada que existe entre un
sitio medido de electrodos, las estructuras y áreas corticales subyacentes. El sistema se
denomina 10-20, porque los electrodos se colocan espaciados al 10 o 20% de la
distancia total entre un determinado par de marcas en el cráneo. El sistema 10-20, se
diseñó para dar una cobertura adecuada de la cabeza, con flexibilidad para la colocación
de electrodos adicionales, dentro del marco establecido, empleando la nomenclatura 10-
20 [11] .
Capítulo 2: La señal de EEG
Interfaces para Control Cerebral 9
Existen básicamente tres configuraciones típicas (Figura 2.2) para captar los potenciales cerebrales a partir de electrodos superficiales:
! Monopolar: Se registra el potencial de cada electrodo respecto de uno
particular utilizado como referencia que usualmente se coloca en la oreja.
! Bipolar: Se utilizan canales diferenciales que registran la diferencia de potencial entre dos electrodos.
! Laplaciana: Se rodea al electrodo principal o activo con 4 o más electrodos auxiliares registrándose la diferencia de potencial entre el electrodo activo y el promedio de los circundantes. Esta promediación puede realizarse en forma analógica pero lo usual es realizarla en forma digital.
Figura 2.2: Distintas configuraciones de electrodos.
Existen 20 posiciones básicas normalizadas para colocar los electrodos sobre el cuero cabelludo, el conjunto de estas posiciones se conoce como “Sistema 10/20” y se muestra en la Figura 2.3. Su nombre deriva del hecho que en algunas ocasiones se utiliza un subconjunto reducido de solo 10 electrodos.
Figura 2.3: El Sistema 10/20
Cada posición se identifica con una letra que corresponde a su zona craneana, (O: occcipital, P: pariental, C: central, T: temporal y F: frontal), y un sufijo que define su posición precisa. Por ejemplo O1 corresponde a la zona occipital izquierda y F4 a la frontal derecha. Si bien en algunas ocasiones se utilizan electrodos emplazados en posiciones intermedias, y comienzan a aparecer denominaciones como C4', C3', es importante en lo posible respetar las normalizadas a fin de obtener datos comparables. Para especificar un registro es necesario informar la posición de los electrodos y el tipo de derivación utilizada: monopolar, bipolar o laplaciana. En el caso de utilizar canales monopolares, debe indicarse además la posición del electrodo de referencia. Asi, Por ejemplo “O1-O2 bipolar” corresponde a un registro tomado en forma diferencial entre los electrodos O1 y O2 ubicados en la región occipital.
Σ/N
Monopolar Bipolar Laplaciana.
Figura 8 Configuración de electrodos. Tomado de [1].
14 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
2.2 Configuración de la corteza cerebral El cerebro está compuesto por dos hemisferios (izquierdo y derecho) separados por un
cuerpo calloso. La corteza de cada hemisferio cerebral posee una serie de pliegues
denominados circunvoluciones o giros, que se encuentran separados por fisuras o surcos
[4, 10] (Figura 10).
Dentro de las circunvoluciones se encuentran: la circunvolución frontal superior (CFS), la
circunvolución frontal medial (CFM), la circunvolución frontal inferior (CFI), la
circunvolución temporal superior (CTS), la circunvolución temporal medial (CTM), la
circunvolución temporal inferior (CTI), la circunvolución parietal superior (CPS), la
circunvolución parietal inferior (CPI), la circunvolución supramarginal (CS), la
circunvolución angular (CA), la circunvolución precentral (Cpre), la circunvolución
postcentral (Cpos), pars opercular (PO), pars triangular (PT), pars orbitaria (Por); de
forma complementaria, se especifica el surco temporal superior (STS) y el surco temporal
inferior (STI) [10] (Figura 11).
14
regular y amplio de diez ciclos por segundo surgía de las áreas visuales de asociación y no de
todo el cerebro. Años más tarde se apreció la importancia de tal descubrimiento.
Se avanzó mucho en este campo, comenzando a interesar, entre los investigadores del EEG, el
estudio de la epilepsia y otras enfermedades mentales, poniéndose de relieve la complejidad
del tema y la imposibilidad de aislamiento de funciones simples, siendo necesario estudiar al
cerebro como un órgano total.
2.4.2 Sistema Internacional 10-20
En 1958 el neurobiólogo Herbert Jasper supervisó la reunión de Sociedades de
Electroencefalografía, la cual desarrolló el sistema de localización de electrodos. Estos siguen
una colocación definida. El esquema a seguir se llama sistema internacional 10-20, es
un procedimiento para colocar y medir las posiciones a espacios iguales en el cuero cabelludo,
utiliza marcas identificables en el cráneo que sirven como punto de referencia.
El sistema 10-20, se basa en la relación comprobada que existe entre un sitio medido de
electrodos, las estructuras y áreas corticales subyacentes. El sistema se denomina 10-20,
porque los electrodos se colocan espaciados al 10 o 20% de la distancia total entre un
determinado par de marcas en el cráneo. El sistema 10-20, se diseñó para dar una cobertura
adecuada de la cabeza, con flexibilidad para la colocación de electrodos adicionales, dentro del
marco establecido, empleando la nomenclatura 10-20.
Figura 6. Sistema internacional 10-20 de colocación de electrodos
La cabeza se divide en seis zonas: frontopolar (Fp), frontal (F), central (C), parietal (P), occipital
(O) y temporal (T). A los electrodos situados en el hemisferio izquierdo se les asigna números
impares y a los situados en el hemisferio derecho se les asigna números pares.
Figura 9 Sistema internacional 10-20. Tomado de [5].
Capítulo 2 15
Las subdivisiones de cada hemisferio se basan en varios surcos de la corteza cerebral y
se denominan lóbulos. Para referenciar partes de la corteza cerebral se utiliza,
complementariamente, las áreas de Brodmann, que están numeradas del 1 al 51 por la
citoarquitectura o disposición de las neuronas que conforman la corteza cerebral (Figura
12) [4].
Figura 2.4: Vista lateral izquierda de la corteza cerebral. Circunvolucion frontal superior(CFS), circunvolucion frontal medial (CFM), circunvolucion frontal inferior (CFI), circun-volucion temporal superior (CTS), circunvolucion temporal medial (CTM), circunvoluciontemporal inferior (CTI), circunvolucion parietal superior (CPS), circunvolucion parietal infe-rior (CPI), circunvolucion supramarginal (CS), circunvolucion angular (CA), circunvolucionprecentral (Cpre), circunvolucion postcentral (Cpos), pars opercular (PO), pars triangular(PT), pars orbitaria (Por). Surco temporal superior (STS) y surco temporal inferior (STI).
Figura 2.5: Lobulos del cerebro
media y tambien esta relacionada con el movimiento motor [43].El campo ocular frontal se encuentra sobre partes de la circunvolucion frontal media
relacionada con las areas 6,8 y 9 BD (Fig. 2.6). La funcion principal de esta area es controlarel movimiento voluntario de los ojos.
8
Figura 2.4: Vista lateral izquierda de la corteza cerebral. Circunvolucion frontal superior(CFS), circunvolucion frontal medial (CFM), circunvolucion frontal inferior (CFI), circun-volucion temporal superior (CTS), circunvolucion temporal medial (CTM), circunvoluciontemporal inferior (CTI), circunvolucion parietal superior (CPS), circunvolucion parietal infe-rior (CPI), circunvolucion supramarginal (CS), circunvolucion angular (CA), circunvolucionprecentral (Cpre), circunvolucion postcentral (Cpos), pars opercular (PO), pars triangular(PT), pars orbitaria (Por). Surco temporal superior (STS) y surco temporal inferior (STI).
Figura 2.5: Lobulos del cerebro
media y tambien esta relacionada con el movimiento motor [43].El campo ocular frontal se encuentra sobre partes de la circunvolucion frontal media
relacionada con las areas 6,8 y 9 BD (Fig. 2.6). La funcion principal de esta area es controlarel movimiento voluntario de los ojos.
8
Figura 10 Lóbulos cerebrales. Tomado de [4].
Figura 11 Circunvoluciones cerebrales, vista lateral izquierda. Tomado de [4].
Figura 12 Áreas de Brodmann Tomado de [8].
16 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
El lóbulo frontal, siendo de vital importancia para este estudio, posee tres áreas
reconocidas con funciones determinadas. El área precentral que se divide en posterior
(motora primaria) y anterior (motora secundaria) encargadas de los movimientos
individuales de diferentes partes del cuerpo. Otra área de este lóbulo, es la ocular frontal
donde están determinados los movimientos conjugados de los ojos, a la vez que controla
los movimientos oculares voluntarios producidos independientemente de los estímulos
visuales.
La tercera área es la llamada área de lenguaje o de broca y como su nombre lo indica
está encargada principalmente de la producción del habla; y finalmente se encuentra el
área de corteza prefontal y que se asocia a la meditación, la atenciòn y la concentración
del sujeto, además que tiene fuerte conexión con la personalidad del individuo y su
expresión de sentimientos [11].
Así cada área del cerebro tiene a su cargo unas funciones específicas que pueden ser
visualizadas en la figura 13.
.
Figura 13 Área cerebrales y función del lóbulo frontal. Tomado de [4].
Capítulo 2 17
2.3 Clasificación de los potenciales de las señales EEG Los potenciales de EEG pueden clasificarse en Potenciales Evocados si se producen
como consecuencia de un estímulo externo y Potenciales Espontáneos si nacen de la
“voluntad” del sujeto.
Dentro de los potenciales espontáneos podemos diferenciar los Ritmos Cerebrales que
se registran en condiciones de reposo, cuando las neuronas no procesan información, y
los Potenciales Relacionados RP (Related Potentials), que se producen como
consecuencia de algún evento puntual. Generalmente los RP son de reducida amplitud
comparados con la actividad de base ("background"). Por ejemplo, las señales de EEG
en scalp relacionadas a una actividad motora (MRP: Movement Related Potential)
presentan relaciones señal-ruido menores a -10 dB [1, 12] .
Cuando el análisis se efectúa en el dominio de la frecuencia se incorporan los términos
ERS (Event Related Sincronization), para describir el incremento de la energía en alguna
banda como consecuencia de un evento, y ERD (Event Related Desinchronization), para
su decremento [1, 12] (Figura 2-13).
El espectro de frecuencias de las señales electroencefalográficas se extiende desde
algunas décimas de Hz hasta aproximadamente 100 Hz. En el análisis espectral de
señales de EEG, se definen ciertas bandas de importancia clínica que se denominan con
Capítulo 2: La señal de EEG
10 Interfaces para Control Cerebral
2.4. Tipos de Potenciales de EEG. De acuerdo a su origen los potenciales de EEG pueden clasificarse1 en Potenciales Evocados si se producen como consecuencia de un estímulo externo y Potenciales Espontáneos si se producen espontáneamente, podríamos decir que estos últimos nacen de la “voluntad” del sujeto. Dentro de los potenciales espontáneos podemos diferenciar los Ritmos Cerebrales que se registran en condiciones de reposo, cuando las neuronas no procesan información, y los Potenciales Relacionados RP (Related Potentials), que se producen como consecuencia de algún evento puntual. Generalmente los RP son de reducida amplitud comparados con la actividad de base ("background"). Por ejemplo, las señales de EEG en scalp relacionadas a una actividad motora (MRP: Movement Related Potential) presentan relaciones señal-ruido menores a -10 dB (Lange, 1996). Cuando el análisis se efectúa en el dominio de la frecuencia se incorporan los términos ERS (Event Related Sincronization), para describir el incremento de la energía en alguna banda como consecuencia de un evento, y ERD (Event Related Desinchronization), para su decremento.
A modo de resumen, en la Figura 2.4, se esquematizan los distintos tipos de potenciales en EEG.
Figura 2.4: Clasificación de potenciales de EEG
2.5. El espectro de EEG.
El espectro de frecuencias de las señales electroencefalográficas se extiende desde algunas décimas de Hz hasta aproximadamente 100 Hz. En el análisis espectral de señales de EEG, se definen ciertas bandas de importancia
clínica que se denominan con las letras griegas δ, θ, α, β y γ. Si bien estas bandas no tienen límites precisos abarcan aproximadamente los siguientes intervalos:
δ < 4 Hz
θ 4-8 Hz
α 8-12 Hz
β 12-32 Hz
γ > 32 Hz
Tabla 2.1: Bandas espectrales utilizadas en EEG
1 Esta clasificación no pretende ser general ni definitiva, solo intenta establecer un marco donde describir las señales de EEG como causa/efecto.
Estímulo Potenciales Evocados Potenciales Espontáneos
Ritmos Cerebrales Potenciales Relacionados
Sincronización ERS Desincronización ERD
F
Sujeto
Figura 14 Clasificación de los potenciales EEG. Tomado de [1].
18 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
las letras griegas δ, θ, α, β y γ. Si bien estas bandas no tienen límites precisos abarcan
aproximadamente los siguientes intervalos [1]:
La distribución espectral de la energía de las señales de EEG depende de la actividad
mental en ejecución. En la Figura 15 se muestran espectros típicos de EEG; estos
corresponden a registros tomados con electrodos superficiales en la zona occipital con
ojos abiertos y con ojos cerrados sobre un ancho de banda de 32 Hz. Se puede observar,
en ambos casos, una predominancia de la banda alfa.
Capítulo 2: La señal de EEG
10 Interfaces para Control Cerebral
2.4. Tipos de Potenciales de EEG. De acuerdo a su origen los potenciales de EEG pueden clasificarse1 en Potenciales Evocados si se producen como consecuencia de un estímulo externo y Potenciales Espontáneos si se producen espontáneamente, podríamos decir que estos últimos nacen de la “voluntad” del sujeto. Dentro de los potenciales espontáneos podemos diferenciar los Ritmos Cerebrales que se registran en condiciones de reposo, cuando las neuronas no procesan información, y los Potenciales Relacionados RP (Related Potentials), que se producen como consecuencia de algún evento puntual. Generalmente los RP son de reducida amplitud comparados con la actividad de base ("background"). Por ejemplo, las señales de EEG en scalp relacionadas a una actividad motora (MRP: Movement Related Potential) presentan relaciones señal-ruido menores a -10 dB (Lange, 1996). Cuando el análisis se efectúa en el dominio de la frecuencia se incorporan los términos ERS (Event Related Sincronization), para describir el incremento de la energía en alguna banda como consecuencia de un evento, y ERD (Event Related Desinchronization), para su decremento.
A modo de resumen, en la Figura 2.4, se esquematizan los distintos tipos de potenciales en EEG.
Figura 2.4: Clasificación de potenciales de EEG
2.5. El espectro de EEG.
El espectro de frecuencias de las señales electroencefalográficas se extiende desde algunas décimas de Hz hasta aproximadamente 100 Hz. En el análisis espectral de señales de EEG, se definen ciertas bandas de importancia
clínica que se denominan con las letras griegas δ, θ, α, β y γ. Si bien estas bandas no tienen límites precisos abarcan aproximadamente los siguientes intervalos:
δ < 4 Hz
θ 4-8 Hz
α 8-12 Hz
β 12-32 Hz
γ > 32 Hz
Tabla 2.1: Bandas espectrales utilizadas en EEG
1 Esta clasificación no pretende ser general ni definitiva, solo intenta establecer un marco donde describir las señales de EEG como causa/efecto.
Estímulo Potenciales Evocados Potenciales Espontáneos
Ritmos Cerebrales Potenciales Relacionados
Sincronización ERS Desincronización ERD
F
Sujeto
Capítulo 2: La señal de EEG
Interfaces para Control Cerebral 11
Si bien en aplicaciones clínicas se utilizan fundamentalmente la zona de bajas frecuencias, actualmente también son motivo de interés las componentes de alta frecuencia, especialmente alrededor de 40 Hz La distribución espectral de la energía de las señales de EEG depende de la actividad mental en ejecución. En la Figura 2.5 se muestran espectros típicos de EEG. Corresponden a registros tomados con electrodos superficiales en la zona occipital con ojos abiertos y con ojos cerrados sobre un ancho de banda de 32 Hz. Se puede observar, en ambos casos, una predominancia de la banda alfa. El fenómeno de intensificación de la energía en esta banda al cerrar los ojos, conocido como ritmo alfa, se analizará en detalle en la sección 2.6.
Figura 2.5: Espectro típico de señales de EEG 2.6. Ritmos cerebrales.
El cerebro tiene la capacidad de describir, bajo ciertas circunstancias, actividad rítmica. Estas oscilaciones, denominadas ritmos cerebrales (García Austt y Bruño, 1979), pueden observarse claramente aun utilizando técnicas de EEG no invasivas (scalp). Ritmos en la denominada "banda alfa" fueron reportados desde los inicios del EEG por Berger en 1930. Esta actividad rítmica aparece en distintas zonas espectrales. Entre ellas merecen destacarse la banda alfa (8-12Hz.) y la beta (12-24Hz.). En general, la amplitud que alcanzan los ritmos decrece con la frecuencia. Esto se debe a que las oscilaciones más rápidas involucran grupos de neuronas más reducidos que en el caso de las más lentas (Pfurtscheller, 1997a). Existen diversos tipos de ritmos cerebrales que se producen e inhiben según mecanismos asociados a distintas actividades mentales (por ejemplo, tareas motoras, visuales, etc.). Cada uno de ellos posee características propias, aunque en líneas generales (Pfurtscheller, 1997a, Pfurtscheller, 1997b), se observa lo siguiente:
! Los ritmos se producen sobre grupos neuronales que no se encuentran
realizando su tarea específica, es decir, aparecen en condición de reposo (iddling rhythms) o de descanso2 (resting rhythms). Un claro ejemplo de este
2 Entiéndase aquí como “descanso” el período inmediato a la culminación de un esfuerzo. Digamos que transcurrido un tiempo prolongado el “descanso” se transforma en “reposo”.
5 10 15 20 25 30 35Frecuencia [Hz]
δδδδ θθθθ αααα ββββ γγγγ→→→→
Ojos Cerrados
Ojos Abiertos
Figura 15 Espectro típico de las señales EEG. Tomado de [1].
Capítulo 2 19
2.3.1 Ritmos cerebrales El cerebro tiene la capacidad de describir, bajo ciertas circunstancias, actividad rítmica.
Estas oscilaciones, denominadas ritmos cerebrales [13], pueden observarse claramente
aun utilizando técnicas de EEG no invasivas (scalp) [1].
Esta actividad rítmica aparece en distintas zonas espectrales. Entre ellas merecen
destacarse la banda alfa (8-12Hz.) y la beta (12-24Hz.). En general, la amplitud que
alcanzan los ritmos decrece con la frecuencia, debido a que las oscilaciones más rápidas
involucran grupos de neuronas más reducidos que en el caso de las más lentas [1].
Existen diversos tipos de ritmos cerebrales que se producen e inhiben según
mecanismos asociados a distintas actividades mentales (por ejemplo, tareas motoras,
visuales, etc.), cada uno de ellos posee características propias, aunque en líneas
generales, se observa que los ritmos se producen sobre grupos neuronales que no se
encuentran realizando su tarea específica, es decir, aparecen en condición de reposo
(iddling rhythms) o de descanso (resting rhythms).
Un claro ejemplo de este fenómeno se observa en la zona occipital, donde se concentra
el procesamiento visual: al cerrar los ojos y no procesar información, esta zona cortical
presenta una marcada actividad rítmica denominada "ritmo alfa"[1].
Los ritmos son bloqueados o atenuados cuando se producen eventos que implican que el
área cortical involucrada procese o se prepare a procesar información. Este fenómeno se
denomina desincronización asociada al evento: ERD (Event Related Desincronization)
[13].
20 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Finalizado el evento que produjo la ERD el ritmo suele reaparecer intensificado. Este
fenómeno se denomina Sincronización Relacionada al Evento: ERS (Event Related
Sinchronization) [13].
Ritmos delta δ: Son las ondas de mayor amplitud y menor frecuencia. Nunca llegan a
cero, pues eso significaría la muerte cerebral. Es un estado de sueño profundo. Si se
presenta en un sujeto despierto puede derivarse a un síntoma patológico [5].
Ritmos theta θ: Se trata de un estado de meditación profunda. A menudo, una persona
tiene las mejores ideas cuando predominan este tipo de ondas. Se trata de un estado en
el que las tareas realizadas se han vuelto tan automáticas, que no se necesita tener un
control consciente de su realización [5].
Ritmos alfa α: Se produce en cualquier persona con los ojos cerrados o en estado de
relajación y poca actividad mental. Este ritmo se atenúa con los ojos abiertos. Es más
prominente en la región posterior del cerebro [5].
Ritmos beta β: Se producen en estados de concentración mental. Son ondas amplias y
las más rápidas de las cuatro. Denotan una actividad mental intensa. Cuando una
persona está dando un discurso, estudiando, realizando un problema de matemáticas,
etc. También se encuentra estrechamente relacionado con el movimiento de las
extremidades y se lo detecta principalmente en la región central y frontal del cerebro [3].
2.3.2 Potenciales evocados Son cambios en la actividad eléctrica cerebral, producidos por la percepción de estímulos
captados por un sujeto a través de los sentidos. Estos estímulo se conducen a modo de
impulsos nerviosos desde los órganos perceptivos hasta el cerebro, donde serán
interpretados y se les atribuye un significado.
Capítulo 2 21
De este modo, la exposición a un flash, un ruido intenso o un estimulo táctil van a dar
lugar a unas ondas eléctricas cerebrales características. Si el estimulo visual, auditivo, o
la sensación eléctrica dada en pies y manos no produce la onda esperable, en el tiempo
y lugar adecuados, quiere decir que hay algún problema de la vía nerviosa. El estudio de
los potenciales evocados es, por tanto, un procedimiento neurofisiológico que evalúa la
función y la integridad del sistema perceptivo y sus vías.
2.4 Potenciales relacionados con eventos (P300) El P300 es un PRE (potencial relacionado a eventos) endógenos, generado por un
estímulo visual, auditivo o somatosensorial, infrecuente o particularmente significativo,
combinado con un estímulo frecuente o rutinario, típicamente evocan un pico positivo
cercano a los 300 ms sobre la corteza parietal en el EEG; De ahí su nombre del P300, un
potencial positivo aproximadamente en el milisegundo 300 [14].
Una de las grandes ventajas que tiene el uso de este potencial evocado es que el sujeto
no requiere un entrenamiento previo, lo cual le brinda al sistema una mayor flexibilidad en
su uso y abre las puertas para que un sin número de personas que requieran su uso no
tengan que invertir tiempo para realizar extensas jornadas de entrenamiento [14].
3. Capítulo 3. Procesamiento y análisis de señales
En el procesamiento de señales, se hace importante determinar en un mismo momento
lo que sucede con el tiempo y el espectro de energía, mediante algún método
matemático, en este caso a través de la descomposición en Wavelets que permite
realizar análisis espectral y a la vez análisis de tiempo – frecuencia [1, 15].
3.1 Análisis tiempo frecuencia La Transformada de Fourier, permite entender cómo se encuentra distribuida la energía
de una señal en distintas frecuencias, lo que se conoce como distribución espectral, sin
embargo no permite conocer información acerca del tiempo en que aparece la señal, es
decir que desconocemos la evolución temporal.
Una forma sencilla de resolver este problema, es tomar intervalos de tiempo T sobre la
señal que estamos analizando, sin descuidar su posición y sobre ellos realizar
transformadas de Fourier, así se puede entender cómo evoluciona el espectro de la
energía de la señal en el tiempo.
Cada uno de los intervalos determinados son los que se conocen como ventana
temporal.
La multiplicación en el tiempo de la señal x(t) por v(t) ("ventaneo"), en el dominio de la
frecuencia es equivalente a una convolución de su transformada X(f) con la transformada
de la ventana V(f). La duración efectiva Df de esta última determinará la resolución
espectral.
La Figura 16 muestra un ejemplo: supongamos una señal sinusoidal x(t)=sin (2π⋅f0⋅t)
cuya transformada de Fourier X(f)=δ(f-f0)/2 + δ(f+f0)/2 está totalmente localizada en ±1.
24 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Cuando se multiplica x(t) por v(t), la transformada de la señal resultante es conocida
como la convolución de X(f) con V(f), y esta señal ya no presenta la energía concentrada
en 𝑓! sino distribuida al rededor de esta frecuencia.
Para tener un análisis más preciso del tiempo, se puede utilizar una ventana v1(t) más
pequeña en el dominio transformado la convolución con su transformada V1(f), que
tendrá una duración Df mayor y degradará la resolución espectral.
3.2 Análisis tiempo frecuencia (t-f) utilizando Wavelets
3.2.1 Descomposición Wavelet Si se tiene una señal x(t), se puede conocer su espectro de energía descomponiéndola
en varias funciones con buena localización espectral, es decir con Df pequeños. Si x(t) es
limitada en frecuencia (0, BW), utilizando como base exponenciales complejas e j2πkfo·,
(senos y cosenos), en un intervalo (0,T) x(t) puede escribirse como:
Capítulo 4: Análisis tiempo-frecuencia de señales de EEG
46 Interfaces para Control Cerebral
Al multiplicar x(t) por la ventana v(t), la transformada de la señal resultante (convolución de X(f) con V(f)), ya no presenta la energía concentrada en fo sino distribuida en un entorno de esta frecuencia. Si a fin de conseguir una mejor resolución temporal, utilizamos una ventana v1(t) más estrecha (Dt menor), en el dominio transformado la convolucion con su transformada V1(f), que tendrá una duración Df mayor1 degradará la resolución espectral.
Figura 4.1: efecto "espectral" de una ventana temporal
Existe una relación de compromiso entre la resolución temporal y la espectral, solo puede mejorarse una a expensas de la otra. Además, el producto de ambas nunca puede ser mejor que una cota dada por el Principio de Incertidumbre (Apéndice 1) que establece:
π41≥⋅ ft DD (4.1)
La igualdad (mejor caso) se alcanza cuando v(t) es gaussiana. Utilizando esta ventana, llegamos a la Transformada de Gabor que está dada por:
∫∞
∞−
⋅−−− ⋅⋅⋅== dteetxbfGtxG tfjbt t πσ 22/)( 22
)(),()}({ (4.2)
Esta transformada tiene dos variables, una espectral f y una temporal b. Sus resoluciones o incertidumbres asociadas Dt y Df son (Apéndice 1):
tf
tt DD
πσσ
⋅==
8
1;
2 (4.3)
Podemos observar que elegida la ventana v(t), es decir su varianza σt , quedan fijadas Dt y Df. Este es el principal inconveniente de este método de análisis t-f: las resoluciones temporales y espectrales son fijas. Supongamos un caso con Dt=1 seg., y Df=1/(4π)=0.08 Hz. Estas incertidumbres son razonables para detectar una componente de algunos Hz. Para frecuencias mayores, digamos centenas de Hz, la resolución espectral de 0.08Hz en términos relativos es
1 Recordar la propiedad de cambio de escala de la T.de Fourier: si F{x(t)}=X(f), F {x(a·t)}=1/a· F {f/a}
f0
f0
f0
Tiempo Frecuencia
x(t)
x(t)·v(t)
v(t)
x(t)·v1(t)
v1(t)
X(f)
X(f)*V(f)
X(f)*V1(f)
Figura 16 Efecto espectral de un ventaneo. Tomado de [1].
Capítulo 3 25
𝑥 𝑡 = 𝐶𝜅 ∙ 𝑒!!!!"#$⋅!!!
!!!!
Válida para 0 < 𝑡 < 𝑇 con 𝑓𝑜 = 1 𝑇 𝑦 𝑁 = 𝐵𝑊𝐴 ∕ 𝑓𝑜
Donde los ck son los coeficientes del desarrollo en serie de Fourier de x(t) dados por
𝑐! 𝑡 =1𝑇⋅ 𝑥 𝑡 ⋅ 𝑒!!!!"#$∙!
!
!
.𝑑𝑡
Hallados estos coeficientes, que son escalares, x(t) puede expresarse como:
𝑥 𝑡 = 𝑐!! ∙ 𝑒!!!!∙!"#∙! +∙∙∙ +𝑐!! ⋅ 𝑒!!!!∙!!!∙! + 𝑐!! ∙ 𝑒!!!!∙!"#∙! + 𝐶! + 𝐶! ∙ 𝑒!!!!∙!!!∙! + 𝑐!∙ 𝑒!!!!∙!!!∙! +∙∙∙ +𝑐! ∙ 𝑒!!!∙!!!∙! + 𝑐! ∙ 𝑒!!!!∙!!"∙! +∙∙∙ +𝑐! ∙ 𝑒!!!∙!"#∙!
Ya que una función de la forma ej2πkfo·t, tiene toda su energía en k·f0, un coeficiente ck
grande nos informa que la señal presenta un componente de energía alrededor de f=k·f0.
Así si se conocen los cj es posible saber como se distribuye espectralmente la energía de
x(t).
Las funciones utilizadas como base de descomposición e j2πkfo·, tienen toda su energía se
f(0), que permite conocer como se distribuye la energía de x(t) en las distintas
frecuencias. Pero no tenemos información alguna de cómo evoluciona esta energía en el
tiempo, pues las funciones e, comienzan en -∞ y terminan en +∞, o visto desde 0-T , la
abarcan completamente. La localización temporal de estas funciones es nula.
Para realizar un análisis t-f es necesario descomponer x(t) en una base compuesta por
funciones localizadas en t y en f. Supongamos una función ψ (t) tal que su energía esté
localizada tanto temporal como espectralmente.
Si ψ (t) tiene su energía concentrada alrededor de f0, una versión escalada ψ (a·t) la
tendrá en f0·a, así, a partir del factor de escala a, es posible generar una familia de curvas
con su energía espectralmente localizada en distintas frecuencias.
26 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
El factor de escala se toma de la forma a=2j y la familia será ψ (2j ·t). Para conseguir
describir energías a lo largo del eje del tiempo, se debe incorporar a la base versiones
desplazadas de estas funciones. Asociando al desplazamiento un nuevo índice k, la
familia finalmente está dada por:
Ψ!" 𝑡 = 2!!∕! ⋅Ψ 2! ∙ 𝑡 − 𝑘
El factor 2-j/2 se incluye para normalizar en energía.
Descomponiendo x(t) en la base ψ jk(t), la misma queda expresada como una suma de
escalamientos y desplazamientos de la función ψ (t), que se denomina Wavelet madre.
𝑥 𝑡 = 𝑊!" ∙Ψ!" 𝑡
De esta forma x(t) puede componerse a partir de una suma ponderada (los Wjk son
escalares) de funciones básicas con energía localizada en un determinado rango de
frecuencia y de tiempo.
Un coeficiente Wlm elevado implica que la energía es importante en el tiempo y en el
rango de frecuencias dondese encuentra localizada ψ lm(t).
Capítulo 4: Análisis tiempo-frecuencia de señales de EEG
48 Interfaces para Control Cerebral
Recordando que una función de la forma ej2πkfo·t, tiene toda su energía localizada en k·f0 , un coeficiente ck grande nos informa que la señal analizada presenta una energía importante alrededor de f=k·f0. De esta manera, a partir de los cj podemos determinar como se distribuye espectralmente la energía de x(t). Ahora bien, las funciones utilizadas como base de descomposición ej2πf·t, presentan una excelente localización en frecuencia (su T. F es δ(f±f0): toda su energía se encuentra en f0), que nos permiten conocer con precisión como se distribuye la energía de x(t) en las distintas frecuencias. Pero no tenemos información alguna de cómo evoluciona esta energía en el tiempo, pues las funciones ej2πf·t, comienzan en -∞ y terminan en +∞, o visto desde nuestra ventana de observación 0-T , la abarcan completamente. La localización temporal de estas funciones es nula. Para realizar un análisis t-f es necesario descomponer x(t) en una base compuesta por funciones localizadas en t y en f. Supongamos una función ψ(t) tal que su energía esté localizada tanto temporal como espectralmente (ver Figura 4.3). Si ψ(t) tiene su energía concentrada alrededor de f0, una versión escalada ψ(a·t) la tendrá en f0·a, así, a partir del factor de escala a, es posible generar una familia de curvas con su energía espectralmente localizada en distintas frecuencias.
Figura 4.3: Escalamientos de la wavelet madre y sus transformadas de Fourier
Usualmente el factor de escala se toma de la forma a=2j (descomposición diádica o en octavas) y la familia será ψ(2j ·t). Para conseguir describir energías a lo largo del eje del tiempo, debemos incorporar a la base versiones desplazadas de estas funciones. Asociando al desplazamiento un nuevo índice k, la familia finalmente está dada por:
)2(2)( 2/ ktt jjjk −⋅⋅= − ψψ (4.7)
El factor 2-j/2 se incluye para normalizar en energía. En la Figura 4.4 se muestran algunas ψjk(t).
Descomponiendo x(t) en la base ψjk(t), la misma queda expresada como una suma de escalamientos y desplazamientos de la función ψ(t), que se denomina Wavelet madre.
∑ ⋅= )()( tWtx jkjk ψ (4.8)
De esta forma x(t) puede componerse a partir de una suma ponderada (los Wjk son escalares) de funciones básicas o "átomos" cada uno de ellos con energía localizada en un determinado rango de frecuencia y de tiempo. Un coeficiente Wlm elevado implica que la energía es importante en el tiempo y en el rango de frecuencias donde se encuentra localizada ψlm(t).
t →
ψ(t)ψ(2·t)
ψ(4·t)
f →
F{ψ(t)}
F{ψ(2·t)}
F{ψ(4·t)}
f0 2f0 4f0
Figura 17 Escalonamientos de wavelet madre y sus transformadas de Fourier. Tomado de [1].
Capítulo 3 27
ψ (t) para ser una wavelet madre debe corresponder a la respuesta impulsiva de un filtro
pasabanda, es decir
Ψ(𝑓) 2𝑓
!
!!∙ 𝑑𝑓 < +∞
Ψ 𝑓 = 𝐹 Ψ 𝑡
Para que ψ jk(t) constituya una base ortogonal, esta debe verificar que:
Ψ!" 𝑡 ,Ψ!" 𝑡 = 0 ∀ 𝑗, 𝑘
Donde
𝑓 𝑡 ,𝑔 𝑡 = 𝑓 𝑡 ∙ 𝑔 𝑡 ∙ 𝑑𝑡!
!!
denota producto interno en L2. En este caso los coeficientes Wjk se obtendrán
proyectando x(t) sobre ψ jk(t):
𝑊!" = 𝑥 𝑡 ,Ψ!" 𝑡 = 𝑥 𝑡 ∙Ψ!" 𝑡 ∙ 𝑑𝑡!
!!
Y para el caso biortogonal, es necesario proyectar sobre el espacio dual ψ * jk (t) ø , es
decir aquel que verifica:
Ψ!" 𝑡 ,Ψ ∗ 𝑎𝑟𝑟𝑖𝑏𝑎!" 𝑡 = 0 ∀ 𝑗, 𝑘
y los Wjk estarán dados por:
𝑊!" = 𝑥 𝑡 ∙Ψ ∗!" 𝑡 = 𝑥 𝑡 ∙Ψ ∗!" 𝑡 ∙ 𝑑𝑡!
!!
28 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
La descomposición en bandas se consigue a través de la aplicación sucesiva de filtros
pasabajos L(z), pasaltos H(z) y decimaciones. Los filtros L(z) y H(z) se obtienen a partir
de la wavelet madre elegida y deben ser simétricos [16].
3.2.2 Análisis de señales EEG Para analizar una señal, lo primero que debe hacerse es elegir la wavelet madre ψ (t)
que generará la base de descomposición [1, 17]. Para que la descomposición de x(t) en
la base ψ jk(t), pueda hacerse, es importante que esta base esté adaptada a la señal a
representar, es decir que el "aspecto" de ψ (t) sea similar al de la señal de EEG x(t).
Para el estudio de las interfaces implementadas fue necesario analizar
fundamentalmente la banda α (8-12 Hz) y la β inferior (16-24 Hz) que se evidenciaron
como las más reactivas para aplicaciones en BCI.
Para calcular la energía de la señal a partir de los Wjk es necesario que la base ψ jk(t)
sea biortogonal con espacio dual ψ * jk(t), x(t) y que pueda expresarse como:
𝑥 𝑡 = 𝑤!"Ψ!" 𝑡
La energía de x(t), está dada por:
∥ 𝑥 𝑡 ∥= 𝑥 𝑡 , 𝑥 𝑡 = 𝑥 𝑡 ∙ 𝑥 𝑡 ∙ 𝑑𝑡!
!!
Reescribiendo la expresión
∥ 𝑥 𝑡 ∥= 𝑤!"Ψ!" 𝑡 , 𝑤 ∗!"∙Ψ ∗!" 𝑡 𝑥(𝑡)
y sabiendo que
Ψ!" 𝑡 ,Ψ ∗!" = 0 ∀ 𝑗 ≠ 𝑙; 𝑘 ≠ 𝑚
Capítulo 3 29
finalmente tenemos que
∥ 𝑥 𝑡 ∥= 𝑊!" ⋅𝑊 ∗!"!!!!!!
Vemos que para calcular la energía es necesario calcular tanto los Wjk como los W*jk, sin
embargo, si la base es ortogonal ψjk(t)= ψ* jk(t) se reduce a
𝑥(𝑡) = 𝑊 2!"
Esta expresión permite calcular la energía total de x(t). Usualmente se desea la
secuencia "temporal" de la energía en determinada escala (rango de frecuencias), que
estará dada, en el caso ortogonal por
𝑒! 𝑘 = 𝑊2!(𝑘)
Es decir que en el caso de una base ortogonal, los coeficientes wavelets elevados al
cuadrado nos indican la energía de la señal en la zona o casillero (j,k) del plano t-f.
Con base en las transformadas de Wavelets es posible escribir los códigos que bajo el
microcontrolador tendran la oportunodad de establecer los espectros de energía que
serán mostrados en las gráficas de las señales obtenidas a partir del Handset.
4. Desarrollo experimental inicial
Para el desarrollo del trabajo experimental se hizo necesario dividir el proceso en
diferentes etapas que describen a continuación.
En la primera etapa se realizó el análisis respectivo de una unidad MINDFLEX de doble
comando, para entender la técnica electrónica usada para obtener señales EEG. En esta
etapa se hace indispensable medir de señales eléctricas con osciloscopios, para
garantizar la obtención de señales en bruto captadas por los electrodos que estarán
disponibles en los Handset de la unidad Mindflex con un tipo de conexión monopolar.
En la segunda etapa se dío inicio al diseño y construcción de una BCI simple y funcional,
para ello se prevé diseñar un modo de lectura de datos, a través de transmisión por
puerto serial para graficar cada una de las señales obtenidas y posteriormente adecuar
esta transmisión con sistemas bluetooth que hagan menos robusto el sistema y que
permita una lectura de datos mas sencilla y trabajable desde cualquier plataforma como
el Tracker; es decir que se busca realizar adaptaciones electrónicas a la unidad
Mindflex, a través de instrumentación, que permitan hacerla menos robusta y que faciliten
la obtención de las señales EEG tomadas desde el hemisferio frontal cerebral.
En esta etapa se establecieron las posibles configuraciones del microprocesador para
hacer un remodelamiento basados en sistema Arduino® Nano o Uno que haga mas
eficiente el sistema y que permita el control de los actuadores dispuestos para el fin, en
este caso los servomotores que harán que la mano cierre o abra según el estimulo.
32 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Modelar el código con el cual el microprocesador trabajará las señales capturadas y que
se ajuste a los potencial obtenidos, para luego utilizarlos en la conexión de los servo
motores y controlar su movimiento, se conviertío en la tercera etapa de trabajo.
En un cuarto momento se trabajó en conjunto con la empresa PROTOTYPE, quien
elaborará la prótesis de mano a través de impresión 3D, basándose en las características
de diseño que se establezcan para la prueba asertiva del dispositivo .
Adaptar los servomotores a la prótesis, a través de experimentación electrónica, para
garantizar funcionalidad se consolidará como la etapa final experimental.
4.1 Unidad Mindflex Mindflex es un juego creado por la empresa Mattel y puesto en venta en el mercado
estadounidense en el año 2009 y que consiste en controlar una bola con la concentración
pues a medida en que ésta se incrementa la bola subirá o bajará venciendo obstáculos
para ganarle al oponente.
La concentración y la atención se hacen vitales ya que si por algún momento el jugador
se desconcentra, la bola caerá y se perderá el juego.
La unidad Mindflex se ofrece en diferentes presentaciones, entre ellas la que se muestra
en la figura 4.1 conocida como Mindflex Duel, que consta de la consola de encendido y
obstáculos y dos Handset, uno para cada jugador.
Capítulo 4 33
Estas consolas cuentan con un micro controlador EEG producido por la empresa
Neurosky [18], lideres en este tipo de tecnología, siendo capaz de medir la actividad
eléctrica cerebral a través del Handset que se ubica en el lóbulo frontal derecho del
jugador.
Básicamente la unidad esta compuesta por dos partes: el Handset y el Mindflex Base
Station cuyo hardware se describe en la figura 18.
Figura 18 Unidad Mindflex® Tomado de [18].
34 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Como se aprecia en la Figura 19, los tres electrodos están ubicados en el Handset, cuya
colocación debe corresponder a la configuración monopolar correcta, que propone un
electrodo ubicado en el lóbulo frontal derecho, y los otros dos en una zona sin
terminaciones nerviosas u óseas, que se comporten como una tierra para el circuito.
Figura 19 Hardware Unidad Mindflex® Tomado de [18].
Capítulo 4 35
La zona que se determina propicia para la configuración de la tierra es el lóbulo de la
oreja que no presenta actividad nerviosa que pueda generar algún registro de voltaje
para los electrodos.
Internamente el Handset también guarda el chip diseñado por Neurosky, un micro
controlador y un emisor de señales de radio. Por otra parte el Base Station, esta
conformado por el receptor de ondas de radio, un micro controlador conectado a cinco
LED, que indicarán el nivel de concentración que tenga el individuo, y finalmente un
motor conectado a un ventilador que mantendrá en el aire la bola mientras los niveles de
concentración sean los adecuados.
4.2 El Arduino ONE como micro controlador primario El micro controlador que recibirá las señales captadas por los electrodos será una
plataforma Italiana libre, que permite la creación de proyectos basados en software y
hardware libre con una amplia gama de posibilidades de uso gracias a una gran cantidad
de sensores diseñados para ser compatibles con este micro controlador.
El micro controlador mencionado anteriormente se conoce como Arduino y su utilidad
esta en la posibilidad de captar dos tipos de señales principales de entrada, análogas y
digitales, pero además tiene la posibilidad de trabajar señales PWM (modulación por
ancho de pulso), que son útiles para manejar motores entre muchas otras aplicaciones
gracias a la posibilidad que se brinda para modificar el ciclo de trabajo de una señal
periódica, para transmitir información a partir de cierto protocolo o para controlar la
cantidad de voltaje con el que se controle un actuador.
El micro controlador de la placa Arduino es programable con un lenguaje basado en
Wiring, compatible con C++, Flash, MaxMSP y otros.
36 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
La plataforma Arduino como software es gratuita y sus extensiones conocidas como
librerías para aplicaciones de sensores, instrumentación o actuadores, son descargables
en periodos de tiempo cortos después de que un nuevo sensor o elemento es puesto en
el mercado.
Otra ventaja importante de esta plataforma es que permite el envió de información bit a
bit a un computador u otra plataforma, posibilitando el monitoreo serial de transmisión y
recepción de datos y con algunos cambios sencillos en la programación, poderlos
graficar en tiempo real cuando ya está en ejecución el protocolo de comunicación.
Arduino cuenta con una amplia gama de posibilidades en cuanto su escogencia que
varían en el tamaño, la cantidad de entradas y salidas y los accesorios que tienen
incluidos para tareas específicas. Entre los más reconocidos están el Arduino Uno, el
Mega, el Mini, el Nano, el Leonardo, entre otros.
44
Familia Arduino Como toda familia que se respete, tenemos de los integrantes más grandes a los más pequeños, te invitamos a conocerlos:
6B
El m
ás v
endi
do,
todo
en
uno
Arduino UNO Arduino Mega2560
Muc
has
entr
adas
y
salid
as
Arduino Pro
Ligero y práctico
Arduino Fio
Programación XBee
Arduino Mini
Pequeño, ideal para protoboard
Programación vía bluetooth
Arduino Bluetooth Arduino Mega ADK
Para conectar el Android
Para artistas y manejar e-textils
Arduino LyliPad
Arduino Nano
Un pequeño pode-roso
Arduino Serial
El inicio del pro-yecto Arduino
Arduino Leonardo
El más joven y económico
44
Familia Arduino Como toda familia que se respete, tenemos de los integrantes más grandes a los más pequeños, te invitamos a conocerlos:
6B
El m
ás v
endi
do,
todo
en
uno
Arduino UNO Arduino Mega2560
Muc
has
entr
adas
y
salid
as
Arduino Pro
Ligero y práctico
Arduino Fio
Programación XBee
Arduino Mini
Pequeño, ideal para protoboard
Programación vía bluetooth
Arduino Bluetooth Arduino Mega ADK
Para conectar el Android
Para artistas y manejar e-textils
Arduino LyliPad
Arduino Nano
Un pequeño pode-roso
Arduino Serial
El inicio del pro-yecto Arduino
Arduino Leonardo
El más joven y económico
44
Familia Arduino Como toda familia que se respete, tenemos de los integrantes más grandes a los más pequeños, te invitamos a conocerlos:
6B
El m
ás v
endi
do,
todo
en
uno
Arduino UNO Arduino Mega2560
Muc
has
entr
adas
y
salid
as
Arduino Pro
Ligero y práctico
Arduino Fio
Programación XBee
Arduino Mini
Pequeño, ideal para protoboard
Programación vía bluetooth
Arduino Bluetooth Arduino Mega ADK
Para conectar el Android
Para artistas y manejar e-textils
Arduino LyliPad
Arduino Nano
Un pequeño pode-roso
Arduino Serial
El inicio del pro-yecto Arduino
Arduino Leonardo
El más joven y económico
Figura 20 Algunos ejemplares de la familia Arduino
Capítulo 4 37
La expansiones para cada uno de los arduinos están disponibles para diferentes tareas;
estas expansiones reciben el nombre de Shields, y permiten por ejemplo conectarse a
una red WiFi, conectar una pantalla LCD, poseer un puerto USB Host, conectar motores,
adaptar Joysticks o lementos de comunicación como XBee, entre otros
45
Expandir Arduino con los shields
Un Shield o escudo es una placa que permite expandir funcionalidades a tu Arduino, con lo cual puedes conectar motores, o a la red celular, a una red WiFi, a una red Ethernet o tener un MP3 en el Arduino, entre muchos más solo mira:
6C
ESCANEA CON TU SMARTPHONE
BUSCA ASÍ
VISITA LA OPCIÓN DE
T01AB
VID
EO
TU
TO
RIA
L H
D
Celular Ethernet Proto GPS
XBee
Joystick Motores DC SD Card
WiFi LCD a color USB host
Figura 21 Shields más reconocidos para Arduino.
38 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
La plataforma que se utilizó para el montaje preliminar fue el Arduino Uno, debido a la
versatilidad de uso de sus salidas análogas y digitales y además por su bajo precio. Su
descripción aparece a continuación:
1. Conector USB
2. Pulsador Reset
3. Pines de entrada y salida digitales y PWM
4. LED verde de Placa encendida
5. LED naranja de conexión al pin 13
6. Microprocesador ATmega 16U2 encargado de la comunicación al PC
46
Vistas auxiliares
Vista frontal
Placa Arduino Uno y sus partes 6D
9
10
1
2 3
4
8
7
6 5
11
12
13 14
9
Figura 22 Descripción Arduino Uno.
Capítulo 4 39
7. LEDS TX y RX de la comunicación serial
8. Puerto para programación serial
9. Micro controlador principal ATmega 328
10. Cristal de cuerzo de 16Mhz
11. Regulador de voltaje
12. Conector a adaptador de voltaje
13. Pines de salida de voltaje y tierra
14. Entradas análogas
4.3 Obtencion primaria de señales La captura e interpretación primaria de las señales provenientes del lóbulo frontal es la
primera tarea, para que en una etapa posterior se realice el nuevo diseño de BCI basado
en las referencias y datos obtenidos en primera instancia.
El montaje experimental que permitirá la obtención preliminar de datos puede explicarse
en diagrama de bloque de la siguiente forma:
En esta primera configuración se realiza un trabajo experimental de captación de
señales eléctricas en el Handset, tomando las señales provenientes del Chip EEG
de Neurosky y transmitiéndolas por medio de alambres de cobre a un micro
controlador Arduino Uno, emulando el micro controlador interno del Handset, para
Figura 23 Configuración preliminar de hardware. Tomado de [18].
40 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
luego llevar estas señales a un computador, para que a través de diseño de código
de programación y con ayuda de diferentes librerías que ofrece la plataforma
Arduino, poder registrar los datos obtenidos, en formato ASCII o CVS, para luego
ser interpretados y graficados.
Esta configuración fue realizada con case en el trabajo hecho por Frontinerds
Brain Hack [19], quienes proponen una forma sencilla y clara para una primera
intervención del Handset.
Para la conexión se utilizaron los siguientes materiales:
Hardware
· Un Handset de la unidad Mindflex.
· Tres baterías AAA para el Handset.
· Un Arduino Uno con cable USB.
· Dos alambres de 10cm de longitud, de núcleo sólido calibre número 22 o número
24.
· Un PC o Mac para controlar los datos de serie
Software
· Plataforma Arduino, descargable de forma gratuita desde www.arduino.com
· Librería Visualizer, compatible con Arduino Uno.
· Librería IP5 de procesamiento para Arduino Uno.
4.3.1 Montaje físico preliminar En primer lugar se debe desmontar la cubierta de base del Handset y buscar los
pines TX y RX, que corresponden a transmisión y recepción de datos digitales
desde la palca del Handset como se observa en la figura 24.
Figura 24 Vista del Handset sin cubierta base.
Capítulo 4 41
Los pines pueden ser fácilmente identificados en una sobre base de la plataforma
principal con las letras TX y RX, o en algunos casos solo con las letras T y R; también es
posible identificarlos rápidamente junto al condensador electrolítico de 50mf y otro de
100mf, sobre la placa principal como se muestra en la Figura 25.
Figura 25 Identificación de los pines TX y RX
42 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
El paso siguiente consiste en identificar una tierra común que puede ser extraída
del mismo Handset y que será posteriormente conectada a la tierra del
microcontrolador Arduino que hará el proceso de manejo de las señales captadas
por los electrodos.
El punto de tierra puede ubicarse justo al borde de la placa principal, acompañada
de la línea de alimentación reconocida por un cable rojo y junto a el cable negro
que corresponde a la tierra común deseada; junto a ellos se encuentran tres
condensadores electrolíticos y muy cercano a ellos el micro cristal del micro
controlador como puede observarse en la figura 29.
Identificados los puntos de conexión, se procede a soldar dos alambres, uno sobre el
punto de tierra y el otro sobre el punto TX que corresponde a transmisión de datos y de
donde se obtendrá la señal que será posteriormente llevada al micro controlador.
Figura 26 Ubicación de la tierra en la placa principal.
Capítulo 4 43
Se hace necesario ajustar los alambres de conexión de salida internamente, a la base del
Handset con algún tipo de pegamento o silicona, como se observa en la figura 27 que
garantice que no se desprenderán debido a algún tirón o estiramiento posterior a la hora
de conectarlo con el micro controlador y así poder cerrar el Handset definitivamente.
.
Ajustados los alambres de salida y cerrada la carcaza del Handset, se procede a
conectar el Arduino teniendo en cuenta que el pin que soldamos sobre el Handset fue el
TX que corresponde a transmisión y que debemos conectarlo a RX sobre el Arduino que
corresponde a recepción de datos, y el otro pin fue el tierra que vendrá conectado al pin
GND del Arduino como se ve en la figura 28.
Figura 27 Ajuste de las conexiones de salida.
Figura 28 Conexión del Handset al Arduino.
44 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Habiendo realizado las conexiones, el paso siguiente consiste en conectar Arduino
e instalar en el la librería gratuita disponible de nombre Brian Serial Out y seguido a
ello escribimos un código de prueba sobre la ventana de trabajo Arduino, que nos
permita visualizar en datos CVS las señales que se están transmitiendo desde el
Handset.
Es importante decir que habiendo escrito el código, es vital desconectar del Arduino
el pin RX, para que la placa no presente ningún inconveniente y el proceso para
subir el código consiste en primer lugar en verificar que la placa que se está
trabajando, ya haya sido reconocida por el computador y esto se consigue
haciendo clic en la pestaña herramientas y verificar que la esta sea efectivamente
Arduino UNO, y el puerto haya sido identificado correctamente, en caso contrario
escoger el COM adecuado. . El código escrito es el siguiente:
#include <Brain.h>
// Configurar el analizador cerebro, pasarlo al objeto de serie del hardware que desea
escuchar.
Capítulo 4 45
Cerebro cerebro ( de serie ) ;
void setup ( ) {
// Inicia la serie del hardware.
Serial. comenzar ( 9600 ) ;
}
void loop ( ) {
// Espera paquetes enviados una vez por segundo.
// La función .readCSV () devuelve una cadena que enumera los datos más
recientes del cerebro, en el siguiente formato:
// "Poor signal o calidad de la señal, la atención, la meditación, delta, theta, alfa baja,
alta alfa, beta baja, alta beta, gamma baja y alta gamma"
si ( cerebro. actualización ( ) ) {
. Serie println ( cerebro. readCSV ( ) ) ;
}
}
El 9600 descrito en el código, es una medida en Baudios que es una unidad utilizada en
telecomunicaciones, que representa el número de símbolos por segundo en un medio de
transmisión digital. Cada símbolo puede comprender 1 o más bits, dependiendo de los
parámetros de modulación que se hayan planeado.
Arduino uno cuenta con la posibilidad de transmitir a 9600 baudios, 57000 baudios y
algunos otros dependiendo de la versión instalada.
46 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Cuando se abre el monitor serial de Arduino, se puede observar que aparecen repetidos
números que corresponden en su orden, como lo indica el programa, la calidad de la
señal, el nivel de atención, meditación, delta, theta, alfa baja, alfa alta, beta baja, beta
alta, gama baja y gama alta, ver figura 29, siendo estos los valores discriminados por
Neurosky para la modulación de la señal y la transmisión de los datos.
También se hace importante notar algunos aspectos que pueden ser de alta importante
para la recepción y transmisión de datos. En primer lugar se hace vital estar verificando
en la placa Arduino el LED TX, quien debe estar destellando intermitentemente,
indicando que la transmisión de datos se esta realizando en forma correcta hacia el PC.
El segundo elemento que cobra importancia, es la lectura del primer número el panel del
monitor serial del software Arduino, que indica la calidad de la señal; este debe acercarse
a cero y en caso óptimo, ser cero, indicándonos que no hay pérdidas de señal por ruido,
ocasionadas por diferentes factores, entre ellos, la sudoración excesiva de la persona
que tiene puesto el Handset.
Para disminuir este error, se hace necesario muchas veces limpiar la piel del lóbulo
lateral de la persona que usará el Handset, con un paño húmedo con base alcohólica,
incluso dejar el paño puesto el intermedio entre el electrodo y la piel, para garantizar una
perfecta conducción de las señales eléctricas.
Ahora se hace necesario poder graficar dichos datos, para que posteriormente se hagan
reajustes a los códigos consiguiendo que los espectros de energía, se acerquen mas a
los modelamientos teóricos consultados.
Capítulo 4 47
Para graficar se utiliza un software libre de aplicación que es compatible con Arduino,
conocida como Processing 2.2.1, y que permite en tiempo real graficar datos obtenidos
en formato CVS, modelando los diferentes espectros de energía que se reciben desde el
electrodo en el Handset.
Es necesario Programar el Processing con extensión PDE, vinculando el código escrito
en Arduino, con el nuevo código e lectura de las señales y para ellos de deben descargar
dos librerías prediseñada gratuitas conocidas como Brain Grapher y control IP5 que
garantizaran la vinculación y grafica de los datos.
El código escrito finalmente posee la siguiente estructura y fue desarrollado por Eric Mika
Figura 29 Datos CVS recibidos en el monitor serial de Arduino.
48 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
in Fall 2010, updates Spring 2012 and again in early 2014 en Kitspatrol Brain Grapher y
está constituido por cinco plataformas cuyo código se puede analizar en el anexo 1.
Las plataformas constituyen los códigos para el Barin grapher, Channel, ConnectionLigth,
Graph y Monitor, que en términos generales estructuran los parámetros necesarios para
establecer las gráficas de salida para cada una de las señales obtenidas desde el
Handset.
La visualización de los datos habiendo aplicado los códigos decritos en el anexo A,
habiendo compilado y corrido el programa se muetran a constinuación.
Figura 30 Inicio de la visualización, doce datos recibidos
Capítulo 4 49
4.3.2 Adaptaciones de Funcionalidad Disminuir el tamaño del equipo construido y adaptarlo a nuevas características de
funcionalidad se convierten en el paso siguiente de trabajo para conseguir un dispositivo
con más posibilidades de uso y con la capacidad de ser mejorado continuamente.
El primer cambio significativo está en la transmisión de datos, cambiando el sistema de
cable por un sistema inalámbrico, que será diseñado con un sistema Bluetooth
compatible con Arduino.
Figura 31 Visualización después de ciento noventa y ocho datos recibidos.
50 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
En las Figuras 32 y 33 se aprecia la primera disminución de tamaño del dispositivo, en
donde el cable de datos es reemplazado por un dispositivo Bluetooth HC-06 y soldado a
un plug o conector TS (Tip-sleeve) de 6.35mm y que encaja perfectamente el la entrada
Figura 32 Conexión de transmisión por cable.
Figura 33 Conexión de transmisión vía Bluetooth.
Capítulo 4 51
adaptada del Handset.
En un conector TS tal y como aparece en la figura 34, se encuentra el cuerpo que
corresponde a tierra en el número 1, en el dos conocido como aro se encuentra la
conexión negativa, en el número tres el denominado punta que corresponde a la
conexión positiva y en el número 4 los anillos aislantes.
Se hace necesario conectar una entrada hembra en el Handset que se ajuste
correctamente al conector TS, y esta entrada hembra se conectara a los pines TX, RX y
tierra que se utilizaron en el montaje preliminar para generar el proceso de transmisión,
esta elaboración puede observarse en las figuras 4.18 a y 4.18 b.
Figura 34 Configuración del conector TS. Tomado de [20].
Figura 35 Adaptación del conector hembra para conector TS
52 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
En cuanto al dispositivo Bluetooth HC-06 es un módulo muy popular para aplicaciones
con Arduino o micro controladores mas poderosos, que posee un modo de comando AT,
es decir que recibe instrucciones codificadas que establecen un lenguaje de
comunicación inalámbrica entre un dispositivo de uso común como un teléfono celular y
un terminal modem.
El HC-06 trabaja como un módulo esclavo, es decir que necesita de otro dispositivo
bluetooth que haga las veces de maestro y envíe la orden de emparejamiento, en el caso
de ser trabajado con un teléfono celular o una tableta, ellos se convierten en el maestro y
el HC-06 será el esclavo.
Figura 36 Carcasa cerrada del Handset con adaptador hembra
Capítulo 4 53
Las características técnicas mas relevantes del módulo HC-06 pueden describirse a
continuación.
. Especificación bluetooth v2.0 + EDR (Enhanced Data Rate)
. Modo esclavo (Solo puede operar en este modo)
. Puede configurarse mediante comandos AT (Deben escribirse en mayúscula)
. Chip de radio: CSR BC417143
. Frecuencia: 2.4 GHz, banda ISM
. Modulación: GFSK (Gaussian Frequency Shift Keying)
. Antena de PCB incorporada
. Potencia de emisión: ≤ 6 dBm, Clase 2
. Alcance 5 m a 10 m
. Sensibilidad: ≤ -80 dBm a 0.1% BER
. Velocidad: Asincrónica: 2 Mbps (max.)/160 kbps, sincrónica: 1 Mbps/1 Mbps
. Seguridad: Autenticación y encriptación (Password por defecto: 1234)
. Perfiles: Puerto serial Bluetooth
. Módulo montado en tarjeta con regulador de voltaje y 4 pines suministrando
acceso a VCC, GND, TXD, y RXD
. Consumo de corriente: 30 mA a 40 mA
. Voltaje de operación: 3.6 V a 6 V
. Dimensiones totales: 1.7 cm x 4 cm aprox.
. Temperatura de operación: -25 ºC a +75 ºC
Figura 37 Modulo bluetooth esclavo HC-06. Tomado de [20].
54 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Para analizar con mayor detalle las características propias del dispositivo se puede
acceder al data sheet del dispositivo, que proporciona el fabricante.
Se deben realizar algunas pruebas preliminares que garanticen el funcionamiento
correcto de conexión de vías de transmisión y recepción de datos y para ello se
sugiere el siguiente montaje cuya representación gráfica es realizada en un software
libre de nombre Fritzing y que es descargable desde Fritzing.org y al cual se le
deben estar descargando periódicamente la inclusión de diferentes dispositivos que
salen al mercado en cuanto accesorios, sensores y extensiones que son compatibles
con la plataforma Arduino Uno.
Figura 38 Conexión Modulo bluetooth esclavo HC-06.
Capítulo 4 55
Como se analizó en el montaje preliminar existen dos condiciones fundamentales para el
correcto funcionamiento del módulo HC-06. La primera consiste en que el código de
prueba que se subirá a la Placa Arduino, debe subirse sin ningún tipo de conexión de los
pines VCC, GND, TX y RX, pues si el módulo se encuentra conectado en el momento de
subir el código mostrará el mensaje de error.
Es importante recordar también la verificación en herramientas, del la placa y el COM de
conexión correcto, al igual que las conexiones deben ir cruzadas TX con RX y RX con
TX, copiar el código, hacer clic en compilar para comprobar errores y finalmente subir.
El código de prueba es descargable desde la plataforma Arduino en ejemplos modulo
HC-06 o en la página del desarrollador Hazim Bitar de licencia pública cuya estructura se
puede analizar en el anexo B.
Después de subido el código a la placa Arduino, se puede realizar la prueba de control
con una aplicación disponible para sistemas operativos ANDROID de nombre
ARDUDROID que dispone el mismo desarrollador del código de prueba.
Se conecta en forma cruzada los pines RX y TX, luego se conectan los pines VCC y
GND, con lo cual el módulo HC-06 empezara un parpadeo de un LED rojo que indica que
el dispositivo se encuentra correctamente conectado.
Además según la programación ejecutada es posible conectar el ánodo de un LED de
prueba en el PIN 13 o en cualquiera de las salidas análogas dispuestas para los
comandos de prueba y el negativo al GND de las entradas análogas.
56 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Teniendo descargada la aplicación activamos en el dispositivo Android la función
Bluetooth, luego se escoge el modulo correspondiente en las herramientas propias de la
aplicación en la opción que dice connect me to a bluetoohth device, donde generalmente
aparecerá un código como el HC-06 20:16:03:30:27:30
Una vez escogido el dispositivo correctamente, el módulo dejará de parpadear y
continuará encendido hasta que se presente una desconexión de la fuente de
alimentación o se desconecte del maestro que este caso es el teléfono móvil.
El montaje físico se puede visualizar de la siguiente forma:
Figura 39 Visualización de la aplicación Ardudroid y reconocimiento del HC-06.
Capítulo 4 57
Activando desde el teléfono móvil el pin 13 deberá encender el LED y con otro comando
apagarse comprobando así que el módulo esta trabajando adecuadamente.
Habiendo realizado la prueba del módulo se realiza la conexión al conector TS, se
conecta a la entrada hembra y habilitando la alimentación del Handset con las baterías
requeridas, se da el encendido y el HC-06 iniciará el parpadeo indicando que ha iniciado
la trasmisión de datos 9600 baudios o una tasa mayor según la programación que se
configurará mas adelante.
Figura 40 conexión física de prueba del móduloHC-06
58 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Con esta etapa de trabajo se ha culminado el mejoramiento de la etapa de
transmisión y la nueva labor se configura en rediseñar la etapa de recepción de
datos a través de un nuevo modelamiento de funcionalidad que se basará en dos
alternativas de trabajo, una ya conocida, que se basa en los ritmos cerebrales
obtenidos de la concentración y ahora el modelamiento del parpadeo voluntario
como posibilidad de generación de impulsos eléctricos para controlar la prótesis.
Figura 41 conexión física del móduloHC-06 al Handset.
5. Desarrollo experimental final: Modificación de la etapa de recepción de datos y aplicación a la prótesis de mano.
En el capítulo anterior se realizó la modificación del sistema de transmisión de datos
sobre el Handset y seguido a ello se utilizaron las señales que se captarán desde este, y
donde se comprobó que efectivamente existen, para no solamente hacerles un proceso
de lectura y graficación, sino la aplicación a un actuador, en este caso un motoreductor
que accionará la prótesis.
5.1 Nuevos dispositivos para mejora de la funcionalidad
5.1.1 El Arduino MINI como Nuevo Micro Controlador La Arduino Mini Pro es in instrumento muy útil, debido a que tiene catorce entradas
digitales (6 de las cuales se puedes utilizar como salidas PWM), seis entradas
analógicas, botón de reset y agujeros para el montaje de tiras de pines. Al dispositivo se
le conectar una tira de 6 pines para la conexión a un cable FTDI o a una placa
adaptadora para dotarla de comunicación USB y alimentación.
El Arduino Mini Pro puede ser alimentado por el cable FTDI o por un módulo DFIT 232
que permite la conexión a puerto USB; También se puede alimentar mediante una fuente
de regulada de 3.3v ó 5v (dependiendo del modelo) por el pin Vcc o por una fuente no
regulada conectada al pin RAW.
Los pines de alimentación son los siguientes:
60 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
. RAW. Para alimentación en “bruto” (no regulada) a la placa.
. VCC. Suministro regulado de 3.3 o 5 voltios.
. GND. Pines de tierra o negativos.
El procesador del Arduino Mini es el ATmega168 que posee un total de 16KB de
memoria para el almacenamiento de sketches de los cuales 2KB están reservados
para el gestor de arranque. También tiene 1KB de SRAM y 512 bytes de EEPROM
en los cuales se puede leer y escribir mediante la librería EEPROM.
Cada uno de los 14 pines digitales puede ser configurado tanto como entrada o
como salida usando las funciones pinMode(), digitalWrite() y digitalRead(). Estos
pines operan a 3.3v o 5v dependiendo del modelo. Cada pin puede suministrar o
recibir una corriente máxima de 40mA y tienen resistencias pull-up internas
(desconectadas por defecto) de 20 a 50 kOhms. Además algunos de los pines
tienen funciones especiales:
• Serie: 0 (RX) y 1 (TX). Usados para recibir (RX) y transmitir (TX) datos serie TTL.
Estos pines están conectados con los pines TX-0 y RX-1 del conector de 6 pines.
• Interrupciones Externas: 2 y 3. Estos pines pueden ser configurados para actuar
como disparadores de interrupciones en caso de que cambien a estado bajo, un
pico de subida o bajada o simplemente en un cambio de estado. Ver la
Figura 42 Arduino Uno (izquierda) versus Arduino Mini (Derecha)
Capítulo 5 61
función attachInterrupt()para más detalles.
• PWM: 3, 5, 6, 9, 10 y 11. Generan una señal PWM de salida con la
función analogWrite().
• SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan
comunicación SPI, la cual no está, de momento, incluida en el lenguaje de
programación de Arduino.
• LED: 13. Hay un LED integrado en la placa conectado al pin 13. Cuando este pin
se pone en estado HIGH el LED se enciende, cuando el pin cambia a estado
LOW el LED se apaga.
El Arduino Mini Pro tiene 6 entradas analógicas, cada una tiene una resolución de 10 bits
(esto son 1024 valores). Cuatro de ellas estás en el conector lateral de la placa, otras dos
( la 4 y la 5) en agujeros en el interior de la placa. La medida de los valores analógicos se
hace entre VCC y GND.
Este dispositivo puede comunicarse con un computador, con otro Arduino o micro
controladores. El procesador ATmega168 tiene implementada comunicación serial UART
TTL en sus pines 0 (RX) y 1 (TX). El software de Arduino incluye un monitor serial que
permite que datos sencillos puedan ser enviados y recibidos desde la placa por medio de
la conexión USB.
La librería SoftwareSerial permite la comunicación Serie en cualquiera de los pines
digitales de la Mini Pro.
Para mayor información técnica es posible acceder al Data Sheet del dispositivo que
suministra el fabricante.
5.1.2 Modulo FTDI32 Otro dispositivo elegido para lograr efectos de mejora en cuanto la funcionalidad es el
módulo de coneción USB, que ademas de permitir una ganancia considerable de
espacio, proporciona una mejora en la velocidad de transmisión de datos.
62 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Este módulo remplaza el puerto común RS232 por los puertos de conexión USB de
cuarta generación como se aprecia en la figura 43. Este dispositivo dispone de drivers
libres compatibles con los diferentes sistemas operativos, siendo una óptima posibilidad
de reducción de tamaño y ganancia en la velocidad de transmisión de datos
aproximadamente del 5%.
Las características técnicas del dispositivo que vale la pena tener encuenta son:
Posee un único chip maneja tanto el USB como la transferencia serie asíncrona.
Trabaja con una tasa de tranferencia de 300 Baudios a 3 mega Baudios.
Posee un soporte para USB suspend/resume a través de los pines SLEEP# y RI# y junto
a el mantiene un soporte para alimentar dispositivos directamente del bus USB a través
del pin PWREN#.
Posee un circuito Power-On-Reset incluido.
El voltaje de alimentación es menor al del Arduino Uno, por lo que significa tambien un
Figura 43 Modulo FTDI 232.
Capítulo 5 63
ahorro de energía, la alimentación puede variar entre los 3,3V a 5,25V.
Este módulo ofrece una ventaja impotante frente al montaje anterior, pues ademas que
puede trabajar como elemento de comunicación hacia un computador a través de la
coneccion USB, para hacer lectura de los datos transmitidos, tambien puede servir como
un dispositivo de alimentación en caso tal de que las baterias que se han conectado
previamente no esten dando la respuesta deseada para hacer que el dispositivo trabaje
correctamente.
5.1.3 Modulo HC-05 Este nuevo módulo al igual que el HC-06 es un dispositivo Bluetooth pero que posee la
capacidad de trabajar como Maestro o como esclavo según la configuración que se
disponga y de la aplicación que se le vaya a dar.
Cuando su configuración se realiza como Esclavo, este puede ser vinculado a un
dispositivo Bluetooth externo como el de un celular, una tableta o un PC, y su
configuración de código no varía a la mostrada en el módulo HC-06.
Cuando la configuración se realiza para trabajarlo como Maestro, este dispositivo debe
iniciar el protocolo de conexión y comunicación hacia un dispositivo esclavo únicamente,
refiriendo un código de conexión estándar, que tanto para el HC-05 como para el HC-06
es 1234 o 0000. Para este caso, la conexión básica se muestra a continuación
Figura 44 Modulo HC-05.
64 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
combinando el Arduino mini pro con el HC-05.
Respecto al código de interaccion de dispositivos para la configuración de Maestro, su
estructura general se muestra en el anexo C.
Teniendo estos pasos claros, el montaje de esta etapa correspondiente a la ejecución de
tareas sobre la placa Mini, esta lista y resta hacer una diagramación en bloques del
funcionamiento final del circuito, junto con la escritura del código.
Figura 45 Conexiòn HC-05 a Arduino mini pro.
Capítulo 5 65
5.2 Configuración del montaje final
Diseñar una estructura final donde actúen los diferentes dispositivos que se analizaron
por separado en el anterior capÍtulo es una de las partes finales del trabajo, donde las
tareas de mejora de funcionalidad se han cumplido respecto a la escogencia de los
dispositivos.
En este diseño de circuito final donde interactúan las diferentes partes, y que facilitan a
su vez la escritura del protocolo de comunicación, es fácilmente comprensible a través de
diagramas de bloque y luego a través de imágenes con cada una de las partes en su
construcción, facilitar la construcción del mismo , para finalmente escribir el código o
protocolo para la placa Arduino Mini y mostrar los resultados con el actuador dispuesto
que en este caso será la prótesis de mano.
El diagrama de bloques que describe el montaje final del sistema se presenta a
continuación:
66 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
5.2.1 Diseño de la protesis La protesis fué diseñada y digitalizada por la empresa PROTOTYPE 3D, donde se
fabrican prototipos y modelos para generar impresión y escaneo 3D, a través de corte
laser, según las indicaciones suministradas por el usuario del producto.
Los modelamientos finales pueden ser realizados en plástico, acrílico, madera, textiles,
entre otros; sin embargo para la impresión 3D se utilizan filamentos de 1.75mm hasta
3mm en plástico PLA o ABS.
El diseño final de la protesis se muestra en la suguiente imagen.
Figura 46 Diseño final de la pròtesis de mano.
Capítulo 5 67
5.2.2 Montaje físico final La imagen que aparece a continuación muestra la implementación final del montaje
eléctronico que en conjunto es la reunion de las partes descritas anteriormente, y que en
términos generales permiten establecer el vínculo entre los dos módulos Bluetooth y asi
permitr la transmisión de datos que posteriormente son trabajados por el micro
controlador que en este caso es el Arduino Mini pro.
En esta estructura se pueden observar cada una de las partes que conforman el
prototypo final donde es importante reslatar algunos elemtos no descritos anteriormente.
Figura 47 Estructura final del diseño.
68 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
1. Handset: sistema de captación y envio de señales eléctricas, configurado
básicamente con el módulo HC-04.
2. Módulo de recepción de señales, conformado por el Arduino Mini Pro y cuyo
elemento de recepción es el módulo HC-05.
3. Modulo FTDI232: Encargado de posibilitar la conexión vía USB entre el Arduino
Mini pro y un computador para hacer lectura del estado de las señales o
captación de los niveles de POOR SIGNAL (ruido) que suministra el software.
4. Baterías de litio de 3.7v a 250 mAh, encargadas de la alimentación del
servomotor (actuador), que fue diseñado con alimentación independiente para no
afectar en caso de sobrecarga los diferentes módulos conectados en el sistema.
5. Prótesis diseñada por PROTOTYPE.
El montaje general que tiene la placa, se describe a continuación.
Figura 48 Diseño de la placa general.
Capítulo 5 69
En la figura 47 se identifican los siguientes elementos:
1. Ranuras de conexión para Arduino Mini Pro.
2. Ranuras de conexión para módulo Bluetooth HC-05.
3. Pines de conexión para baterías de litio de 3,7v que alimentarán los actuadores.
4. Ranuras de conexión para regulador de voltaje.
5. Pines de conexión para 5 actuadores diferentes.
6. Alimentación externa del Prototipo, baterías de litio de 3,7v.
7. LED RGB que indica el modo de selección (parpadeo o relajación).
8. Sistema de encendido o apagado general.
9. Sistema de encendido o apagado de actuadores.
10. Selección de modo parpadeo o relajación.
A continuación a partir de imágenes se muestra en detalle el montaje de cada una de las
partes sobre la placa principal
Figura 49 Montaje del Arduino mini pro sobre la placa.
70 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Figura 50 Montaje del módulo HC-05 sobre la placa.
Figura 51 Montaje del regulador sobre la placa.
Capítulo 5 71
Figura 52 Montaje del módulo FTI232 en el Arduino Mini pro.
Figura 53 Montaje del servomotor (actuador) sobre la placa principal.
72 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Como se muestra en las imágenes anteriores, cada una de las piezas fue diseñada para
acceder a un montaje independiente, garantizando que en caso de corto o daño de
alguna de las partes, no afecte en su totalidad al prototipo.
Con el montaje de cada una de las partes y dispuesta su configuración final, es necesario
ahora hacer revisión del código que hará posible el funcionamiento final. Este código
puede analizarse en el anexo D.
El código inicia con la declaración de las variables de ejecución para cada uno de los
pines del Arduino mini, luego la definición de las variables para cada una de las señales
en sus respectivos espectros de frecuencia, seguido de los comandos de envío hacia
puerto serial de los datos recibidos, con la opción de selección de modo entre parpadeo o
Figura 54 Ubicación de las baterías de litio sobre la placa principal.
Capítulo 5 73
relajación que hará que el actuador se accione en el momento adecuado. Cada uno de
los detalles pueden ser analizados en el anexo correspondiente.
6. Conclusiones y recomendaciones
6.1 Conclusiones Los protocolos de comunicación entendidos como un conjunto de reglas que gobiernan
un intercambio organizado de bits a través de canales digitales, pueden ser ejecutados a
través de códigos de estructuras simples que proporcionan entendimiento y claridad en la
ejecución de tareas de control de señales, para ejecutar tareas específicas a través de
actuadores.
La presencia de potenciales en las diferentes regiones cerebrales, especialmente en la
región dorso lateral izquierda donde se realizaron las mediciones gráficas confrontadas
con la teoría, corresponden a los niveles de atención, meditación y relajación reconocidos
como señales alfa, beta, gama, entre otras, que un individuo puede generar a partir de
cierta práctica sencilla antes de controlar la prótesis por primera vez, verificando despues
de la práctica que estas potenciales se producen y se capturan en los electrodos de
forma mas rápida y ámplia.
Las señales obtenidas a partir del ritmo alfa, establecidas a partir del canal de
comunicación digital de la plataforma Arduino,establece una velocidad cercana a los
57600 baudios que concuerda claramente con lo establecido con la teoría, disminuyendo
los porcentajes de error o POOR Signal de 24 a a 0 según lo estimado en el código
programado.
Manipular desde la teoría y luego en los montajes electrónicos, cada uno de los
dispositivos que se dispusieron para comprender el funcionamiento del sistema inicial,
especialmente del microprocesador del Mindflex, y luego en la adaptación de
funcionalidad y disminución de robustez del equipo, genera interesantes opciones de
76 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
trabajo en la física, donde se hace posible abrir una amplia gama de opciones de
simulación de sistemas físicos a partir del trabajo con micro controladores Arduino, que
en su programación y modelamiento electrónico, no proporcionan mayor dificultad, pero
si se consigue gran aprendizaje y verificación de los fenómenos.
La construcción de la prótesis bajo el proceso de análisis de un juego producido por una
empresa como Matel, con base en trabajo experimental basado en el análisis de señales,
se convierte en una gran oportunidad en reducción de costos frente a otro tipo de
prótesis que se encuentran en el mercado, reduciéndolos hasta en un 80% su costo
comercial y presentando una funcionalidad apropiada para respuestas eficientes en
tiempo y ejecución de tareas simples.
Involucrar la física y el estudio del cerebro sigue abriendo puertas para dedicarse desde
trabajos concretos en neurología o electrofisiología, en donde la física cobra un papel
fundamental y se relaciona con muchísimas ramas de la ciencia que permiten trabajos
posteriores.
Herramientas como Arduino, Processing o Eagle, se convierten en posibilidades de fácil
uso y gran cobertura de aplicaciones para el análisis de sistemas electromagnéticos, que
en cuanto a sus simulaciones, dejan la posibilidad al estudiante de abordar trabajos con
diferentes sensores o dispositivos electrónicos concretos que contribuyen a simular
sistemas físicos con gran detalle y modelamiento matemático.
6.2 Recomendaciones Aunque el dispositivo obtenido como producto final cumple con los objetivos dispuestos
desde la concepción de la idea, incluso en cuanto a la disminución de costos y tamaño,
se hace pertinente la continuidad de trabajos, que desde la física puedan hacer análisis
de nuevos dispositivos electrónicos que aparezcan en el mercado y que con trabajo
experimental puedan adaptarse de mejor manera a nuevos propósitos para mejorar la
funcionalidad de la prótesis y además disminuir mucho más el tamaño que se obtuvo den
este trabajo.
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 77
A. Anexo: Código de BrainGrapher elaborado en Processing 2.2.1
Brain Grapher
// Main controller / model file for the the Processing Brain Grapher.
// See README.markdown for more info.
// See http://frontiernerds.com/brain-hack for a tutorial on getting started with the Arduino
Brain Library and this Processing Brain Grapher.
// Latest source code is on https://github.com/kitschpatrol/Processing-Brain-Grapher
// Created by Eric Mika in Fall 2010, updates Spring 2012 and again in early 2014.
import processing.serial.*;
import controlP5.*;
ControlP5 controlP5;
Serial serial;
Channel[] channels = new Channel[11];
Monitor[] monitors = new Monitor[10];
Graph graph;
ConnectionLight connectionLight;
int packetCount = 0;
int globalMax = 0;
String scaleMode;
void setup() {
// Set up window
size(1024, 768);
frameRate(60);
78 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
smooth();
frame.setTitle("Processing Brain Grapher");
// Set up serial connection
println("Find your Arduino in the list below, note its [index]:\n");
for (int i = 0; i < Serial.list().length; i++) {
println("[" + i + "] " + Serial.list()[i]);
}
// Put the index found above here:
serial = new Serial(this, Serial.list()[1], 9600);
serial.bufferUntil(10);
// Set up the ControlP5 knobs and dials
controlP5 = new ControlP5(this);
controlP5.setColorLabel(color(0));
controlP5.setColorBackground(color(0));
controlP5.disableShortcuts();
controlP5.disableMouseWheel();
controlP5.setMoveable(false);
// Create the channel objects
channels[0] = new Channel("Signal Quality", color(0), "");
channels[1] = new Channel("Attention", color(100), "");
channels[2] = new Channel("Meditation", color(50), "");
channels[3] = new Channel("Delta", color(219, 211, 42), "Dreamless Sleep");
channels[4] = new Channel("Theta", color(245, 80, 71), "Drowsy");
channels[5] = new Channel("Low Alpha", color(237, 0, 119), "Relaxed");
channels[6] = new Channel("High Alpha", color(212, 0, 149), "Relaxed");
channels[7] = new Channel("Low Beta", color(158, 18, 188), "Alert");
channels[8] = new Channel("High Beta", color(116, 23, 190), "Alert");
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 79
channels[9] = new Channel("Low Gamma", color(39, 25, 159), "Multi-sensory
processing");
channels[10] = new Channel("High Gamma", color(23, 26, 153), "???");
// Manual override for a couple of limits.
channels[0].minValue = 0;
channels[0].maxValue = 200;
channels[1].minValue = 0;
channels[1].maxValue = 100;
channels[2].minValue = 0;
channels[2].maxValue = 100;
channels[0].allowGlobal = false;
channels[1].allowGlobal = false;
channels[2].allowGlobal = false;
// Set up the monitors, skip the signal quality
for (int i = 0; i < monitors.length; i++) {
monitors[i] = new Monitor(channels[i + 1], i * (width / 10), height / 2, width / 10, height /
2);
}
monitors[monitors.length - 1].w += width % monitors.length;
// Set up the graph
graph = new Graph(0, 0, width, height / 2);
// Set yup the connection light
connectionLight = new ConnectionLight(width - 140, 10, 20);
}
void draw() {
// Keep track of global maxima
if (scaleMode == "Global" && (channels.length > 3)) {
for (int i = 3; i < channels.length; i++) {
80 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
if (channels[i].maxValue > globalMax) globalMax = channels[i].maxValue;
}
}
// Clear the background
background(255);
// Update and draw the main graph
graph.update();
graph.draw();
// Update and draw the connection light
connectionLight.update();
connectionLight.draw();
// Update and draw the monitors
for (int i = 0; i < monitors.length; i++) {
monitors[i].update();
monitors[i].draw();
}
}
void serialEvent(Serial p) {
// Split incoming packet on commas
// See https://github.com/kitschpatrol/Arduino-Brain-Library/blob/master/README for
information on the CSV packet format
String incomingString = p.readString().trim();
print("Received string over serial: ");
println(incomingString);
String[] incomingValues = split(incomingString, ',');
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 81
// Verify that the packet looks legit
if (incomingValues.length > 1) {
packetCount++;
// Wait till the third packet or so to start recording to avoid initialization garbage.
if (packetCount > 3) {
for (int i = 0; i < incomingValues.length; i++) {
String stringValue = incomingValues[i].trim();
int newValue = Integer.parseInt(stringValue);
// Zero the EEG power values if we don't have a signal.
// Can be useful to leave them in for development.
if ((Integer.parseInt(incomingValues[0]) == 200) && (i > 2)) {
newValue = 0;
}
channels[i].addDataPoint(newValue);
}
}
}
}
// Utilities
// Extend Processing's built-in map() function to support the Long datatype
long mapLong(long x, long in_min, long in_max, long out_min, long out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
// Extend Processing's built-in constrain() function to support the Long datatype
long constrainLong(long value, long min_value, long max_value) {
82 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
if (value > max_value) return max_value;
if (value < min_value) return min_value;
return value;
}
Channel
class Channel {
// Value object class to store EEG power information for each channel.
// One instance per EEG channel.
String name;
int drawColor;
String description;
boolean graphMe;
boolean relative;
int maxValue;
int minValue;
ArrayList points;
boolean allowGlobal;
Channel(String _name, int _drawColor, String _description) {
name = _name;
drawColor = _drawColor;
description = _description;
allowGlobal = true;
points = new ArrayList();
}
void addDataPoint(int value) {
long time = System.currentTimeMillis();
if (value > maxValue) maxValue = value;
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 83
if (value < minValue) minValue = value;
points.add(new Point(time, value));
}
Point getLatestPoint() {
if (points.size() > 0) {
return (Point)points.get(points.size() - 1);
}
else {
return new Point(0, 0);
}
}
}
Connection Ligth
class ConnectionLight {
// View class to display EEG connection strength.
// Used as a singleton.
int x, y, diameter, latestConnectionValue;
int currentColor = 0;
int goodColor = color(0, 255, 0);
int badColor = color(255, 255, 0);
int noColor = color(255, 0, 0);
Textlabel label;
Textlabel packetsRecievedLabel;
ConnectionLight(int _x, int _y, int _diameter) {
x = _x;
y = _y;
diameter = _diameter;
84 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
// Set up the text label
label = new Textlabel(controlP5, "CONNECTION QUALITY", 32, 11, 200, 30);
label.setMultiline(true);
label.setColorValue(color(0));
packetsRecievedLabel = new Textlabel(controlP5, "PACKETS RECEIVED: 0", 5, 35,
200, 30);
packetsRecievedLabel.setMultiline(false);
packetsRecievedLabel.setColorValue(color(0));
}
void update() {
// Show red if no packets yet
if (channels[0].points.size() == 0) {
latestConnectionValue = 200;
}
else {
latestConnectionValue = channels[0].getLatestPoint().value;
}
if (latestConnectionValue == 200) currentColor = noColor;
if (latestConnectionValue < 200) currentColor = badColor;
if (latestConnectionValue == 00) currentColor = goodColor;
packetsRecievedLabel.setText("PACKETS RECIEVED: " + packetCount);
}
void draw() {
pushMatrix();
translate(x, y);
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 85
noStroke();
fill(255, 150);
rect(0, 0, 132, 50);
noStroke();
fill(currentColor);
ellipseMode(CORNER);
ellipse(5, 4, diameter, diameter);
label.draw();
packetsRecievedLabel.draw();
popMatrix();
}
}
Graph
class Graph {
// View class to draw a graph of the channel model's values over time.
// Used as a singleton.
int x, y, w, h, pixelsPerSecond, gridColor, gridX, originalW, originalX;
long leftTime, rightTime, gridTime;
boolean scrollGrid;
String renderMode;
float gridSeconds;
Slider pixelSecondsSlider;
RadioButton renderModeRadio;
RadioButton scaleRadio;
Graph(int _x, int _y, int _w, int _h) {
x = _x;
y = _y;
w = _w;
86 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
h = _h;
pixelsPerSecond = 50;
gridColor = color(0);
gridSeconds = 1; // seconds per grid line
scrollGrid = false;
originalW = w;
originalX = x;
// Set up GUI controls
pixelSecondsSlider = controlP5.addSlider("PIXELS PER SECOND", 10, width, 50, 16,
16, 100, 10);
pixelSecondsSlider.setColorForeground(color(180));
pixelSecondsSlider.getCaptionLabel().setColor(color(0));
pixelSecondsSlider.setColorActive(color(180));
renderModeRadio = controlP5.addRadioButton("RENDER MODE", 16, 36);
renderModeRadio.setColorForeground(color(255));
renderModeRadio.setColorActive(color(0));
renderModeRadio.setColorBackground(color(180));
renderModeRadio.setSpacingRow(4);
renderModeRadio.addItem("Lines", 1);
renderModeRadio.addItem("Curves", 2);
renderModeRadio.addItem("Shaded", 3);
renderModeRadio.addItem("Triangles", 4);
renderModeRadio.activate(0);
scaleRadio = controlP5.addRadioButton("SCALE MODE", 104, 36);
scaleRadio.setColorForeground(color(255));
scaleRadio.setColorActive(color(0));
scaleRadio.setColorBackground(color(180));
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 87
scaleRadio.setSpacingRow(4);
scaleRadio.addItem("Local Maximum", 1);
scaleRadio.addItem("Global Maximum", 2);
scaleRadio.activate(0);
}
void update() {
// Set pixels per second from GUU slider
pixelsPerSecond = round(pixelSecondsSlider.value());
// Set render mode from GUI radio buttons
switch (round(renderModeRadio.value())) {
case 1:
renderMode = "Lines";
break;
case 2:
renderMode = "Curves";
break;
case 3:
renderMode = "Shaded";
break;
case 4:
renderMode = "Triangles";
break;
}
// Set scale mode from GUI radio buttons
switch(round(scaleRadio.value())) {
case 1:
scaleMode = "Local";
break;
case 2:
scaleMode = "Global";
break;
88 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
}
// Smooth drawing kludge
w = originalW;
x = originalX;
w += (pixelsPerSecond * 2);
x -= pixelsPerSecond;
// Figure out the left and right time bounds of the graph, based on
// the pixels per second value
rightTime = System.currentTimeMillis();
leftTime = rightTime - ((w / pixelsPerSecond) * 1000);
}
void draw() {
pushMatrix();
translate(x, y);
// Background
fill(220);
rect(0, 0, w, h);
// Draw the background graph paper grid
strokeWeight(1);
stroke(255);
if (scrollGrid) {
// Start from the first whole second and work right
gridTime = (rightTime / (long)(1000 * gridSeconds)) * (long)(1000 * gridSeconds);
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 89
}
else {
gridTime = rightTime;
}
while (gridTime >= leftTime) {
int gridX = (int)mapLong(gridTime, leftTime, rightTime, 0L, (long)w);
line(gridX, 0, gridX, h);
gridTime -= (long)(1000 * gridSeconds);
}
// Draw square horizontal grid for now
int gridY = h;
while (gridY >= 0) {
gridY -= pixelsPerSecond * gridSeconds;
line(0, gridY, w, gridY);
}
// Draw each channel
noFill();
if (renderMode == "Shaded" || renderMode == "Triangles") noStroke();
if (renderMode == "Curves" || renderMode == "Lines") strokeWeight(2);
for (int i = 0; i < channels.length; i++) {
Channel thisChannel = channels[i];
if (thisChannel.graphMe) {
// Draw the graph line
if (renderMode == "Lines" || renderMode == "Curves")
stroke(thisChannel.drawColor);
if (renderMode == "Shaded" || renderMode == "Triangles") {
noStroke();
fill(thisChannel.drawColor, 120);
90 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
}
if (renderMode == "Triangles") {
beginShape(TRIANGLES);
}
else {
beginShape();
}
if (renderMode == "Curves" || renderMode == "Shaded") vertex(0, h);
for (int j = 0; j < thisChannel.points.size(); j++) {
Point thisPoint = (Point)thisChannel.points.get(j);
// check bounds
if ((thisPoint.time >= leftTime) && (thisPoint.time <= rightTime)) {
int pointX = (int)mapLong(thisPoint.time, leftTime, rightTime, 0L, (long)w);
int pointY = 0;
if ((scaleMode == "Global") && (i > 2)) {
// Global scale
pointY = (int)map(thisPoint.value, 0, globalMax, h, 0);
}
else {
// Local scale
pointY = (int)map(thisPoint.value, thisChannel.minValue, thisChannel.maxValue,
h, 0);
}
if (renderMode == "Curves") {
curveVertex(pointX, pointY);
}
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 91
else {
vertex(pointX, pointY);
}
}
}
}
if (renderMode == "Curves" || renderMode == "Shaded") vertex(w, h);
if (renderMode == "Lines" || renderMode == "Curves" || renderMode == "Triangles")
endShape();
if (renderMode == "Shaded") endShape(CLOSE);
}
popMatrix();
// GUI background matte
noStroke();
fill(255, 150);
rect(10, 10, 195, 81);
}
}
Monitor
class Monitor {
// View class showing a bar-graph of each channel's
// One instance per EEG channel.
int x, y, w, h, currentValue, targetValue, backgroundColor;
Channel sourceChannel;
CheckBox showGraph;
Textlabel label;
Toggle toggle;
92 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Monitor(Channel _sourceChannel, int _x, int _y, int _w, int _h) {
sourceChannel = _sourceChannel;
x = _x;
y = _y;
w = _w;
h = _h;
currentValue = 0;
backgroundColor = color(255);
// Create GUI
showGraph = controlP5.addCheckBox("showGraph" + sourceChannel.name, x + 16, y
+ 32);
showGraph.addItem("GRAPH" + sourceChannel.name, 0);
showGraph.activate(1);
showGraph.setColorForeground(sourceChannel.drawColor);
showGraph.setColorActive(color(180));
showGraph.setColorBackground(color(0));
toggle = showGraph.getItem(0);
toggle.setLabel("GRAPH");
label = new Textlabel(controlP5, sourceChannel.name.toUpperCase(), x + 12, y + 15);
label.setColorValue(0);
}
void update() {
sourceChannel.graphMe = (showGraph.getItem(0).value() == 0);
}
void draw() {
pushMatrix();
translate(x, y);
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 93
// Background
noStroke();
fill(backgroundColor);
rect(0, 0, w, h);
// Border line
strokeWeight(1);
stroke(220);
line(w - 1, 0, w - 1, h);
// Bar graph
if (sourceChannel.points.size() > 0) {
Point targetPoint = (Point)sourceChannel.points.get(sourceChannel.points.size() - 1);
targetValue = round(map(targetPoint.value, sourceChannel.minValue,
sourceChannel.maxValue, 0, h));
if ((scaleMode == "Global") && sourceChannel.allowGlobal) {
targetValue = (int)map(targetPoint.value, 0, globalMax, 0, h);
}
// Calculate the new position on the way to the target with easing
currentValue = currentValue + round(((float)(targetValue - currentValue) * .08));
// Bar
noStroke();
fill(sourceChannel.drawColor);
rect(0, h - currentValue, w, h);
}
// Draw the checkbox matte
noStroke();
fill(240, 150);
rect(10, 10, w - 20, 40);
94 Construcción de una prótesis de mano, controlada a través de señales EEG obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
popMatrix();
label.draw();
}
}
B. Anexo: Estructura del código para el módulo HC-06
#define CARACTER_INICIO_CMD '*'
#define CARACTER_FINAL_CMD '#'
#define CARACTER_DIV_CMD '|'
#define ESCRITURA_DIGITAL_CMD 10
#define ESCRITURA_ANALOGA_CMD 11
#define TEXTO_CMD 12
#define LECTURA_ARDUDROID_CMD 13
#define MAX_COMMAND 20
#define MIN_COMMAND 10
#define LONGITUD_ENTRADA_STRING 40
#define ESCRITURA_ANALOGICA_MAX 255
#define PIN_ALTO 3
#define PIN_BAJO 2
String inText;
96 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
void setup() {
Serial.begin(9600);
Serial.println("elprofegarcia.com");
Serial.flush();
}
void loop()
{
Serial.flush();
int ard_command = 0;
int pin_num = 0;
int pin_value = 0;
char get_char = ' '; //lee serial
// esperar a que los datos entren
if (Serial.available() < 1) return; // si no hay datos en el serial retornar al Loop().
// analizar entrada de indicador de inicio de comando
get_char = Serial.read();
if (get_char != CARACTER_INICIO_CMD) return; // si no hay indicación de inicio del
sistema, volver loop ().
// parse incoming command type
Anexo B. Estructura del código para el módulo HC-06 97
ard_command = Serial.parseInt(); // read the command
// analizar el tipo de comando entrante
pin_num = Serial.parseInt(); // leer el pin
pin_value = Serial.parseInt(); // leer el valor
// 1) OBTENER COMANDO DE TEXTO PARA ARDUDROID
if (ard_command == TEXTO_CMD){
inText =""; // borra variable para nueva entrada
while (Serial.available()) {
char c = Serial.read(); // recibe un byte de la memoria intermedia serie
delay(5);
if (c == CARACTER_FINAL_CMD) { // si la cadena completa ha sido leida
// add your code here
break;
}
else {
if (c != CARACTER_DIV_CMD) {
inText += c;
delay(5);
}
}
98 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
}
}
// 2) OBTENER DATOS DE digitalWrite ARDUDROID
if (ard_command == ESCRITURA_DIGITAL_CMD){
if (pin_value == PIN_BAJO) pin_value = LOW;
else if (pin_value == PIN_ALTO) pin_value = HIGH;
else return; // error en el valor de PIN. regresar.
set_digitalwrite( pin_num, pin_value); // Eliminar el comentario de esta función para
utilizarla
return; // regrese al inicio de loop()
}
// 3) GET analogWrite DATA FROM ARDUDROID
if (ard_command == ESCRITURA_ANALOGA_CMD) {
analogWrite( pin_num, pin_value );
// add your code here
return; // Done. return to loop();
}
// 4) Enviar datos a ARDUDROID
if (ard_command == LECTURA_ARDUDROID_CMD) {
Anexo B. Estructura del código para el módulo HC-06 99
// char send_to_android[] = " Coloca el texto aquí." ;
// Serial.println(send_to_android); // Ejemplo: Envío de texto
Serial.print(" Analogo 0 = ");
Serial.println(analogRead(A0)); // Ejemplo: Leer y enviar valor analógico del Pin de
Arduino
return; // Listoe. regrese al loop();
}
}
// 2a) seleccionar el pin # solicitado para la acción digitalWrite
void set_digitalwrite(int pin_num, int pin_value)
{
switch (pin_num) {
case 13:
pinMode(13, OUTPUT);
digitalWrite(13, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 12:
pinMode(12, OUTPUT);
digitalWrite(12, pin_value);
100 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
// adicione su código aquí, para este número de pin del Arduino
break;
case 11:
pinMode(11, OUTPUT);
digitalWrite(11, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 10:
pinMode(10, OUTPUT);
digitalWrite(10, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 9:
pinMode(9, OUTPUT);
digitalWrite(9, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 8:
pinMode(8, OUTPUT);
Anexo B. Estructura del código para el módulo HC-06 101
digitalWrite(8, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 7:
pinMode(7, OUTPUT);
digitalWrite(7, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 6:
pinMode(6, OUTPUT);
digitalWrite(6, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 5:
pinMode(5, OUTPUT);
digitalWrite(5, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 4:
pinMode(4, OUTPUT);
102 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
digitalWrite(4, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 3:
pinMode(3, OUTPUT);
digitalWrite(3, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 2:
pinMode(2, OUTPUT);
digitalWrite(2, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
// por defecto
// si nada más fue seleccionado, hacer el defecto (default)
// default es opcional
}
}
C. Anexo: Configuración del código para el módulo HC-05
#include <SoftwareSerial.h> // Incluimos la librería SoftwareSerial
SoftwareSerial BT(10,11); // Definimos los pines RX y TX del Arduino conectados al
Bluetooth
void setup()
{
BT.begin(9600); // Inicializamos el puerto serie BT (Para Modo AT 2)
Serial.begin(9600); // Inicializamos el puerto serie
}
void loop()
{
if(BT.available()) // Si llega un dato por el puerto BT se envía al monitor serial
{
Serial.write(BT.read());
}
if(Serial.available()) // Si llega un dato por el monitor serial se envía al puerto BT
{
104 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
BT.write(Serial.read());
}
}
La preparación para la ejecución del módulo en modo maestro, se realizará a una
velocidad o Baud rate de 57600 Baudios y los pasos de la configuración estarían dados
de la siguiente forma a manera de ejemplo [22] :
Entrar en modo AT 1 o Modo AT 2
- Verificar si estamos en modo AT
Enviar: AT
Recibe: OK
- Establecer el Role como Maestro
Enviar: AT+ROLE=1
Respuesta: OK
- Configurar el Nombre del modulo
Enviar: AT+NAME=Naylamp
Respuesta: OK
- Establecer el Pin de vinculación
Enviar: AT+PSWD=1465
Respuesta: OK
Anexo C. Estructura del código final, parpadeo – relajación. 105
- Configura la Velocidad
Enviar: AT+UART=57600,0,0
Respuesta: OK
- Configurar el modo de conexión
Enviar: AT+CMODE=0
Respuesta: OK
- Especificar la dirección del dispositivo a conectarse
Enviar: AT+BIND=98D3,31,203AD0
Respuesta: OK
- Verificar los parámetros cambiados
Enviar:
AT+ROLE?
AT+PSWD?
AT+UART?
AT+CMODE?
AT+BIND?
Respuesta:
+ROLE:1
OK
106 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
+PSWD:1465
OK
+UART:57600,0,0
OK
+CMOD:0
OK
+BIND:98d3:31:203ad0
OK
- Resetear el modulo
Enviar: AT+RESET
Respuesta: OK
D. Anexo: Estructura del código final, parpadeo – relajación
// Mindflex with Arduino //
// HC-05 Bluetooth Module //
#define BAUDRATE 57600
#define LED 12
#define LEDR 14
#define LEDG 15
#define LEDB 16
#define SELEC 2
#define Theshold_Eyeblink 120
#define EEG_AVG 70
#define DEBUGOUTPUT 0
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial Bluetooth (3,2);
long payloadDataS[5] = {0};
long payloadDataB[32] = {0};
byte payloadData[64] = {0};
byte checksum=0,generatedchecksum=0;
byte poorQuality = 0;
byte attention = 0;
108 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
byte meditation = 0;
int powerLength = 3;
short raw;
unsigned int Raw_data,Poorquality,Plength,vLength,Eye_Enable=0,On_Flag=0,Off_Flag=1 ;
unsigned int s=0,j,n,p,k=0;
boolean b;
unsigned int delta;
unsigned int theta;
unsigned int alpha1;
unsigned int alpha2;
unsigned int beta1;
unsigned int beta2;
unsigned int gamma1;
unsigned int gamma2;
long Temp,Avg_Raw,Temp_Avg;
boolean datos = false;
long lastReceivedPacket = 0;
Servo hand;
void setup()
{
Serial.begin(BAUDRATE);
Bluetooth.begin(BAUDRATE);
Anexo C. Estructura del código final, parpadeo – relajación. 109
pinMode(LED, OUTPUT);
pinMode(LEDR, OUTPUT);
pinMode(LEDB, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(SELEC, INPUT);
hand.attach(6);
}
byte ReadOneByte()
{
int ByteRead;
while(!Serial.available());
ByteRead = Serial.read();
#if DEBUGOUTPUT
Serial.print((char)ByteRead);
#endif
return ByteRead;
}
void loop()
{
if(ReadOneByte() == 170)
{
if(ReadOneByte() == 170)
{
110 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Plength = ReadOneByte();
if(Plength == 4)
{
Small_Packet ();
}
else if(Plength == 2)
{
b=digitalRead(SELEC);
Big_Packet ();
performance();
dat();
}
}
}
}
void Big_Packet()
{
generatedchecksum = 0;
for(int i = 0; i < Plength; i++)
{
payloadDataB[i] = ReadOneByte();
generatedchecksum += payloadDataB[i] ;
}
Anexo C. Estructura del código final, parpadeo – relajación. 111
generatedchecksum = 255 - generatedchecksum;
checksum = ReadOneByte();
if(checksum == generatedchecksum)
{
for(int i = 0; i < Plength; i++)
{
switch (payloadDataB[i])
{
case 2:
i++;
poorQuality = payloadDataB[i];
if (poorQuality==0 )
{
Eye_Enable = 10;
}
else
{
Eye_Enable = 0;
}
break;
case 4:
112 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
i++;
attention = payloadDataB[i];
break;
case 5:
i++;
meditation = payloadDataB[i];
break;
case 0x80: // raw data
i++;
vLength = payloadDataB[i];
raw = 0;
for (int j=0; j<vLength; j++) {
raw = raw | ( payloadDataB[i+vLength-j]<<(8*j) );
}
i += vLength;
break;
case 0x83:
i++;
vLength = payloadDataB[i];
k = 0;
gamma2 = 0; // mid-gamma (41 - 49.75Hz)
for (int j=0; j<powerLength; j++) {
Anexo C. Estructura del código final, parpadeo – relajación. 113
gamma2 = gamma2 | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
gamma1 = 0; // low-gamma (31 - 39.75Hz)
for (int j=0; j<powerLength; j++) {
gamma1 = gamma1 | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
beta2 = 0; // high-beta (18 - 29.75Hz)
for (int j=0; j<powerLength; j++) {
beta2 = beta2 | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
beta1 = 0; // low-beta (13 - 16.75Hz)
for (int j=0; j<powerLength; j++) {
beta1 = beta1 | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
alpha2 = 0; // high-alpha (10 - 11.75Hz)
for (int j=0; j<powerLength; j++) {
alpha2 = alpha2 | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
alpha1 = 0; // low-alpha (7.5 - 9.25Hz)
114 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
for (int j=0; j<powerLength; j++) {
alpha1 = alpha1 | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
theta = 0; // theta (3.5 - 6.75Hz)
for (int j=0; j<powerLength; j++) {
theta = theta | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
delta = 0; // delta (0.5 - 2.75Hz)
for (int j=0; j<powerLength; j++) {
delta = delta | ( payloadDataB[i+vLength-k]<<(8*j) ); // bit-shift little-endian
k++;
}
i += vLength;
break;
default:
break;
} // switch
} // for loop
}
}//bigpacket
Anexo C. Estructura del código final, parpadeo – relajación. 115
void Onesec_Rawval_Fun ()
{
Avg_Raw = Temp/2;
if (On_Flag==0 && Off_Flag==1)
{
if (n<3)
{
Temp_Avg += Avg_Raw;
n++;
}
else
{
Temp_Avg = Temp_Avg/0.222;
if (Temp_Avg<EEG_AVG)
{
On_Flag=1;Off_Flag=0;
}
n=0;Temp_Avg=0;
}
}
Eye_Blink ();
j=0;
Temp=0;
}
116 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
void Eye_Blink ()
{
if (Eye_Enable)
{
if (On_Flag==1 && Off_Flag==0)
{
if ((
}
}
else
{
digitalWrite(LEDB,LOW);
}
}
else
{
digitalWrite(LEDB,LOW);
}
}
void performance(){
if(b==LOW){
digitalWrite(LEDR,HIGH);
digitalWrite(LEDR,LOW);
Anexo C. Estructura del código final, parpadeo – relajación. 117
s++;};
switch(s){
case 0:
blinkeyes();
break;
case 1:
attentionfunc();
break;
case 2:
s=0;
break;
}
}
void dat(){
Serial.print(poorQuality, DEC);
Serial.print(",");
Serial.print(attention, DEC);
Serial.print(",");
Serial.print(meditation, DEC);
Serial.print(",");
Serial.print(raw, DEC);
118 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Serial.print(",");
Serial.print(delta, DEC);
Serial.print(",");
Serial.print(theta, DEC);
Serial.print(",");
Serial.print(alpha1, DEC);
Serial.print(",");
Serial.print(alpha2, DEC);
Serial.print(",");
Serial.print(beta1, DEC);
Serial.print(",");
Serial.print(beta2, DEC);
Serial.print(",");
Serial.print(gamma1, DEC);
Serial.print(",");
Serial.print(gamma2, DEC);
Serial.print(",");
Serial.print(s, DEC);
Serial.print("\n");
}
void blinkeyes(){
switch(p){
Anexo C. Estructura del código final, parpadeo – relajación. 119
case 0:
hand.write(20);
break;
case 1:
hand.write(160);
break;
case 2:
p=0;
break;
}
}
void attentionfunc(){
}
}
Bibliografía [1] Spinelli Mario, Martinez Nolberto. Interfaces para Control Cerebral. Facultad de
Ingeniería. Universidad Nacional de la Plata Argentina, 2000
[2] Borrego C.J. Diseño de un sistema y construcción de un modulo para la medición de
potenciales evocados y otras aplicaciones en neurofisiología. Departamento de Física de
la Universidad de Antioquia, Colombia. Premio Fundación Ángel Escobar 1983.
[3] Barraza, Juan I. Brain Computer Interface. Universidad Politécnica de Cataluña, 2015
[4] De la Torre Javier. Procesado de señales EEG para un Interfaz Cerebro Máquina.
Departamento de Teoría de la Señal y Comunicaciones. Universidad Carlos III de Madrid.
Octubre de 2012.
[5] Neuroscience, Purves, Dale and Augustine, George and Fitzpatrick, David,
year=2004.
[6] M. F. Bear, B. W. Connors, and M. A. Paradiso, NEUROCIENCIA La exploración.
2008.
[7] S. Sanei and J. A. Chambers, EEG signal processing. John Wiley & Sons, 2013.
Q
[8] R. S. Snell, Clinical neuroanatomy. Lippincott Williams & Wilkins, 2010.
[9] Sarmiento Vela Luis C. Reconocimiento del Habla Silenciosa con Señales
Electroencefalográficas EEG para Interfaces Cerebro Computador. Facultad de
122 Construcción de una prótesis de mano, controlada a través de señales EEG
obtenidas del lóbulo frontal, a través del análisis de una unidad Mindflex.
Ingeniería Mecátrónica, Doctorado en Ingeniería. Universidad Nacional de Colombia,
2015.
[10] A. Muzumdar, Powered Upper Limb Prostheses: Control, Implementation and
Clinical Application; 11 Tables. Springer Science & Business Media, 2004.
[11] Snell, Richard S. (5ta edición). Neuroanatomía Clínica
[12] Lange, D. and Inbar, G. , 1996, "A Robust Parametric Estimator for Single -Trial
Movement Related Brain Potentials", IEEE Transactions on Biomedical Engineering, Vol
433.
[13] García Austt, E. & Bruño, W., 1979, "Ritmos eléctricos del cerebro e integración
sensoriomotriz", Investigación y Ciencia, No 38, pp. 150-162, Nov 1979.
[14] Gracía Cossio, Gentiletti Gerardo. Interfaz cerebro computadora (ICC) basada en el
potencial relacionado con eventos P300: análisis del efecto de la dimensión de la matriz
de estimulación sobre su desempeño. Ingeniería Biomédica. Universidad Nacional de
Entre Rios, Argentina.
[15] Daubechies Ingrid, Ten lectures on wavelet, SIAM, Septima Edición, 2002.
[16] Estepa Fredy A, Procesamiento Y Análisis De Señales Electroencefalográficas,
Obtenidas Durante La Aplicación De Una Prueba De Memoria Emocional. Universidad
Industrial de Santander Facultad de Ingeniería.
[17] Faundes Pablo, Fuentes Álvaro, “Procesamiento digita de señales acústicas
utilizando wavelets”
[18] Neurosky, Body and Mind. Quantified. www.neurosky.com - oficial site, consultado en
línea setiembre 19 de 2016.
Anexo C. Estructura del código final, parpadeo – relajación. 123
[19] Frontinerds Brain Hack. http://frontiernerds.com/brain-hack Oficial site, consultado en
línea mayo 5 de 2016.
[20] Instructables. Add bluetoohth to you Arduino Project.
http://www.instructables.com/id/Add-bluetooth-to-your-Arduino-project-ArduinoHC-06/.
consultado en línea mayo 5 de 2016.
[21] Electronica: teoría y práctica http://electronica-teoriaypractica.com/caracteristicas-
arduino-nano-328/ consultado en línea junio 18 de 2016.
[22] Naylamp. Configutación AT de HC-05.
http://www.naylampmechatronics.com/blog/24_Configuración--del-módulo-bluetooth-HC-
05-usa.html. Consultado en línea junio 24 de 2016.