Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando...

13
www.slepikas.com 1 Seminario de Biotelemetría FIUNER Bioingeniería www.bioingenieria.edu.ar Por: Daniel Slepikas (www.slepikas.com) Marzo 2015 Trabajo final: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06(entre un módulo Arduino y un Teléfono Celular o Tablet) Introducción Se pretende analizar la capacidad de transmisión de bioseñales a un celular o tablet mediante comunicación bluetooth utilizando el módulo HC06 de Arduino. El objetivo del trabajo se centra en el hardware elegido y por tanto no se analiza aquí la programación del módulo Arduino, ni del teléfono o tablet. Para la implementación práctica se utilizó un módulo Arduino UNO, aunque se hace al final una comparación con el Arduino Mega, un módulo Bluetoot Arduino HC06 y un teléfono phablet Sony Xperia Ultra. La aplicación utilizada para recibir, procesar y visualizar los datos es una versión de prueba de la aplicación “Bluetooth Graphics” disponible en la tienda Android. A continuación se resumen los conceptos y elementos utilizados Baudio El baudio (en inglés baud) es una unidad de medida utilizada en telecomunicaciones, que representa el número de símbolos por segundo en un medio de transmisión digital. Cada símbolo puede codificar 1 o más bits, dependiendo del esquema de modulación. Es importante resaltar que no se debe confundir la velocidad en baudios (baud rate) con la tasa de bits (bit rate), ya que cada evento de señalización (símbolo) transmitido puede transportar uno o más bits. Solo cuando cada evento de señalización (símbolo) transporta un solo bit coinciden la velocidad de transmisión de datos en baudios y en bits por segundo. Las señales binarias tienen la tasa de bit igual a la tasa de símbolos (rb = rs), con lo cual la duración de símbolo y la duración de bit son también iguales (Ts = Tb).

description

Se pretende analizar la capacidad de transmisión de bioseñales a un celular o tablet mediante comunicación bluetooth utilizando el módulo HC06 de Arduino. El objetivo del trabajo se centra en el hardware elegido y por tanto no se analiza aquí la programación del módulo Arduino, ni del teléfono o tablet.Para la implementación práctica se utilizó un módulo Arduino UNO, aunque se hace al final una comparación con el Arduino Mega, un módulo Bluetoot Arduino HC06 y un teléfono phablet Sony Xperia Ultra. La aplicación utilizada para recibir, procesar y visualizar los datos es una versión de prueba de la aplicación “Bluetooth Graphics” disponible en la tienda Android.Seminario de Biotelemetría FIUNER – Bioingeniería www.bioingenieria.edu.arPor: Daniel Slepikas (www.slepikas.com)Marzo 2015

Transcript of Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando...

Page 1: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

1

Seminario de Biotelemetría

FIUNER – Bioingeniería www.bioingenieria.edu.ar

Por: Daniel Slepikas

(www.slepikas.com)

Marzo 2015

Trabajo final:

“Análisis de la capacidad de transmisión

de bioseñales mediante Comunicación Bluetooth

utilizando el módulo HC06” (entre un módulo Arduino y un Teléfono Celular o Tablet)

Introducción

Se pretende analizar la capacidad de transmisión de bioseñales a un celular o tablet mediante

comunicación bluetooth utilizando el módulo HC06 de Arduino. El objetivo del trabajo se centra en el

hardware elegido y por tanto no se analiza aquí la programación del módulo Arduino, ni del teléfono o

tablet.

Para la implementación práctica se utilizó un módulo Arduino UNO, aunque se hace al final una

comparación con el Arduino Mega, un módulo Bluetoot Arduino HC06 y un teléfono phablet Sony Xperia

Ultra. La aplicación utilizada para recibir, procesar y visualizar los datos es una versión de prueba de la

aplicación “Bluetooth Graphics” disponible en la tienda Android.

A continuación se resumen los conceptos y elementos utilizados

Baudio

