Bluetooth de baja energía (BLE): Introducción, (2ª parte)

En nuestro tutorial anterior ( Parte 1 ) hemos introducido los conceptos básicos de BLE. Ahora veremos la Parte 2 de la Introducción a Bluetooth Low Energy (BLE). En esta parte, discutiremos sobre pila del Protocolo BLE. Antes de este rápido resumen sobre BLE puede empezar leyendo la parte 1ª de BLE.

Resumen anterior

Bluetooth Low Energy también se llama BLE y Bluetooth Smart. La principal y gran ventaja del BLE es que consume muy poca energía. BLE, a diferencia del estándar Bluetooth clásico, está diseñado para reducir el consumo de energía, esto permite que un dispositivo BLE funcione durante meses o años con una batería de tipo botón.

Un dispositivo BLE se comunica con otros dispositivos mediante dos métodos.

Broadcasting: Broadcasting es el acto de enviar datos a todos los dispositivos de escucha. (Uno a muchos)

Conexiones : una conexión es un intercambio de datos permanente y periódico de paquetes entre dos dispositivos (uno-a-uno).

Los dispositivos BLE tienen dos funciones.

Central / Master: dispositivos centrales que escanean los paquetes publicitarios de los dispositivos periféricos cercanos y en su casa inician la conexión.

Periféricos / Esclavo: Los dispositivos periféricos envían los paquetes publicitarios periódicamente. Y también acepta la conexión entrante si están programados para ello.

Ahora entraremos en la pila de protocolos BLE.

Pila de protocolo BLE

BLE, como muchas otras tecnologías inalámbricas, está organizado en varias capas. Cada capa tiene su propósito y desempeña un papel importante para que un dispositivo BLE funcione correctamente. Como discutimos antes, hay tres bloques constitutivos presentes en el BLE.

  1. Aplicación
  2. Host
  3. Controlador

Cada uno de estos bloques básicos de la pila de protocolos se divide en varias capas que ofrecen la funcionalidad requerida para operar:

Application

La aplicación, como en todos los otros tipos de sistemas, es la capa más alta y la responsable de contener la lógica, la interfaz de usuario y el manejo de datos de todo lo relacionado con el caso de uso real que implementa la aplicación. La arquitectura de una aplicación depende en gran medida de cada implementación y uso en particular.

Host

El anfitrión contiene las siguientes capas.

  • Perfil de acceso genérico (GAP), Generic Access Profile.
  • Perfil de atributo genérico (GATT), Generic Attribute Profile.
  • Protocolo de adaptación y control de enlace lógico (L2CAP), Logical Link Control and Adaptation Protocol.
  • Protocolo de atributos (ATT), Attribute Protocol.
  • Gerente de seguridad (SM), Security Manager.
  • Interfaz de controlador de host (HCI), el lado del host, Host Controller Interface.

Controller

El controlador contiene las siguientes capas.

  • Interfaz de controlador de host (HCI), lado del controlador. Host Controller Interface.
  • Capa de enlace (LL), Link Layer.
  • Capa física (PHY), Physical Layer.
bluetooth-low-energy-ble-protocol-stack
Bluetooth Low Energy Ble, pila de protocolos

Capas de controlador

Capa física (PHY), Physical Layer

La capa física (PHY) es la parte que realmente contiene el circuito de comunicaciones analógicas, capaz de modular y demodular señales analógicas y transformarlas en símbolos y datos digitales.

El BLE puede comunicarse en un rango de 40 canales desde 2.4000 GHz a 2.4835 GHz. 37 de estos canales se utilizan para datos de conexión y los últimos tres canales (37, 38 y 39) se utilizan como canales publicitarios para configurar conexiones y enviar datos de transmisión.

physical-layer-bluetooth-low-energy-ble
Physical Layer Bluetooth Low Energy BLE

El estándar utiliza una técnica llamada espectro ensanchado por salto de frecuencia, (frequency-hopping spread spectrum) en la que la radio salta entre canales en cada evento de conexión utilizando la siguiente fórmula:

Canal = (Canal_actual + salto) mod 37

El valor del salto se comunica por el host cuando se establece la conexión y, por lo tanto, es diferente para cada conexión recién establecida. Esta técnica intenta minimizar el efecto de cualquier interferencia de radio potencialmente presente en la concurrida banda de 2,4 GHz a través de cualquier canal, especialmente porque WiFi y Bluetooth clásico operan en esta banda y los dispositivos pueden experimentar fuertes interferencias cerca de dispositivos con una gran potencia de transmisión.

