Proyecto de Redes de Computadores II

Integración de televisión digital con sensado del ambiente mediante Sensortag

Integrantes y correos:

Sebastián Apablaza: sebastian DOT apablaza AT alumnos DOT utfsm DOT cl

Daniel Guerra daniel DOT guerra AT alumnos DOT utfsm DOT cl

Niklas Tampier.  niklas DOT tampier AT alumnos DOT utfsm DOT cl

 

 

 

 

 

Haga click en una de las pestañas para saber más acerca del proyecto:

  • Descripción
  • Resumen
  • Conceptos
  • Conceptos(2)
  • Parte práctica

El proyecto realizado consiste en lograr la interactividad entre una televisión con el estándar de televisión ISDB-T y el ambiente. Para esto se utiliza un dispositivo de sensado de baja energía que tiene Bluetooth Low Energy (BLE) de Texas Instruments llamado SensorTag.

 

Básicamente el proyecto consta de 4 pasos:

-> Lectura e interpretación de los datos del SensorTag.

-> Traspaso de la información leída a una base de datos SQL.

-> Lectura de la base de datos mediante comunicación TCP por parte de una aplicación GINGA.

-> Muestra en tiempo continuo de los resultados en pantalla.

A continuación se presenta una serie de conceptos que se tuvo que manejar al momento de realizar el programa. Adjunto a los conceptos se incluye un link para información más detallada.

BLE: El Bluetooth de baja energía, o BLE, es una tecnología sin fines de lucro para comunicación de dispositivos con diversos fines, de la misma manera que Bluetooth. La diferencia fundamental radica en que está enfocado a dispositivos de bajo consumo. Esto se logra mediante una modulación más simple y tiene un rango de alcance similar a su predecesor.

Cabe destacar que esta tecnología está implementada la versión de Bluetooth 4.0 y que no tiene compatibilidad hacia atrás, es decir, un dispositivo normal no es capaz de comunicarse con un dispositivo que funcione con una versión anterior de Bluetooth.

Más información en el siguiente link: http://en.wikipedia.org/wiki/Bluetooth_low_energy

GATT: En pocas palabras, es un protocolo de manejo de datos en dispositivos que trabaja sobre ATT (Attribute Protocol), el cual se caracteriza por definir ciertos valores llamados atributos, a los cuales se accesa mediante una UUID específica (identificador) o una referencia al servicio (handle).

Ofrece la capacidad de lectura y escritura sobre un atributo (siempre y cuando se tengan los permisos correspondientes) y la capacidad de hacer notificaciones (No se utilizó, queda como idea para un nuevo proyecto).

Más información: http://en.wikipedia.org/wiki/Bluetooth_low_energy#GATT_Operations

https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=229737

SensorTag:

Es el dispositivo que se utilizó para el sensado de características del ambiente en el proyecto, desarrolado por Texas Instruments yque trabaja con Bluetooth Low Energy. Entre sus sensores se pueden mencionar: Magnetómetro, Acelerómetro de tres ejes, giróscopo, sensores de temperatura, humedad y presión.

Más información en:

http://www.ti.com/ww/en/wireless_connectivity/sensortag/index.shtml?DCMP=PPC_Google_TI&k_clickid=38d0bc88-c332-fba9-7beb-00001fe99c2e&247SEM=

SQL:

Es el lenguaje utilizado para el manejo de base de datos en el proyecto realizado. Específicamente, se utilizó MySQL para montar el servidor, el cual fue llenándose con requerimientos del tipo INSERT. Como los contenidos escapan de lo que se hace en este ramo específico, no se profundizará mayormente en este tema.

GINGA:

Es el middleware utilizado para la televisión digital de la norma brasileña. Fue revisado ampliamente en clases, por lo que se adjunta la referencia a continuación:

http://profesores.elo.utfsm.cl/~agv/elo323/2s13/lectures/DTV/GINGA_NCL_1.pdf

Inicialmente se intentó seguir la documentación inicial de Texas Instruments para el acceso a los datos del Sensortag, pero es mayoritariamente para desarrollo en Android o iOS si no se posee el USB dongle para el monitoreo del dispositivo. Luego de decidir trabajar con Android, se tenía que cumplir con los requisitos para lograr la correcta instalación de las aplicacioes y detección del dispositivo, los cuales eran poseer Bluetooth 4.0 y Android versión 4.3. Luego de conseguir un celular con Bluetooth 4.0, nos dimos cuenta que los celulares a los cuales ya se puede instalar la versión de Android 4.3 eran muy acotados en el momento, y no se pudo tener acceso a ninguno. Por lo tanto, decidimos ir por un approach de más bajo nivel y trabajar en el sistema operativo Linux.

Compramos un dispositivo de Bluetooth 4.0 de bajo costo (aproximadamente $8000) y empezamos a investigar en la wiki del Sensortag: http://processors.wiki.ti.com/index.php/SensorTag_User_Guide. En ella describe todo el proceso para la comunicación atributo a atributo, la obtención de los datos en de forma "cruda" ("raw") y la forma de interpretar cada uno. Una vez conocida la forma de operar del dispositivo, tratamos de hacer lecturas individuales a través de Linux, con el proceso mostrado a continuación:

-> Detectar si hay dispositivos de baja energía haciendo Broadcast: Se aprieta el botón del sensortag para que haga advertisement (botón lateral), y luego se ejecuta el comando:

>sudo hcitool lescan

Con esto, se pueden ver en pantalla los dispositivos de baja energía detectables por bluetooth, con su MAC respectiva. Además, se necesita saber en qué interfaz está nuestro dispositivo bluetooth de lectura. Esto se logra con el comando >hcitool dev, que muestra las interfaces activas en el momento.

Ahora que sabemos la interfaz de nuestro lector de bluetooth y la MAC del dispositivo del que queremos leer, se hace un acoplamientoque establece la conexión. Esto se logra con el comando: sudo hcitool -i <hciX> lecc <MAC del sensortag>

Con esto queda establecida la conexión y se pueden comenzar a utilizar los comandos GATT. para hacer esto se ejecuta el comando gatttool -i <hciX> -b <Mac del sensortag> --interactive. El comando interactivo queda entonces en espera de comandos para comunicar.

Luego se envía el comando >connect y se pueden hacer escritura y lectura de caracteres mediante los comandos >char-read-hnd y >char-write-cmd, a los handlers de cada servicio. Estos están especificados en un PDF específico para el sensortag (Leer GATT, sección conceptos).

Con eso se puede hacer un código en Python que haga todo lo anterior períodicamente y una vez que se tienen los datos enviarlos con un INSERT a una base de datos correctamente montada. La parte de TCP para la obtención final de estos datos es análoga a la Tarea del ramo, por lo que se puede ver más información allá. http://www2.elo.utfsm.cl/~elo323/