El baudio (en inglés baud) es una unidad de medida utilizada en telecomunicaciones, que representa el número de símbolos por segundo en un medio de transmisión digital. Cada símbolo puede codificar 1 o más bits, dependiendo del esquema de modulación. Es importante resaltar que no se debe confundir la velocidad en baudios (baud rate) con la tasa de bits (bit rate), ya que cada evento de señalización (símbolo) transmitido puede transportar uno o más bits. Solo cuando cada evento de señalización (símbolo) transporta un solo bit coinciden la velocidad de transmisión de datos en baudios y en bits por segundo. Las señales binarias tienen la tasa de bit igual a la tasa de símbolos (rb = rs), con lo cual la duración de símbolo y la duración de bit son también iguales (Ts = Tb).

Page 2: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

2

Tasa de baudios (Baud rate)

Como se ha dicho, aunque a veces se confunden los baudios con los bits por segundo, son conceptos distintos. En transmisiones digitales ocurre lo siguiente: la información digital, codificada en bits, normalmente no se puede enviar directamente por el medio de transmisión (por ejemplo asociando un nivel eléctrico al 1 y al 0, típicamente 5 V y 0 V, respectivamente) debido a que los medios de transmisión suelen estar limitados en banda ―esto es, que solo dejan pasar las componentes frecuenciales de una señal que se encuentren en un rango determinado de frecuencias (por ejemplo, entre 1 kHz y 4 kHz)―. Ocurre que al codificar los bits, como un nivel eléctrico, la señal sufre transiciones muy rápidas, lo que genera frecuencias muy altas. Por ejemplo, si se quiere transmitir un 1 y después un 0, hay que pasar de 5 V a 0 V inmediatamente. Una manera de solucionar esto es codificando los bits de otra manera; por ejemplo, asociando cada bit a una señal que el medio sí admita, como por ejemplo, senos y cosenos; si el medio limita a señales que se encuentren en el rango de 1 kHz y 4 kHz, podemos transmitir una señal sinusoidal de 2 kHz para expresar un 1 y otra de 3 kHz para expresar un 0, lo que sería una manera primitiva de modulación FSK (frequency shift keying o ‘codificación por desplazamiento en frecuencia’). Estas señales tienen un tiempo de duración comúnmente llamado tiempo de símbolo T, de modo que cada T segundos se transmite una de las dos señales. Como cada señal codifica 1 bit, cada T segundos se transmite 1 bit, luego la tasa de bits es 1/T bps (bits por segundo), que en este caso coincide con los baudios. Puede ser interesante codificar de una manera más complicada, usando por ejemplo cuatro senos; así un seno a 1 kHz significa 00, uno a 2 kHz corresponde a 01, los 3 kHz a 10 y los 4 kHz a 11. De este modo, la tasa de baudios sigue siendo 1/T baudios ya que se transmite una señal cada T segundos. No obstante, la tasa de bits es distinta porque en cada señal van 2 bits, esto es 2/T bps (o 2 bits cada T segundos). De

manera general, una señal puede codificar bits {1, 2, 4, 8, 16, 32, 64, 128...} y se define la tasa de símbolo Rs como el número de símbolos (señales) que se transmiten en un tiempo de símbolo T, normalmente:

Asimismo, la tasa de bits (bitrate) es el número de bits que se transmiten en un tiempo T y se calcula como:

Consideraciones: La tasa de baudios y la tasa de bits aumentan si disminuye T. La tasa de bits aumenta también si aumenta n. La tasa de baudios siempre es menor o igual a la tasa de bits, esto es:

ya que:

con n = {0, 1, 2, 3,...}

En nuestro caso, al ser binario, coincide el Baud Rate con el Bit Rate.

El puerto Serie

En tecnologías básicas, un puerto serie es una interfaz física de comunicación en serie a través de la cual se transfiere información mandando o recibiendo un bit. A lo largo de la mayor parte de la historia de los ordenadores, la transferencia de datos a través de los puertos de serie ha sido generalizada. Se ha usado y sigue usándose para conectar los ordenadores a dispositivos como terminales o módems. Los ratones, teclados, y otros periféricos también se conectaban de esta forma. Mientras que otras interfaces como Ethernet, FireWire, y USB mandaban datos como un flujo en serie, el término "puerto serie" normalmente identifica el hardware más o menos conforme al estándar RS-232, diseñado para interactuar con un módem o con un dispositivo de comunicación similar.

Page 3: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

3

