BLE | Implementação

Bluetooth Low Energy

Implementação


Arquitetura

A arquitetura do BLE é dividida em host e controlador. O controlador é capaz de permitir que o host durma por longos períodos e só o desperta quando necessário fazer alguma ação.

Physical Layer (PHY)

O Bluetooth Low Energy (BLE) é bastante semelhante à sua forma mais antiga, fazendo uso de alguns mesmos procedimentos, como o Frequency-hopping spread spectrum (FHSS). Porém, claro, possui suas devidas alterações. Em sua forma antiga tínhamos 79 canais de 1 MHz; já agora, são apenas 40 canais e com 2MHz de espaçamento.

O BLE trabalha com dois tipos de canais: advertising channels e os data channels. Os advertising channels ocupam 3 dos 40 canais citados anteriormente e são usados para descobrir outros dispositivos, estabelecer uma conexão e transmissão broadcast. O segundo tipo, data channel, é usado para a comunicação bi-direcional entre os dispositivos conectados. É importante dizer que o Bluetooth clássico utiliza 32 canais como advertising, o que faz com que o tempo de busca de dispositivos (22.5 ms) seja muito maior do que o necessário para o BLE (0.6 - 1.2 ms), gastando mais energia consequentemente.

No entanto, por um usar o espectro gratuito de 2.4GHz, o BLE corre o risco de colidir com um sinal de Wi-Fi/802.11 que esteja operante na região. Para tal, sobre os canais data channels é usado o mecanismo Adaptive Frequency Hopping (AFH). Esse processo faz com que o mapa de frequêcias disponíveis seja readaptado, de modo que os canais já ocupados sejam excluídos da lista de disponibilidade. Além disso, o AFH faz com que mestre e escravo utilizem o mesmo canal, a fim de impedir que um use um bom canal e o outro um ruim, o que poderia provocar uma série de retransmissões.

A modulação utilizada é a Gaussian Frequency-Shift Keying (GFSK), com índice entre 0.45 e 0.55, maior que 0.35 do Bluetooth. Esse arranjo permite menor consumo energético, maior alcance e maior robustez (menos suscetível a interferências).

O BLE possui uma taxa de dados (data rate) de 1Mbps (BT 1 - 3Mbps); corpo de dados (payload data) de tamanho < 0.3Mbps (BT 0.7 - 2.1 Mbps); alcance de sinal de ~50m (BT 10 - 100m).

Link Layer (LL)

Essa camada é responsável pelo controle do estado de conexão do dispositivo. Ela faz isso através de cinco estados:

- Standby: o dispositivo não recebe nem envia nenhum pacote; o estado pode ser acessado a partir de qualquer outro;

- Advertising: o dispositivo nesse estado, chamado de advertiser, envia pacotes por cada advertising channel e pode responder a requisições de outros dispositivos;

- Scanning: o dispositivo nesse estado, chamado de scanner, escuta transmissões de pacotes advertising e pode solicitar infomações adicionais a outros dispositivos.

- Initiating: o dispositivo nesse estado, chamado de initiator, diferentemente do scanner, tem a intenção de se conectar a um advertiser. Ao localizar um, ele responde requisitando o início de uma conexão.

- Connection: quando a conexão é formada entre o initiator e o advertiser, ambos entram nesse estado e se comunicam através dos data channels.

Formada uma conexão, agora os dispositivos assumem um papel cada: mestre (o iniciador) e escravo (o anunciador). O modelo segue a rede piconet, de modo que o mestre, responsável por gerenciar múltiplas conexões (o tamanho destinado ao endereçamento passou de 3 bits, do Bluetooth clássico, para 48 bits no BLE, possibilitando bilhões de conexões) com escravos, que por sua vez, só podem estar conectados a um mestre.

O escravo, por padrão, a fim de poupar energia, fica em modo sleep. O mestre, através do esquema de Time Division Multiple Access (TDMA), onde pacotes são enviados em tempos e intervalos pré-determinados, é responsável também por acordar o escravo, a fim de concretizar as transmissões. Além disso, entra no seu poder de gerência o envio de informações para o rodar o algoritmo de Frequency Hopping, a supervisão de conexão e updates de mapa de canais disponíveis.

Há dois tipos de evento por tempo: advertising (anúncio) e connection (conexão):

No advertising event, o dispositivo anunciador utiliza todos os três canais sequencialmente (intervalo de 10ms) para mandar pacote de anúncio. Scanners recebem esses pacotes sem a intenção de conectar e podem fazer requisições de mais informações; o anunciante pode então responder no mesmo canal. Ele também pode interromper o evento quando quiser e recomeçar. O intervalo de anúncio corresponde ao tempo qe se passa entre dois eventos anunciantes,e vai de 20ms - 10.24s, com múltiplos de 0.625ms.

No connection event, o dispositivo iniciador fica à escuta de anunciadores nos advertising channels. Quando ele acha um dispositivo disposto a conectar, ele manda uma mensagem de requisição de conexão ao anunciador, que, se aceita, gera uma conexão P2P (point-to-point) entre os dois dispositivos. O iniciador vira mestre e pode interromper a conexão com o escravo (antes anunciante) a qualquer momento. O intervalo de conexão segue a mesma lógica do intervalo de anúncio, e corresponde a múltiplos de 1.25ms entre 7.5ms - 4.0s.

Host-Controller Interface (HCI)

Camada que serve como ligação entre o host e o controlador.

L2CAP

Protocolo simplificado e otimizado, baseado no L2CAP do BLuetooth. É responsável pelo encapsulamento de mensagens para as camadas superiores

Security Manager Protocol (SMP)

Define os métodos de enlace de dispositivos de uma rede, oferecendo funções às outras camadas para que a troca de informação seja feita de forma segura.

Attribute Protocol (ATT)

Protocolo que define dois papéis para os dispositivos: servidor e cliente. O servidor tem a capacidade de expôr uma série de atributos (estruturas de dados que guardam informações a serem utilizadas pelo GATT) ao cliente. A definição dos papéis é feita também pelo GATT e independe do papel de mestre/escravo.

Generic Attribute Profile (GATT)

Designado para ser usado por uma aplicação ou um perfil, de modo que cliente e servidor possam interagir de modo estruturado, trocando características. Um servidor executando um serviço de perfil de sensor de temperatura é responsável por lidar com a característica "temperatura", que usa um atributo para descrever o sensor, outro para o valor medido e outro especificando a unidade de medida

General Access Profile (GAP)

Permite a comunicação direta com aplicação e perfis, bem como sua gerência. Ele define quatro papéis: Broadcaster, que apenas faz transmissão broadcasting de dados através dos advertising channels, sem poder se conectar com outros dispositivos; observador, que buscam anunciantes, sem poder inciar uma conexão; periférico, um anunciante que pode se conectar e atua como escravo; central, que buscam anunciantes e iniciam as conexões, atuando como mestres.


Anterior | Topo | Próxima