Difference between revisions of "Bluetooth Low Energy"

From Wiki Makespace Madrid
Jump to: navigation, search
(RFduino)
(Servicios y características)
Line 31: Line 31:
  
 
== Servicios y características ==
 
== Servicios y características ==
 +
En Bluetooth Classic se definen '''perfiles''' ( [http://en.wikipedia.org/wiki/List_of_Bluetooth_profiles profiles]) para implementar los diferentes casos de usos. Por ejemplo el perfil Manos Libres o el perfil HID para teclados o ratones inalámbricos. Un perfil muy utilizado en el mundo maker es perfil serie (Serial Port Profile, SPP) que especifica como implementar/emular una conexión serie a través de Bluetooth.
 +
 +
En Bluetooth 4, aparece el concepto de '''servicio''' que de algún modo sustituye a los perfiles. Un servicio especifica los dispositivos que intervienen en una conexión, sus roles, el protocolo con el que se conectan y el tipo y formato de datos que se intercambian. En concreto los datos que se intercambian se organizan en una nueva entidad llamada '''característica'''. Una característica es básicamente una rista de bytes (hasta 20) almacenados en el dispositivo con unas propiedades de acceso.
 +
 +
La especificación Bluetooth 4 define algunos [https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx servicios estándar] pero los desarrolladores también pueden generar sus servicios propietarios.
 +
 +
BLE define mecanismos para descubrir los servicios y características implementados por un dispositivo.
 +
 +
Servicios y características son identificados por un '''UUID''' (Universal Unique Identifier) que puede tener formato largo (128 bits) o corto (16 bits).
 +
Las principales acciones que se pueden hacer sobre una característica son:
 +
* Lectura
 +
* Escritura
 +
* Notificación (un cliente conectado y suscrito a la característica es informado automáticamente -"push" - cuando el valor/contenido de la característica cambia en el servidor)
 +
* Indicación (un servidor conectado y suscrito a la característica es informado automáticamente -"push" - cuando el valor/contenido de la característica cambia en el cliente)
 +
Estas acciones pueden requerir o no confirmación del otro dispositivo.
 +
 +
BLE no define un servicio estándar para emular una conexión serie, así que diferentes dispositivo han implementado su propio servicio propietario con una o dos características que se utilizan para transmitir datos bidireccionalmente entre los dos dispositivos conectados. Por ejemplo los módulos HM10 basados en cips de Texas Instruments, utilizan el servicio <code>0000ffe0-0000-1000-8000-00805f9b34fb</code> y su característica <code>0000ffe1-0000-1000-8000-00805f9b34fb</code> para emular una conexión serie.
  
 
=Productos existentes=
 
=Productos existentes=

Revision as of 08:29, 9 October 2014

Esta sección de la Wiki recopila el conocimiento y los proyectos que se realizan en malkespace madrid relacionados con la tecnología Bluetooth 4 (también llamada Bluetooth Low Energy o Bluetooth Smart)

Descripción de la tecnología

Bluetooth Low Energy (BLE) es una nueva funcionalidad añadida al estándar Bluetooth a partir de la versión 4.0. La versión tradicional de Bluetooth se denomina Bluetooth Classic para distinguirla de esta nueva versión. La especificación se puede descargar desde este enlace. BLE surgió para responder al requisito de "muy" bajo consumo que Bluetooth Classic no podía cumplir. Principales características:

  • BLE utiliza la misma banda (2.4GHz) que Bluetooth Classic o WiFi. sin embargo el protocolo está optimizado para evitar colisiones y reducir el consumo de energía (tiempo en que la radio está emitiendo)
  • Un dispositivo puede implementar sólo BLE , sólo Bluetooth Classic o ambos
  • BLE no está pensando para streaming de datos (su throughput está en el orden de bytes o unos pocos Kbyes por segundo)
  • BLE tiene un alcance real de unos pocos metros (Personal Area Networks, PAN)
  • En la versión 4.0 aún no se define una funcionalidad mesh para generar redes malladas de dispositivos (wireless sensor networks, WSN). La versión 4.1 ya incluye funcionalidad mesh. La versión 4.0 sólo permite la conexión punto a punto entre dos dispositivos (por ejemplo un móvil se puede conectar a varios dispositivos sensores, pero cada conexión es independiente).
  • El objetivo de BLE es conseguir objetos conectados que puedan tener una vida útil de varios meses e incluso años alimentados con un pila de botón.
  • Su principal caso de uso actual es la conectividad con dispositivos móviles. La gran mayoría de los móviles actuales soportan BLE (iOS, Android, Windows Mobile, Blackberry). EL móvil sueles actuar como gateway para conectar el objeto a Internet


Roles de los dispositivos

BLE 4.0 distingue dos roles para dispositivos:

  • Central:
    • Está escuchando la radio para ver qué dispositivos BLE están disponibles
    • Puede iniciar la conexión hacia otro dispositivo periférico
  • Periférico:
    • Emite mensajes para anunciar su presencia
    • Puede aceptar una conexión desde un dispositivo central

Normalmente un objeto físico adopta uno u otro rol, pero no los dos a la vez. El modo habitual de funcionamiento es un teléfono que toma el rol central, escucha los dispositivos en su entrono y cuando detecta un sensor que le interesa procede a conectarse a él. A su vez el sensor está anunciándose hasta que un teléfono le pide establecer una conexión. Un periférico no puede estar conectado simultáneamente a dos dispositivos centrales.

Hay dos tipos "especiales" de dispositivos:

  • Observador: es un dispositivo central que sólo escucha los periféricos en su entorno pero nunca se conecta a ellos
  • Baliza o "beacon": es un dispositivo que anuncia su presencia pero que nunca acepta conexiones de dispositivos central. Un caso particular es el iBeacon, especificado por Apple

Servicios y características

En Bluetooth Classic se definen perfiles ( profiles) para implementar los diferentes casos de usos. Por ejemplo el perfil Manos Libres o el perfil HID para teclados o ratones inalámbricos. Un perfil muy utilizado en el mundo maker es perfil serie (Serial Port Profile, SPP) que especifica como implementar/emular una conexión serie a través de Bluetooth.

En Bluetooth 4, aparece el concepto de servicio que de algún modo sustituye a los perfiles. Un servicio especifica los dispositivos que intervienen en una conexión, sus roles, el protocolo con el que se conectan y el tipo y formato de datos que se intercambian. En concreto los datos que se intercambian se organizan en una nueva entidad llamada característica. Una característica es básicamente una rista de bytes (hasta 20) almacenados en el dispositivo con unas propiedades de acceso.

La especificación Bluetooth 4 define algunos servicios estándar pero los desarrolladores también pueden generar sus servicios propietarios.

BLE define mecanismos para descubrir los servicios y características implementados por un dispositivo.

Servicios y características son identificados por un UUID (Universal Unique Identifier) que puede tener formato largo (128 bits) o corto (16 bits). Las principales acciones que se pueden hacer sobre una característica son:

  • Lectura
  • Escritura
  • Notificación (un cliente conectado y suscrito a la característica es informado automáticamente -"push" - cuando el valor/contenido de la característica cambia en el servidor)
  • Indicación (un servidor conectado y suscrito a la característica es informado automáticamente -"push" - cuando el valor/contenido de la característica cambia en el cliente)

Estas acciones pueden requerir o no confirmación del otro dispositivo.

BLE no define un servicio estándar para emular una conexión serie, así que diferentes dispositivo han implementado su propio servicio propietario con una o dos características que se utilizan para transmitir datos bidireccionalmente entre los dos dispositivos conectados. Por ejemplo los módulos HM10 basados en cips de Texas Instruments, utilizan el servicio 0000ffe0-0000-1000-8000-00805f9b34fb y su característica 0000ffe1-0000-1000-8000-00805f9b34fb para emular una conexión serie.

Productos existentes

Kits/módulos HW

Módulos Microchip

Módulos Bluegiga

Módulos Texas Instruments

Módulos HM10/HM11 (basados en TI)

Módulos Nordic Semiconductors

RFduino

RFDUINO es una placa compatible con Arduino que integra un microcontrolador y un modulo de comunicación BLE. Caracteristicas: CPU 16MHz ARM Cortex-M0 Flash 128kb Ram 8kb Low Supply Voltage 1.9V Typical Supply Voltage 3V High Supply Voltage 3.6V Transmit Current 18mA, 4uA ULP Receive Current 18mA, 4uA ULP

tiene un consumo de potencia infimo cuando está en modo stand by (ultra low power o ULP) lo cual permite aplicaciones donde no una batería puede durar meses.

Hay aplicaciones para iOS disponibles como ejemplo y Dario hizo una para Android. El firmware de la placa se programa como un Arduino de toda la vida pero con un par de extensiones que permiten apagar la placa y escuchar mensajes.

Red Bear Lab

BLEduino

relayr

Gadgets/productos finales

Bombilla Yeelight

website

Pila Tethercell

Proyectos