Actualmente en la mayoría de los periféricos serie, la interfaz USB ha reemplazado al puerto serie por ser más rápida. La mayor parte de los ordenadores están conectados a dispositivos externos a través de USB y, a menudo, ni siquiera llegan a tener un puerto serie. El puerto serie se elimina para reducir los costes y se considera que es un puerto heredado y obsoleto. Sin embargo, los puertos serie todavía se encuentran en sistemas de automatización industrial y algunos productos industriales y de consumo. Los dispositivos de redes, como los enrutadores y switches, a menudo tienen puertos serie para modificar su configuración. Los puertos serie se usan frecuentemente en estas áreas porque son sencillos, baratos y permiten la interoperabilidad entre dispositivos. La desventaja es que la configuración de las conexiones serie requiere, en la mayoría de los casos, un conocimiento avanzado por parte del usuario y el uso de comandos complejos si la implementación no es adecuada.

Puerto serie asincrónico

A través de este tipo de puerto la comunicación se establece usando un protocolo de transmisión asíncrono. En este caso, se envía en primer lugar una señal inicial anterior al primer bit de cada byte, carácter o palabra codificada. Una vez enviado el código correspondiente, se envía inmediatamente una señal de stop después de cada palabra codificada.

La señal de inicio (start) sirve para preparar al mecanismo de recepción o receptor, la llegada y registro de un símbolo, mientras que la señal de stop sirve para predisponer al mecanismo de recepción para que tome un descanso y se prepare para la recepción del nuevo símbolo.

La típica transmisión start-stop es la que se usa en la transmisión de códigos ASCII a través del puerto RS-232, como la que se establece en las operaciones con teletipos.

El puerto serie RS-232 (también conocido como COM) es del tipo asincrónico, utiliza cableado simple desde 3 hilos hasta 25 y conecta computadoras o microcontroladores a todo tipo de periféricos, desde terminales a impresoras y módems pasando por mouses.

La interfaz entre el RS-232 y el microprocesador generalmente se realiza mediante el chip UART 8250 (computadoras de 8 y 16 bits, PC XT) o el 16550 (IBM Personal Computer/AT y posteriores).

El RS-232 original tenía un conector tipo DB-25, sin embargo la mayoría de dichos pines no se utilizaban, por lo que IBM estandarizó con su gama IBM Personal System/2 el uso del conector DB-9 (ya introducido en el AT) que se usaba, de manera mayoritaria en computadoras. Sin embargo, a excepción del mouse, el resto de periféricos solían presentar el DB-25

La norma RS-422, similar al RS-232, es un estándar utilizado en el ámbito industrial.

Page 4: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

4

Tipos de comunicación en serie

Simplex

En este caso el emisor y el receptor están perfectamente definidos y la comunicación es unidireccional. Este tipo de comunicaciones se emplean, usualmente, en redes de radiodifusión, donde los receptores no necesitan enviar ningún tipo de dato al transmisor.

Duplex, half duplex o semi-duplex

En este caso ambos extremos del sistema de comunicación cumplen funciones de transmisor y receptor y los datos se desplazan en ambos sentidos pero no de manera simultánea. Este tipo de comunicación se utiliza habitualmente en la interacción entre terminales y una computadora central.

Full Duplex

El sistema es similar al duplex, pero los datos se desplazan en ambos sentidos simultáneamente. Para que sea posible ambos emisores poseen diferentes frecuencias de transmisión o dos caminos de comunicación separados, mientras que la comunicación semi-duplex necesita normalmente uno solo. Para el intercambio de datos entre computadores este tipo de comunicaciones son más eficientes que las transmisiones semi-dúplex.letty

Bluetooth

