Documente Academic
Documente Profesional
Documente Cultură
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
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.
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.
Contenido
Tabla de contenido
1. Generalidades ........................................................................................................ 3
1.1 Reseña Histórica ........................................................................................................... 3
1.2 Interfaces de Comunicación A través de EEG. (BCI) ....................................................... 5
Lista de figuras
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.
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].
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.
2. Referentes Teóricos
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].
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].
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
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].
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].
Ritmos cerebrales Las señales 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 más
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.
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).
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.
Existen básicamente tres configuraciones típicas (Figura 4) para captar los potenciales
cerebrales a partir de electrodos superficiales[1]:
Bipolar: Se utilizan canales diferenciales que registran la diferencia de potencial entre dos
electrodos.
Existen básicamente tres configuraciones típicas (Figura 2.2) para captar los
potenciales cerebrales a partir de electrodos superficiales:
Laplaciana: Se rodea al electrodo principal o activo con 4 o más electrodos auxiliares
! Monopolar: Se registra el potencial de cada electrodo respecto de uno
particular utilizado
registrándose como referencia
la diferencia que usualmente
de potencial se coloca en
entre el electrodo la oreja.
activo y el promedio de los
! Bipolar: Se
circundantes. utilizan
Esta canales diferenciales
promediación que registran
puede realizarse en formala analógica
diferencia pero
de lo usual es
potencial entre dos electrodos.
realizarla en forma digital.
! 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
Figura 8 Configuración
promedio de electrodos.
de los circundantes. Tomado de [1].
Esta promediación puede realizarse en forma
analógica pero lo usual es realizarla en forma digital.
Figura 2.2: Distintas configuraciones de electrodos.
Σ/N
Existen 20 posiciones básicas normalizadas para colocar los electrodos sobre el cuero
cabelludo,
Las el conjunto
anteriores de estas cumplen
configuraciones posicionescon
se el
conoce como
sistema de“Sistema
referencia10/20” y se10-20 como
llamado
muestra en la Figura 2.3. Su nombre deriva del hecho que en algunas ocasiones se
seutiliza
observa en la figura
un subconjunto 9, quedese
reducido basa
solo en la relación comprobada que existe entre un
10 electrodos.
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] .
La cabeza se divide en seis zonas: frontopolar (Fp), frontal (F), central (C), parietal (P), occipital
2.2 Configuración de la corteza cerebral
(O) y temporal (T). A los electrodos situados en el hemisferio izquierdo se les asigna números
El cerebro está compuesto
impares por dos
y a los situados hemisferios
en el (izquierdo
hemisferio derecho se les yasigna
derecho) separados
números pares. 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
14
[4, 10] (Figura 10).
Figura 2.4: Vista lateral izquierda de la corteza cerebral. Circunvolución frontal superior
(CFS), circunvolución frontal medial (CFM), circunvolución frontal inferior (CFI), circun-
volución
Las subdivisiones de temporal superior (CTS), se
cada hemisferio circunvolución
basan en temporal
variosmedial (CTM), de
surcos circunvolución
la corteza cerebral y
temporal inferior (CTI), circunvolución parietal superior (CPS), circunvolución parietal infe-
se denominan rior (CPI), circunvolución
lóbulos. supramarginal (CS),
Para referenciar circunvolución
partes de angular (CA), circunvolución
la corteza cerebral se utiliza,
precentral (Cpre), circunvolución postcentral (Cpos), pars opercular (PO), pars triangular
(PT), pars orbitaria (Por). Surco temporal superior (STS) y surco temporal inferior (STI).
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].
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.
Así cada área del cerebro tiene a su cargo unas funciones específicas que pueden ser
visualizadas en la figura 13.
.
Capítulo 2 17
Dentro de los potenciales espontáneos podemos diferenciar los Ritmos Cerebrales que
Capítulo 2: La señal de
se registran enEEG
condiciones de reposo, cuando las neuronas no procesan información, y
los Potenciales Relacionados RP (Related Potentials), que se producen como
2.4.consecuencia
Tipos de de
Potenciales de EEG.
algún evento puntual. Generalmente los RP son de reducida amplitud
1
De acuerdo
comparados con alasuactividad
origen losde
potenciales de EEG pueden Por
base ("background"). clasificarse
ejemplo, en las
Potenciales
señales de EEG
Evocados si se producen como consecuencia de un estímulo externo y Potenciales
en scalp relacionadas a una actividad motora (MRP: Movement Related Potential)
Espontáneos si se producen espontáneamente, podríamos decir que estos últimos
nacenrelaciones
presentan de la “voluntad” del sujeto.
señal-ruido menores a -10 dB [1, 12] .
Ritmos Cerebrales
Sincronización ERS
Potenciales Relacionados
F
Desincronización ERD
δ < 4 Hz
θ 4-8 Hz
α 8-12 Hz
β 12-32 Hz
El espectro de EEG.
18 Construcción de una prótesis de mano, controlada a través de señales EEG
δ < 4 Hz
θ 4-8 Hz
α 8-12 Hz
β 12-32 Hz
γ > 32 Hz
Capítulo 2: La señal de EEG
Tabla 2.1: Bandas espectrales utilizadas en EEG
Si bien en espectral
La distribución aplicaciones
declínicas se utilizan
la energía de las fundamentalmente la zona dedebajas
señales de EEG depende la actividad
frecuencias, actualmente también son motivo de interés las componentes de alta
frecuencia,
mental especialmente
en ejecución. En laalrededor
Figura de
1540seHzmuestran espectros típicos de EEG; estos
corresponden a registros tomados con electrodos superficiales en la zona occipital con
La distribución espectral de la energía de las señales de EEG depende de la actividad
ficación no pretende
ojos mental
abiertosser general
eny con
ejecución. ni definitiva,
En la Figura
ojos cerrados un solo
sobre2.5 se intenta
muestran
ancho establecer
espectros
de banda Hz. Seun
de 32 típicos de marco donde
EEG.observar,
puede describir
de EEG como causa/efecto.
Corresponden
en ambos a registros
casos, una tomados con
predominancia electrodos
de la superficiales en la zona occipital
banda alfa.
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 15
fenómeno
Espectrodetípico
intensificación de laEEG.
energía en estadebanda
[1]. al cerrar los ojos,
Figura de las señales Tomado
conocido como ritmo alfa, se analizará en detalle en la sección 2.6.
Interfaces para Control Cerebral
δ θ α β γ→
Ojos Cerrados
Ojos Abiertos
5 10 15 20 25 30 35
Frecuencia [Hz]
Figura 2.5: Espectro típico de señales de EEG
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].
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 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].
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.
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].
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
Figuratransformada V1(f), que
16 Efecto espectral de tendrá una duración
un ventaneo. TomadoDf de [1]. 1 degradará la resolución
mayor
espectral.
Tiempo Frecuencia
x(t)
X(f)
f0
v(t)
X(f)*V(f)
x(t)·v(t)
f0
v1(t)
X(f)*V1(f)
x(t)·v1(t)
f0
Figura 4.1: efecto "espectral" de una ventana temporal
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}
!!
𝑥 𝑡 = 𝐶𝜅 ∙ 𝑒 !!!!"#$⋅!
!!! !
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.
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.
26 Construcción de una prótesis de mano, controlada a través de señales EEG
Para realizar un análisis t-f es necesario descomponer x(t) en una base compuesta por
funciones localizadas del
obtenidas en lóbulo
t y enfrontal, a través del análisis
f. Supongamos ψ(t) talMindflex.
de una unidad
una función 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
Figura del factor de de
17 Escalonamientos escala a,madre
wavelet es posible generar unadefamilia
y sus transformadas de curvas
Fourier. Tomado con su
de [1].
energía espectralmente localizada en distintas frecuencias.
ψ(4·t)
F{ψ(t)}
ψ(2·t) ψ(t)
F{ψ(2·t)}
F{ψ(4·t)}
t→
f0 2f0 4f0 f→
ψ !!∕! − j/2
jk (t ) = 2 ! ⋅ψ (2 j ⋅ t − k ) (4.7)
Ψ!" 𝑡 = 2 ⋅Ψ 2 ∙𝑡−𝑘
El factor 2-j/2 se incluye para normalizar en energía. En la Figura 4.4 se muestran
algunas
El ψjkse(t).incluye para normalizar en energía.
factor 2-j/2
Descomponiendo x(t) en la base ψjk(t), la misma queda expresada como una suma de
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.
escalamientos y desplazamientos de la función ψ (t), que se denomina Wavelet madre.
x (t ) = ∑W jk ⋅ψ jk (t ) (4.8)
𝑥 𝑡 = 𝑊!" ∙ Ψ!" 𝑡
De esta forma x(t) puede componerse a partir de una suma ponderada (los Wjk son
escalares)
De de x(t)
esta forma funciones básicas o "átomos"
puede componerse a partir decada
una uno
sumadeponderada
ellos con(los
energía localizada
Wjk son
en un determinado rango de frecuencia y de tiempo. Un coeficiente Wde elevado
escalares) de funciones básicas con energía localizada en un determinado rango lm
implica que la energía es importante en el tiempo y en el rango de frecuencias donde
frecuencia y de tiempo.
se encuentra localizada ψlm(t).
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).
ψ (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):
Ψ!" 𝑡 , Ψ ∗ 𝑎𝑟𝑟𝑖𝑏𝑎!" 𝑡 = 0 ∀ 𝑗, 𝑘
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:
𝑥 𝑡 = 𝑤!" Ψ!" 𝑡
∥ 𝑥 𝑡 ∥= 𝑥 𝑡 , 𝑥 𝑡 = 𝑥 𝑡 ∙ 𝑥 𝑡 ∙ 𝑑𝑡
!!
Reescribiendo la expresión
y sabiendo que
Ψ!" 𝑡 , Ψ ∗!" = 0 ∀ 𝑗 ≠ 𝑙; 𝑘 ≠ 𝑚
Capítulo 3 29
∥ 𝑥 𝑡 ∥= 𝑊!" ⋅ 𝑊 ∗!"
!!!
!!!
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!"
𝑒! 𝑘 = 𝑊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 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.
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.
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.
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.
Capítulo 4 35
El más vendido,
todo en uno
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.
Arduino Pro Arduino Fio
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.
Ligero y práctico Programació
XBee
Arduino cuenta con una amplia gama de posibilidades en cuanto su escogencia que
Arduino Bluetooth Arduino Mega A
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.
Arduino UNO Arduino UNO Arduino Mega2560 Arduino Nano Arduino Seria
6B Arduino Mega2560
Muchas entradas y
Muchas entradas y
El más vendido,
El más vendido,
todo en uno
todo en uno
salidas
salidas
Arduino Pro Arduino Pro Arduino Fio Arduino Fio Arduino Mini Arduino Mini
44
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
Expandir
una red WiFi,Arduino con
conectar una los shields
pantalla LCD, poseer un puerto USB Host, conectar motores,
adaptar Joysticks o lementos de comunicación como XBee, entre otros
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
Figura 21
Ethernet Shields
o tener unmás
MP3reconocidos para
en el Arduino, Arduino.
entre muchos más solo mira:
6C
Celular Ethernet Proto GPS
ESCANEA CON TU
SMARTPHONE
BUSCA
UTORIAL
T01AB
ASÍ
D
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ónPlaca
6D aparece aArduino
continuación: Uno y sus partes
Vista frontal
2 3
5
6 4
1
8
10
11 99
12
13 14
1. Conector USB
Vistas auxiliares
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
Capítulo 4 39
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.
Hardware
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.
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.
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.
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.
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
void setup ( ) {
void loop ( ) {
// 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 ( ) ) {
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.
El código escrito finalmente posee la siguiente estructura y fue desarrollado por Eric Mika
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.
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.
Capítulo 4 53
Las características técnicas mas relevantes del módulo HC-06 pueden describirse a
continuación.
Para analizar con mayor detalle las características propias del dispositivo se puede
acceder al data sheet del dispositivo, que proporciona el fabricante.
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.
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.
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.
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
Capítulo 5 61
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.
Para mayor información técnica es posible acceder al Data Sheet del dispositivo que
suministra el fabricante.
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.
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#.
El voltaje de alimentación es menor al del Arduino Uno, por lo que significa tambien un
Capítulo 5 63
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.
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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
// Main controller / model file for the the Processing Brain Grapher.
import processing.serial.*;
import controlP5.*;
ControlP5 controlP5;
Serial serial;
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");
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.
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
// Wait till the third packet or so to start recording to avoid initialization garbage.
if (packetCount > 3) {
channels[i].addDataPoint(newValue);
}
}
}
}
// Utilities
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;
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.
void update() {
// Show red if no packets yet
if (channels[0].points.size() == 0) {
latestConnectionValue = 200;
}
else {
latestConnectionValue = channels[0].getLatestPoint().value;
}
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.
h = _h;
pixelsPerSecond = 50;
gridColor = color(0);
gridSeconds = 1; // seconds per grid line
scrollGrid = false;
originalW = w;
originalX = x;
renderModeRadio.activate(0);
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());
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);
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;
}
if (thisChannel.graphMe) {
// Draw the graph line
if (renderMode == "Lines" || renderMode == "Curves")
stroke(thisChannel.drawColor);
if (renderMode == "Triangles") {
beginShape(TRIANGLES);
}
else {
beginShape();
}
// check bounds
if ((thisPoint.time >= leftTime) && (thisPoint.time <= rightTime)) {
if (renderMode == "Curves") {
curveVertex(pointX, pointY);
}
Anexo A. Código de Braingrapher elaborado en Processing 2.2.1 91
else {
vertex(pointX, pointY);
}
}
}
}
popMatrix();
Monitor
class Monitor {
// View class showing a bar-graph of each channel's
// One instance per EEG channel.
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");
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));
// 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);
}
popMatrix();
label.draw();
}
}
B. Anexo: Estructura del código
para el módulo HC-06
#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 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;
get_char = Serial.read();
if (ard_command == TEXTO_CMD){
while (Serial.available()) {
delay(5);
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.
if (ard_command == ESCRITURA_DIGITAL_CMD){
if (ard_command == ESCRITURA_ANALOGA_CMD) {
if (ard_command == LECTURA_ARDUDROID_CMD) {
Anexo B. Estructura del código para el módulo HC-06 99
switch (pin_num) {
case 13:
pinMode(13, OUTPUT);
digitalWrite(13, pin_value);
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.
break;
case 11:
pinMode(11, OUTPUT);
digitalWrite(11, pin_value);
break;
case 10:
pinMode(10, OUTPUT);
digitalWrite(10, pin_value);
break;
case 9:
pinMode(9, OUTPUT);
digitalWrite(9, pin_value);
break;
case 8:
pinMode(8, OUTPUT);
Anexo B. Estructura del código para el módulo HC-06 101
digitalWrite(8, pin_value);
break;
case 7:
pinMode(7, OUTPUT);
digitalWrite(7, pin_value);
break;
case 6:
pinMode(6, OUTPUT);
digitalWrite(6, pin_value);
break;
case 5:
pinMode(5, OUTPUT);
digitalWrite(5, pin_value);
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);
break;
case 3:
pinMode(3, OUTPUT);
digitalWrite(3, pin_value);
break;
case 2:
pinMode(2, OUTPUT);
digitalWrite(2, pin_value);
break;
// por defecto
// default es opcional
}
C. Anexo: Configuración del código
para el módulo HC-05
#include <SoftwareSerial.h> // Incluimos la librería SoftwareSerial
void setup()
void loop()
Serial.write(BT.read());
{
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());
Enviar: AT
Recibe: OK
Enviar: AT+ROLE=1
Respuesta: OK
Enviar: AT+NAME=Naylamp
Respuesta: OK
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
Enviar: AT+CMODE=0
Respuesta: OK
Enviar: AT+BIND=98D3,31,203AD0
Respuesta: OK
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 //
#define LED 12
#define LEDR 14
#define LEDG 15
#define LEDB 16
#define SELEC 2
#define EEG_AVG 70
#define DEBUGOUTPUT 0
#include <SoftwareSerial.h>
#include <Servo.h>
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 ;
boolean b;
long Temp,Avg_Raw,Temp_Avg;
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;
payloadDataB[i] = ReadOneByte();
generatedchecksum += payloadDataB[i] ;
}
Anexo C. Estructura del código final, parpadeo – relajación. 111
checksum = ReadOneByte();
if(checksum == generatedchecksum)
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;
i++;
vLength = payloadDataB[i];
raw = 0;
i += vLength;
break;
case 0x83:
i++;
vLength = payloadDataB[i];
k = 0;
k++;
k++;
k++;
k++;
k++;
k++;
k++;
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 (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 ((
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
[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.
[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.
[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.
[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