Capa de enlace (LL), Link layer

La capa de enlace es la parte que interactúa directamente con la PHY y, por lo general, se implementa como una combinación de hardware y software personalizados. Es responsable de todos los requisitos de tiempo definidos por la especificación.

La capa de enlace define los siguientes roles:

Anunciante (Advertiser) : dispositivo que envía paquetes publicitarios.

Escáner: dispositivo que escanea paquetes publicitarios.

Master: un dispositivo que inicia una conexión y la administra más tarde.

Esclavo: un dispositivo que acepta una solicitud de conexión y sigue la sincronización del maestro.

Estos roles se pueden agrupar lógicamente en dos pares: anunciante y escáner (cuando no están en una conexión activa) y maestro y esclavo (cuando están en una conexión).

Dirección de dispositivo Bluetooth (BDA), Bluetooth Device Address 

El identificador fundamental de un dispositivo Bluetooth, similar a una dirección (MAC) Ethernet Media Access Control, es la dirección del dispositivo Bluetooth. Este número de 48 bits (6 bytes) identifica de forma única un dispositivo entre otros. Hay dos tipos de direcciones de dispositivo, y una o ambas se pueden configurar en un dispositivo en particular:

  1. Dirección pública del dispositivo. Public device address.
  2. Dirección de dispositivo aleatoria. Random device address

Dirección pública del dispositivo

Es el equivalente a una dirección de dispositivo fija, BR / EDR, programada en fábrica. Debe estar registrado con la Autoridad de registro de IEEE y nunca cambiará durante la vida útil del dispositivo.

Dirección de dispositivo aleatoria

Esta dirección puede preprogramarse en el dispositivo o generarse dinámicamente en tiempo de ejecución.

La capa de enlace también se encarga de la dirección del dispositivo Bluetooth.

La capa de enlace también se encarga de establecer conexiones, filtrar los paquetes publicitarios en función de la dirección de Bluetooth o en función del tipo de datos en sí. También administra el intervalo de conexión: el tiempo entre el comienzo de dos eventos de conexión consecutivos. La capa de enlace también puede configurar el cifrado de los datos, que es muy deseable en el caso de muchos dispositivos presentes en el mismo rango.

Es importante tener en cuenta que la capa de enlace actúa como un portador de datos confiable. Todos los paquetes recibidos se verifican con un CRC de 24 bits y se solicitan retransmisiones cuando la verificación de errores detecta una falla en la transmisión. No hay límite superior para retransmisiones; la capa de enlace reenviará el paquete hasta que finalmente el receptor lo reconozca como válido.

Además de la publicidad, el escaneo, el establecimiento (y la terminación) de conexiones y la transmisión y recepción de datos, la capa de enlace también es responsable de varios procedimientos de control, incluidos estos dos procesos críticos:

  1. Cambiar los parámetros de conexión
  2. Cifrado

Interfaz de controlador de host (HCI)

La interfaz de controlador de host (HCI) es un protocolo estándar que permite que la comunicación entre un host y un controlador se lleve a cabo a través de una interfaz en serie.

Los ejemplos más típicos de esta configuración incluyen la mayoría de los teléfonos inteligentes, tablets y computadoras personales, en las que el host (y la aplicación) se ejecuta en la CPU principal, mientras que el controlador está ubicado en un chip de hardware separado conectado a través de un UART o USB. Esto es similar al modelo utilizado por otras tecnologías, como WiFi o Ethernet: la pila de TCP / IP se ejecuta en el procesador principal, mientras que las capas de nivel inferior se ejecutan en un SoC separado.

La especificación de Bluetooth define HCI como un conjunto de comandos y eventos para que el host y el controlador interactúen entre sí, junto con un formato de paquete de datos y un conjunto de reglas para el control de flujo y otros procedimientos. Además, la especificación define varios medios de transporte, cada uno de los cuales aumenta el protocolo HCI para un transporte físico específico (UART, USB, SDIO, etc.).

Capas de host

Protocolo de adaptación y control de enlace lógico (L2CAP)

Esta capa realiza dos tareas principales,

  1. Multiplexor del protocolo
  2. Fragmentación y recombinación de paquetes

Multiplexor del protocolo