Bluetooth es un sistema de comunicación inalámbrico que aparece asociado a las Redes de Area Personal Inalámbricas en inglés WPAN (Wireless Personal Area Network). Esta nueva especificación está establecida para el enlace entre dispositivos de voz y datos a corto alcance, de forma fácil y simple. El vocablo Bluetooth procede del año 960: el rey de Dinamarca Harald Blatand II Bluetooth, unió y cristianizó los países de Dinamarca y Noruega. En 1994 Ericsson empezó un estudio de viabilidad de una solución de conexión vía radio a bajo coste y bajo consumo, para conectar teléfonos móviles y sus accesorios. En 1998 Ericsson y Nokia, junto con IBM y Toshiba más Intel formaron el SIG, Grupo de Interés Especial, donde actualmente lo forman más de 1700 miembros. Bluetooth opera en una banda no licenciada ISM (Industrial Scientific Medical) de 2.4-2.5GHz permitiendo la transmisión de voz y datos, de forma rápida y segura con un rango de hasta 10 metros con 1 miliwatio o 100 metros si se usa un amplificador de 100 miliwatios. Puede transferir datos de forma asimétrica a 721 Kbps y simétricamente a432 Kbps. Usa la llamada Frequency Hopping Spread Spectrum (FHSS), que divide la banda de frecuencia en un número de canales (2.402 – 2.480GHz, 79 canales). Para transmitir voz son necesarios tres canales de 64 Kbps, para transmitir vídeo es necesario comprimirlo en formato MPEG-4 y usar 340 Kbps para conseguir refrescar 15 veces por segundo una pantalla VGA de 320x240 puntos. Bluetooth minimiza la interferencia potencial al emplear saltos rápidos en frecuencia (1600 veces por segundo). Dentro de una aplicación típica de Bluetooth nos podemos encontrar los siguientes elementos:

· Master: es el dispositivo Bluetooth que establece e inicializa la conexión, la secuencia de control “hopping” y la temporización de los demás dispositivos colocados en lo que se llama una red “Piconet”. · Slave: es el dispositivo habilitado en una Piconet. Una red Piconet tiene un máximo de 7 esclavos. · Piconet: una red de hasta 8 dispositivos conectados (1 maestro+ 7 esclavos). · Scatternet: red formada por diferentes redes Piconet.

La arquitectura bluetooth se organiza en "piconets", formadas por dos o más dispositivos compartiendo un canal; uno de los terminales actúa como maestro de la “piconet”, mientras que el resto actúan como esclavos. Varias piconet con áreas de cobertura superpuestas forman una "scatternet".

Page 5: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

5

Piconet con un solo esclavo (a), con múltiples esclavos (b) y scatternet" (c)

Bluethoot 1.x

La especificación de Bluetooth define un canal de comunicación a un máximo 720 kbit/s (1 Mbit/s de capacidad bruta) con rango óptimo de 10 m (opcionalmente 100 m con repetidores). Opera en la frecuencia de radio de 2,4 a 2,48 GHz con amplio espectro y saltos de frecuencia con posibilidad de transmitir en Full Duplex con un máximo de 1600 saltos por segundo. Los saltos de frecuencia se dan entre un total de 79 frecuencias con intervalos de 1 MHz; esto permite dar seguridad y robustez. La potencia de salida para transmitir a una distancia máxima de 10 metros es de 0 dBm (1 mW), mientras que la versión de largo alcance transmite entre 20 y 30 dBm (entre 100 mW y 1 W). Para lograr alcanzar el objetivo de bajo consumo y bajo costo se ideó una solución que se puede implementar en un solo chip utilizando circuitos CMOS. De esta manera, se logró crear una solución de 9×9 mm y que consume aproximadamente 97% menos energía que un teléfono celular común. El protocolo de banda base (canales simples por línea) combina conmutación de circuitos y paquetes. Para asegurar que los paquetes no lleguen fuera de orden, los slots pueden ser reservados por paquetes síncronos, empleando un salto diferente de señal para cada paquete. La conmutación de circuitos puede ser asíncrona o síncrona. Cada canal permite soportar tres canales de datos síncronos (voz) o un canal de datos síncrono y otro asíncrono. Cada canal de voz puede soportar una tasa de transferencia de 64 kbit/s en cada sentido, la cual es suficiente para la transmisión de voz. Un canal asíncrono puede transmitir como mucho 721 kbit/s en una dirección y 56 kbit/s en la dirección opuesta. Sin embargo, una conexión síncrona puede soportar 432,6 kbit/s en ambas direcciones si el enlace es simétrico.

Bluetooth 2.0, 3.0 y 4.0

La nuevas especificaciones, soportan velocidades de hasta 24 Mbps, dependiendo del dispositivo, pero todas ellas compatibles entre sí. Por otro lado, se proporciona un nivel de acceso al medio más eficiente que garantiza los tiempos de respuesta de aplicaciones de audio y vídeo en tiempo real. Rango de conectividad:

Clase 1 100m 1mW (0dBm) hasta 100mW (+20dBm) Clase 2 10m 0,25mW (-6dBm) hasta 2,5mW (+4dBm) Clase 3 0,1m 1mW (0dBm)

Page 6: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

6

En la mayoría de los casos, la cobertura efectiva de un dispositivo de clase 2 se extiende cuando se conecta a un transceptor de clase 1. Esto es así gracias a la mayor sensibilidad y potencia de transmisión del dispositivo de clase 1, es decir, la mayor potencia de transmisión del dispositivo de clase 1 permite que la señal llegue con energía suficiente hasta el de clase 2. Por otra parte la mayor sensibilidad del dispositivo de clase 1 permite recibir la señal del otro pese a ser más débil.

Los dispositivos con Bluetooth también pueden clasificarse según su capacidad de canal:

Versión Ancho de banda

Versión 1.2 1 Mbit/s

Versión 2.0 + EDR 3 Mbit/s

Versión 3.0 + HS 24 Mbit/s

Versión 4.0 24 Mbit/s

Para más información sobre Bluetooth:

http://www.bluetooth.com

Nuestro módulo Bluetooth: El HC-06

Este modulo bluetooth es de los mas económicos que se pueden encontrar en el mercado, se puede encontrar el chip para soldarlo uno mismo o en tarjetas de desarrollo (breackout) con los pines necesarios para la comunicación serial. El HC-06 solo funciona como esclavo, mientras que el HC-05 puede ser maestro/esclavo, estos módulos son iguales físicamente, variando solamente la conexión del pin KEY (26 en HC-06 y 34 en HC-05).

En nuestro caso trabajaremos con el HC-06 adaptado para Arduino. Que ya tiene las adaptaciones necesarias para ser utilizado directamente desde la placa base.

El HC-06 se puede configurar por medio de comandos AT y los valores que podemos modificar son el

Page 7: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

7

nombre del dispositivo, la contraseña (PIN) para realizar la conexión y el baud rate. Para que los comandos AT funcionen el modulo no debe estar apareado con el dispositivo maestro, debe ser configurado por medio de un microcontrolador o mediante un convertidor usb-serial y la terminal serie en una PC.

En este caso usaremos un convertidor usb-serial y la terminal serie de arduino sin fin de linea y 9600 baudios (el HC-06 por default viene configurado a 9600).

Los comandos AT disponibles son los siguientes:

AT : Sirve como test de comunicacion, responde con OK

AT+VERSION : Devuelve la versión del firmware del dispositivo, responde con OKlinvorV1.5

AT+NAMEnombre : Cambia el nombre del dispositivo, por ejemplo AT+NAMEdispBT1 responde con OKsetname y ahora tendrá el nombre de dispBT1, el nombre es limitado a 20 caracteres.

AT+PINxxxx : Cambia el pin de seguridad de 4 digitos, podemos usar AT+PIN0000 para setear el pin a 0000, responde con OKsetPIN, por default viene configurado 1234.

AT+BAUDx : Modifica el baud rate del dispositivo, x puede tomar los siguientes valores

1———1200

2———2400

3———4800

4———9600 (Default)

5———19200

6———38400

7———57600

8———115200

9———230400

A———460800

B———921600

C———1382400

Características:

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)

Page 8: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

8

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

Notas:

La comunicación Bluetooth entre dos módulos debe realizarse entre un módulo configurado como maestro y otro como esclavo. Para la comunicación Bluetooth con computador, teléfono, PDA, tableta, etc., el módulo debe ser esclavo.

El módulo suele venir configurado con velocidad de transmisión serial de 9600 bps, 1 bit de parada, y sin bit de paridad, nombre: HC06, password: 1234

Se ha mantenido la velocidad de 9600 bps, para esta experiencia inicial.

Arduino UNO

Para la adquisición y la gestión de los datos se utiliza un módulo Arduino UNO.