Esta capa actúa como multiplexor de protocolo. Esto significa que toma múltiples protocolos de las capas superiores y los encapsula en el formato de paquete BLE estándar (y viceversa).

Fragmentación y recombinación

En el lado del transmisor, toma paquetes grandes de las capas superiores y los divide en trozos que se ajustan al tamaño de carga útil máximo de 27 bytes de los paquetes BLE.

En el lado del receptor, recibe varios paquetes que se han fragmentado y los recombina en un solo paquete grande que luego se enviará en sentido ascendente a la entidad apropiada en las capas superiores del host. Para Bluetooth Low Energy, la capa L2CAP se encarga de enrutar dos protocolos principales:

  1. Protocolo de atributos (ATT)
  2. Protocolo de administrador de seguridad (SMP)

El ATT forma la base del intercambio de datos en las aplicaciones BLE, mientras que el SMP proporciona un marco para generar y distribuir claves de seguridad entre pares.

Protocolo de atributos (ATT)

El Attribute Protocol (ATT) es un protocolo sin estado cliente / servidor simple basado en atributos presentados por un dispositivo. En BLE, cada dispositivo es un cliente, un servidor o ambos, independientemente de si es maestro o esclavo. Un cliente solicita datos de un servidor y un servidor envía datos a los clientes.

El protocolo es estricto en cuanto a su secuenciación. Si una solicitud aún está pendiente (aún no se ha recibido respuesta), no se pueden enviar más solicitudes hasta que se reciba y procese la respuesta anterior. Esto se aplica a ambas direcciones de forma independiente en el caso de que dos pares actúen como cliente y servidor.

Cada servidor contiene datos organizados en forma de atributos, a cada uno de los cuales se le asigna un identificador de atributo de 16 bits, un identificador único universal (UUID), un conjunto de permisos y, finalmente, un valor. El identificador de atributo es simplemente un identificador utilizado para acceder al valor de un atributo. El UUID especifica el tipo y la naturaleza de los datos contenidos en el valor.

Cuando un cliente desea leer o escribir valores de atributo desde o hacia un servidor, emite una solicitud de lectura o escritura al servidor con el identificador (handler) correspondiente. El servidor responderá con el valor del atributo o un acuse de recibo. En el caso de una operación de lectura, depende del cliente analizar el valor y comprender el tipo de datos recibido según el UUID del atributo. Por otro lado, durante una operación de escritura, se espera que el cliente proporcione datos que sean consistentes con el tipo de atributo en cuestión y el servidor es libre de rechazar la operación si los datos no son acordes.

El conjunto de operaciones posibles sobre ATT se incluyen en las siguientes categorías:

  • Manejo de errores
  • Respuesta de error
  • Configuración del servidor
  • Encontrar información
  • Leer operaciones
  • Operaciones de escritura
  • Escrituras en cola
  • Servidor iniciado

Todas las operaciones, excepto las de la categoría iniciada por el servidor (y algunas otras seleccionadas) se agrupan en pares de solicitud / respuesta. Las solicitudes siempre son enviadas por el cliente y las respuestas son emitidas por el servidor como respuesta a una solicitud.

Gerente de seguridad (SM)

El Security Manager (SM) es tanto un protocolo como una serie de algoritmos de seguridad diseñados para proporcionar a la pila de protocolos Bluetooth la capacidad de generar e intercambiar claves de seguridad, que luego permiten a los pares comunicarse de forma segura a través de un enlace cifrado, para confiar en la identidad. del dispositivo remoto y, finalmente, para ocultar la dirección pública de Bluetooth si es necesario para evitar que dispositivos malintencionados rastreen un dispositivo en particular.

Hace dos roles,

  1. Iniciador
  2. Respondedor

Iniciador:  siempre corresponde al maestro de la capa de enlace y, por lo tanto, a la central GAP.

Respondedor:  siempre corresponde al esclavo de la capa de enlace y, por lo tanto, al periférico GAP.

Perfil de acceso genérico (GAP)

GAP es un acrónimo de Generic Access Profile y controla las conexiones y la publicidad (advertising) en Bluetooth. GAP es lo que hace que su dispositivo sea visible para el mundo exterior y determina cómo dos dispositivos pueden (o no pueden) interactuar entre sí mediante conexión.