Es la plataforma más extendida y la primera que salió al mercado. Todas las características de esta placa están implementadas en casi todas las placas restantes. Se basa en un microcontrolador Atmel ATmega320 de 8 bits a 16Mhz que funciona a 5v. 32KB son correspondientes a la memoria flash (0,5KB reservados para el bootloader), 2KB de SRAM y 1KB de EEPROM. En cuanto a memoria es una de las placas más limitadas, pero no por ello resulta insuficiente para casi todos los proyectos que rondan la red. Las salidas pueden trabajar a voltajes superiores, de entre 6 y 20v pero se recomienda una tensión de trabajo de entre 7 y 12v. Contiene 14 pines digitales, 6 de ellos se pueden emplear como PWM. En cuanto a pines analógicos se cuenta con hasta 6. Estos pines pueden trabajar con intensidades de corriente de hasta 40mA.

Page 9: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

9

En nuestro caso interesa: USART del módulo Arduino de hasta 2,5 Mbps Conversor AD de hasta 75 ksps a máxima capacidad,

pero solo 15 ksps a máxima resolución. 6 canales AD de los cuales utilizaremos 3 para la

prueba. o Un potenciómetro de 50 k lineal (para

simular señales de baja frecuencia) o Un fotoresistor o Un potenciómetro de 50 k lineal, que al

tiempo de graficar su posición establece el valor de retardo entre muestras.

Terminal grafica

Para probar la comunicación de manera simplificada, se utilizó una aplicación Android comercial, en su

versión de prueba.

http://www.appbrain.com/app/bluetooth-terminal-graphics/com.emrctn.BluetoothGraphics

La misma ofrece la posibilidad de graficar hasta 3 señales simultáneamente con autoajuste de escala en su

versión gratuita, y hasta 7 en la versión de pago. Para este caso era suficiente con 3 de la versión gratuita,

que son las que se utilizaron.

Ej: Grafica de datos recibidos desde la placa Arduino

El paquete de datos debe estar configurado de la siguiente manera. (para

compatibilizarlo con la APP):

“E(Dato1),(Dato2),(Dato3)\n” Donde:

“E” : Cabecera (1 byte = 10 bits) Dato1, Dato2, Dato3: Enteros (2 bytes = 10 bits) “,”: Separador (1 Byte = 10 bits) “\n”: Fin de línea (2 bytes = 20 bits) 1byte = 10 bits (bit start + 8 bit del byte + bit de stop, sin bit de paridad)

Total del paquete = Cabecera + 3 datos + 2 separadores + fin de línea Total del paquete = 1 byte + 3 * 2 bytes + 2 * 1 byte + 2 byte = 11 bytes Total del paquete = 11 * 10 bits = 110 bits

En este ejemplo, si transmitimos a 9600 baudios x 3 canales:

Máximo de paquetes a transmitir = Baudios / Bits por paquete = 9600 / 110 = 87 paquetes por segundo -> muestras por segundo, por canal.

Si intentamos enviar más muestras, el protocolo serial simplemente perderá datos. En caso de necesitar una tasa mayor debemos setear la transmisión con un Baud Rate mayor. Como hemos visto el módulo HC06 nos permite transmitir hasta 1Mbps, más exactamente 1382400 bps. Esto permitiría un muestreo de 12.567 muestras por segundo y por canal (a 3 canales).

Page 10: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

10

La USART del la placa base de Arduino UNO lo toleraría perfectamente, ya que puede trabajar hasta los 2,5 Mbps, pero el cuello de botella lo tendríamos en el conversor AD de la placa que aunque puede muestrear a un máximo de 75 Ksps , a máxima resolución llega a 15 Ksps. (Valor sugerido como límite) Si tenemos 3 canales, multiplexados, podemos contar con unos 5 ksps por canal. Digamos que tomando una tasa superior a 460800 baudios estaríamos cubiertos. Por ejemplo: a 460800 baudios podríamos transmitir un máximo 4189 paquetes, aproximadamente unos 4ksps por canal en 3 canales. Configurando la transmisión en 921600 podríamos transmitir perfectamente los 5kbps sin problemas, ya que el límite lo tendríamos en 8.378 ksps por canal (para 3 canales).

Conclusión

Las principales señales biológicas son de baja frecuencia, como el ECG (1 Hz), otras señales como la del EEG pueden ser de hasta 100 Hz, para evitar el aliasing requeriría una resolución mínima de 200 muestras por segundo, por lo que son suficientes unos 250 sps (muestras por segundo) por canal (algunos equipos comerciales ofrecen 254 y 512 sps), EMG podría requerir algo más, con esta plataforma, en teoría podrían monitorizarse más de 16 canales. En este caso podríamos utilizar una placa Arduino Mega 2560 con 16 entradas AD, la cual posee la misma USART y Conversores AD que la Arduino UNO. Consideraciones:

En la configuración de 460800 bps de transmisión pueden muestrearse a más de 900 sps en los 16 canales, más del triple de lo necesario para bioseñales como el EEG. (recordemos que el paquete de datos se aprovecha mucho más al aumentar el número de canales, ya que la cabecera y el fin de línea tienen menor incidencia porcentual, por ello no es una relación lineal)

Si se va a trabajar al límite de la capacidad de muestreo del módulo Arduino (15ksps a máxima resolución sin multiplexar), el seteo de la transmisión convendría que al menos de 921600 baudios.

A máxima velocidad de muestreo el celular debe tener un módulo Bluetooth 2.0 o superior (el BT

1,2 sólo llega a 1Mbps)

A 75Ksps que puede entregar la placa Arduino (a costa de precisión) no sería posible transmitir la totalidad de los datos, ya que nuestro límite estaría en 27 ksps en un solo canal sin multiplexar, o en 2700 sps por canal (con 16 canales multiplexados), seteando a 1382400 baudios.

El cuello de botella de esta configuración por tanto se encuentra en el conversor AD, el

ralentizamiento que pueda provocar el procesamiento de los datos y la tasa de refresco de la pantalla del celular y el procesamiento que le implique. Habría que cuidar que el programa y sus cálculos no interfieran con la tasa de muestreo.

Habría que hacer pruebas empíricas para verificar que la capacidad de transmisión teórica se cumple en la práctica. (no se han hecho en esta ocasión, el objetivo fue calcular la viabilidad teórica y una implementación básica inicial para familiarizarse con la tecnología)

A continuación se tiene una tabla comparativa donde se analizan la cantidad de estos paquetes que pueden transmitirse según la configuración que se elija, de 1 hasta 16 canales y las velocidades de transmisión del módulo HC06.

Page 11: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com 11

Análisis de la capacidad de tranmisión de datos del módulo HC06 en el formato Edato1,dato2,…,datoX\n

2 [D] Tamaños en Bytes del dato

10 Bits por byte = Bit de Start + 8 bit del Byte + Bit de stop, Sin bit de paridad

Formato del paquete de datos : "E"+Dato1+","+Dato2+…+","+DatoN+"\n""E": Cabecera - ",": Separador - "\n": Fin de paquete

Nro de

Canales [C]

Nro de Bytes

conformación

paquete

[K=(C+2)]

Bytes totales

x paquete

[P=K+C*D]

Bits Totales

x Paquete

[BP=P*10]

1200 2400 4800 9600 19200 36400 57600 115200 230400 460800 921600 1382400

1 3 5 50 24 48 96 192 384 728 1.152 2.304 4.608 9.216 18.432 27.648

2 4 8 80 15 30 60 120 240 455 720 1.440 2.880 5.760 11.520 17.280

3 5 11 110 11 22 44 87 175 331 524 1.047 2.095 4.189 8.378 12.567

4 6 14 140 9 17 34 69 137 260 411 823 1.646 3.291 6.583 9.874

5 7 17 170 7 14 28 56 113 214 339 678 1.355 2.711 5.421 8.132

6 8 20 200 6 12 24 48 96 182 288 576 1.152 2.304 4.608 6.912

7 9 23 230 5 10 21 42 83 158 250 501 1.002 2.003 4.007 6.010

8 10 26 260 5 9 18 37 74 140 222 443 886 1.772 3.545 5.317

9 11 29 290 4 8 17 33 66 126 199 397 794 1.589 3.178 4.767

10 12 32 320 4 8 15 30 60 114 180 360 720 1.440 2.880 4.320