GAP establece diferentes conjuntos de reglas y conceptos para regular y estandarizar el funcionamiento de dispositivos de bajo nivel:

  • Roles e interacción entre dispositivos
  • Modos operativos y transiciones entre ellos
  • Procedimientos operativos para lograr una comunicación coherente y operable
  • Aspectos de seguridad, incluidos los modos y procedimientos de seguridad
  • Formatos de datos adicionales para datos sin protocolo

Roles

GAP especifica cuatro roles que un dispositivo puede adoptar para unirse a una red BLE:

  • Broadcaster
  • Observer
  • Central
  • Peripheral

Ya hemos hablado de estos roles.

Cada dispositivo en particular puede operar en uno o más roles a la vez, y la especificación no impone restricciones en este aspecto.

Muchos desarrolladores intentan erróneamente asociar los roles de cliente y servidor de BLE GATT con roles de GAP. No existe ninguna conexión entre ellos, y cualquier dispositivo puede ser un cliente GATT, un servidor o ambos, según la aplicación y la situación.

Considere, por ejemplo, un monitor de actividad física emparejado con un teléfono inteligente. La función GAP del monitor de actividad física es un periférico y actúa como un servidor GATT cuando el teléfono solicita datos de sus sensores. A veces, también puede actuar como un cliente de GATT cuando solicita datos de tiempo precisos del teléfono inteligente para actualizar su reloj interno para la marca de tiempo de los datos. Los roles de cliente / servidor de GATT dependen exclusivamente de la dirección en la que fluyen las solicitudes de datos y las transacciones de respuestas, mientras que los roles de GAP permanecen constantes como periféricos para el monitor de ejercicio y central para el teléfono inteligente.

Modos

El modo es un estado en el que un dispositivo puede cambiar durante un cierto período de tiempo para lograr un objetivo en particular o, más específicamente, para permitir que un par realice un procedimiento determinado. Los modos de cambio se pueden activar mediante acciones de la interfaz de usuario o automáticamente cuando sea necesario, y los dispositivos tienden a cambiar de modo con más frecuencia que los roles.

Procedimientos

Un procedimiento es una secuencia de acciones (generalmente secuencias de control de la capa de enlace o intercambios de paquetes) que permite que un dispositivo logre un objetivo determinado. Por lo general, un procedimiento se asocia con un modo en el otro par, por lo que a menudo están estrechamente acoplados.

Seguridad

GAP se basa en Security Manager y Security Manager Protocol al definir modos y procedimientos de seguridad que especifican cómo los pares establecen el nivel de seguridad requerido por el intercambio de datos en particular y luego cómo se aplica ese nivel de seguridad.

Formatos de datos adicionales de GAP

Además de todo lo anterior, GAP también se utiliza como marcador de posición para ciertas definiciones de formato de datos adicionales que están relacionadas con los modos y procedimientos definidos por la especificación GAP.

Perfil de atributo genérico (GATT)

GATT es un acrónimo de Generic Attribute Profile y define la forma en que dos dispositivos Bluetooth de baja energía transfieren datos de un lado a otro utilizando conceptos llamados Servicios y Características. Hace uso de un protocolo de datos genérico llamado Protocolo de atributos (ATT), que se usa para almacenar servicios, características y datos relacionados en una tabla de búsqueda simple usando ID o handler de 16 bits para cada entrada en la tabla.

GATT entra en juego una vez que se establece una conexión dedicada entre dos dispositivos, lo que significa que ya ha pasado por el proceso de publicidad regido por GAP.

Sin embargo, una vez que se establece una conexión entre los periféricos y los dispositivos centrales, la comunicación puede tener lugar en ambas direcciones, lo que es diferente al enfoque de transmisión unidireccional que utiliza solo datos publicitarios y GAP.

Roles

Un concepto importante que debe entenderse con el GATT es la relación servidor / cliente.

Cliente GATT

El dispositivo central (teléfono / tablet) se conoce como cliente GATT. El cliente GATT corresponde al cliente ATT. Envía solicitudes a un servidor y recibe respuestas (y actualizaciones iniciadas por el servidor) de él. El cliente de GATT no sabe nada de antemano sobre los atributos del servidor, por lo que primero debe indagar sobre la presencia y la naturaleza de esos atributos realizando el descubrimiento de servicios (service discovery).

Servidor GATT

El dispositivo periférico (sensores) se conoce como servidor GATT. El servidor GATT corresponde al servidor ATT. Recibe las solicitudes de un cliente y envía respuestas.