11 13 35 350 3 7 14 27 55 104 165 329 658 1.317 2.633 3.950

12 14 38 380 3 6 13 25 51 96 152 303 606 1.213 2.425 3.638

13 15 41 410 3 6 12 23 47 89 140 281 562 1.124 2.248 3.372

14 16 44 440 3 5 11 22 44 83 131 262 524 1.047 2.095 3.142

15 17 47 470 3 5 10 20 41 77 123 245 490 980 1.961 2.941

16 18 50 500 2 5 10 19 38 73 115 230 461 922 1.843 2.765

Conversor AD Arduino UNO y Mega Velocidad de USART: hasta 2,5 Mbps

A máxima resolución: 15 Ksps Velocidad del Bluetooth del celular utilizado en la experiencia : 24 Mbps (Bluetooth 4.0)

Máxima capacidad de muestreo: 75 Ksps

Notas: En la configuración 460800 bps podemos muestrear mas de 900 sps por canal en 16 canales, mas del triple de sps necesarios para EEG

Si se va a trabajar al límite de la capacidad de sampleo (15 ksps monocanal), el seteo de la tranmisión convendría que fuese 921600 o mayor.

A máxima velocidad de sampleo el celular debe tener un módulo Bluetooth 2.0 o superior (el BT 1,2 sólo llega a 1Mbps)

El cuello de botella de esta configuración por tanto se encuentra en el conversor AD, el ralentizamiento que pueda provocar

el procesamiento de los datos y la tasa de refresco de la pantalla del celular y el procesamiento que le implique.

Nro máximo de paquetes/ segundo [PS= bps/BP]

Máximo de Muestreos/segundo por canal que se podría transmitir sin perder información

Page 12: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

12

Anexo

Programa que se utilizó para configurar el módulo HC06 Nota a tener en cuenta. Al cargar el programa en la placa es conveniente desconectar o retirar en módulo bluetooth. En algunos casos genera un error de transmisión que no nos deja cargar el programa.

//Programa (para Arduino) de configuración del módulo HC06 //Definición de variables char NOMBRE[10]="HC06A"; // hasta 20 caracteres admite el HC06 char BPS ='4'; // 4: 9600 baudios (Ver tabla para setear otra velocidad) char PASS[10]="1234"; // Contraseña de emparejamiento void setup() { Serial.begin (9600); pinMode(13, OUTPUT); digitalWrite(13, HIGH); delay (10000); digitalWrite(13, LOW); Serial.print ("AT"); delay(1000); Serial.print("AT+NAME"); Serial.print(NOMBRE); delay(1000); Serial.print("AT+BAUD"); Serial.print(BPS); delay(1000); Serial.print ("AT+PIN"); Serial.print(PASS); delay(1000); } void loop () { digitalWrite(13, !digitalRead(13)); //cambia el estado del led delay (1500); }

Page 13: Análisis de la capacidad de transmisión de bioseñales mediante Comunicación Bluetooth utilizando el módulo HC06 con Arduino

www.slepikas.com

13

Programa en Arduino utilizado en la prueba de comunicación con el teléfono celular. //Programa de prueba de comunicación con HC06 con retardo variable //Definición de variables int Delay_Pin = A2; int Sensor1_Pin = A3; int Sensor2_Pin = A4; int Sensor3_Pin = A5; int Led_Pin = 13; int Delay_Valor = 0; int Sensor1_Valor = 0; int Sensor2_Valor = 0; int Sensor3_Valor = 0; void setup() { Serial.begin (9600); pinMode (Led_Pin, OUTPUT); } void loop () { Sensor1_Valor= analogRead (Sensor1_Pin); Sensor2_Valor= analogRead (Sensor2_Pin); Sensor3_Valor= analogRead (Sensor3_Pin); Delay_Valor= Sensor3_Valor; Serial.print ("E"); Serial.print (Sensor1_Valor); Serial.print (","); Serial.print (Sensor2_Valor); Serial.print (","); Serial.print (Sensor3_Valor); //Serial.write (92); Serial.print ("\n"); digitalWrite(Led_Pin, !digitalRead(Led_Pin)); //cambia el estado del led delay (Delay_Valor); }