Vale la pena mencionar una vez más por que es muy importante que las funciones del GATT son completamente independientes de las funciones de GAP y, al mismo tiempo, compatibles entre sí. Eso significa que tanto una central GAP como un periférico GAP pueden actuar como un cliente o servidor GATT, o incluso actuar como ambos al mismo tiempo.

UUID

Un identificador único universal (UUID) es un número de 128 bits (16 bytes) que se supone (o tiene una alta probabilidad) de ser globalmente único.

Atributos

Los atributos son la entidad de datos más pequeña definida por GATT (y ATT). Son piezas de información direccionables que pueden contener datos de usuario relevantes (o metadatos) sobre la estructura y agrupación de los diferentes atributos contenidos en el servidor. Tanto GATT como ATT pueden trabajar solo con atributos, por lo que para que los clientes y servidores interactúen, toda la información debe estar organizada de esta forma.

Conceptualmente, los atributos siempre se encuentran en lado del servidor y el cliente accede a ellos (y en su caso los modifica).

Handle

El Handle de atributo es un identificador único de 16 bits para cada atributo en un servidor GATT en particular. Es la parte de cada atributo que lo hace direccionable y se garantiza que no cambiará entre transacciones o, para dispositivos vinculados, incluso entre conexiones. Debido a que el valor 0x0000 denota un identificador no válido, la cantidad de identificadores disponibles para cada servidor GATT es 0xFFFE (65535), aunque en la práctica, el número de atributos en un servidor suele estar más cerca de unas pocas docenas.

Type

El tipo de atributo no es más que un UUID. Puede ser un UUID de 16, 32 o 128 bits, que ocupe 2, 4 o 16 bytes, respectivamente. El tipo determina el tipo de datos presentes en el valor del atributo, y hay mecanismos disponibles para descubrir atributos basados ​​exclusivamente en su tipo.

Permisos

Los permisos son metadatos que especifican qué operaciones ATT se pueden ejecutar en cada atributo en particular y con qué requisitos de seguridad específicos.

ATT y GATT definen los siguientes permisos:

Permisos de acceso

De manera similar a los permisos de archivo, los permisos de acceso determinan si el cliente puede leer o escribir (o ambos) un valor de atributo. Cada atributo puede tener uno de los siguientes permisos de acceso:

  • Ninguno: el cliente no puede leer ni escribir el atributo.
  • Readable: el cliente puede leer el atributo.
  • Writable: el cliente puede escribir el atributo.
  • Readable y Writable: el cliente puede leer y escribir el atributo.

Valor

Es valor del atributo y contiene los datos reales del atributo. No hay restricciones sobre el tipo de datos que puede contener (puede imaginarlo como un búfer sin tipo que se puede convertir a cualquier tipo real, según el tipo de atributo), aunque su longitud máxima está limitada a 512 bytes. por la especificación.

Jerarquía de atributos y datos

Los atributos de un servidor GATT se agrupan en servicios, cada uno de los cuales puede contener cero o más características. Estas características, a su vez, pueden incluir cero o más descriptores. Esta jerarquía se aplica estrictamente a cualquier dispositivo que afirme ser compatible con el GATT (esencialmente, todos los dispositivos BLE compatibles), lo que significa que todos los atributos de un servidor GATT se incluyen en una de estas tres categorías, sin excepciones. Ningún atributo colgante puede estar fuera de esta jerarquía, ya que el intercambio de datos entre dispositivos BLE depende de ello.

Servicios y perfiles Gatt
Servicios y características del Gatt
Servicios

Los servicios se utilizan para dividir los datos en entidades lógicas y por lo tanto contienen fragmentos específicos de datos llamados características. Un servicio puede tener una o más características, y cada servicio se distingue de otros servicios por medio de su ID numérico único UUID, que puede ser de 16 bits (para servicios BLE adoptados oficialmente) o de 128 bits (para servicios personalizados).

Caracteristicas

Puede pensar en las características como contenedores de datos de usuario. Siempre incluyen al menos dos atributos:

  • La declaración de característica (que proporciona metadatos sobre los datos reales del usuario)
  • El valor de característica (que es un atributo completo que contiene los datos del usuario en el campo de valor)

Bueno pues, hemos discutido todos los conceptos básicos de BLE aunque de forma condensada. Ble al principio es algo enrevesado de entender. Espero que lo entiendas y lo disfrutes al mismo tiempo. Gracias por leer :-).


Deja un comentario