sexta-feira, 24 de abril de 2020

BLE NO NINA - PARTE I


Para entender completamente os anúncios no BLE, precisamos dar um passo atrás e aprender sobre uma das camadas da arquitetura do BLE: o Perfil de Acesso Genérico (GAP) .




Imagem

O GAP fornece uma estrutura que define como os dispositivos BLE interagem entre si. Isso inclui:
  • Funções dos dispositivos BLE
  • Anúncios (Broadcasting, Discovery, parâmetros de anúncio, dados de anúncio)
  • Estabelecimento de conexão (iniciando conexões, aceitando conexões, Parâmetros de conexão)
  • Segurança
Existem quatro funções principais do GAP nas quais um dispositivo BLE opera:
  • Central : um dispositivo que descobre periféricos e emissores BLE com a capacidade de conectar-se a periféricos.
  • Periférico: um dispositivo que anuncia sua existência com a capacidade de aceitar conexões de uma central.
  • Emissora : um dispositivo que envia pacotes de publicidade sem permitir nenhuma conexão.
  • Observador : um dispositivo que descobre periféricos e emissoras, mas sem a capacidade de aceitar conexões de uma central.
Um periférico ou radiodifusor sempre começa com publicidade antes de aceitar uma conexão. De fato, os pacotes de anúncios são a única maneira que permite que uma central ou scanner descubra um periférico ou emissor.
A diferença entre dois dispositivos BLE estarem no modo conectado versus um modo de descoberta de publicidade é que o modo conectado permite a transferência bidirecional de dados entre os dois dispositivos conectados. Um dispositivo de publicidade (periférico ou radiodifusor), por outro lado, não pode receber dados do observador / dispositivo central nesse estado.

Canais de Publicidade

No estado Publicidade, um dispositivo envia pacotes contendo dados úteis para que outras pessoas recebam e processem.
Os pacotes são enviados em um intervalo fixo definido como o intervalo de publicidade. Existem 40 canais de RF no BLE, cada um separado por 2 MHz (centro a centro), conforme mostrado na figura a seguir.


Canais de publicidade no BLE

Três desses canais são chamados de Canais de publicidade primária (rotulados 37, 38 e 39), enquanto os 37 canais restantes são chamados de Canais de publicidade secundária (eles também são os usados ​​para transferência de dados durante uma conexão).
Canais de publicidade secundários são usados ​​como canais "auxiliares", o que significa que um dispositivo deve primeiro anunciar nos canais de publicidade primários antes de enviar pacotes de publicidade nos canais secundários.
Se um dispositivo deseja utilizar os canais de publicidade secundários, ele envia pacotes de publicidade nos canais principais que apontam para os pacotes de publicidade secundária. Veremos como isso funciona exatamente em uma seção posterior.

Formato de pacote de publicidade

Vejamos o formato dos pacotes de publicidade:

Fonte: documento Bluetooth Core Specification

O campo PDU é o que nos interessa. Esse é o campo que muda dependendo do tipo de pacote que está sendo transmitido (dados versus publicidade). Embora o diagrama superior da figura seja para PHY não codificado, a PDU ainda é a mesma para o caso PHY codificado (se você não estiver familiarizado com o PHY codificado, consulte meu post sobre comunicação Bluetooth de longo alcance ).
Vamos definir cada um dos campos na PDU:

Cabeçalho da PDU

Tipo de PDU : este campo tem 4 bits de comprimento e possui os seguintes valores possíveis:


Fonte: documento Bluetooth Core Specification

As PDUs são divididas em várias categorias, dependendo da finalidade.
Antes de listar cada uma das PDUs, vamos abordar algumas terminologias comuns:
  • Dirigido vs. Não direcionado: os tipos de publicidade direcionada aceitam solicitações de conexão de um dispositivo de mesmo nível conhecido, enquanto Indirecionado aceitam solicitações de conexão de qualquer dispositivo de mesmo nível.
  • Conectável vs. Não conectável : determina se um dispositivo de publicidade permite que uma conexão seja estabelecida ou não.
  • Scannable vs Non-Scannable : determina se um dispositivo de publicidade é capaz de lidar com uma mensagem de solicitação de verificação de um observador ou central. Solicitações e respostas de verificação são usadas para permitir que os dispositivos anunciem mais dados do que cabem em um pacote de publicidade.
  • Publicidade estendida: os anúncios estendidos são uma maneira de anunciar mais dados (descarregados) do que o permitido com anúncios herdados. O descarregamento é realizado pela primeira publicidade no canal primário que aponta para um pacote auxiliar no canal secundário.
    Nota:  Como  os dispositivos que não são do Bluetooth 5 não conseguirão descobrir anúncios estendidos, é recomendável que os anunciantes também usem um conjunto de publicidade com PDUs de publicidade herdadas para dispositivos de digitalização mais antigos, para descobrir o dispositivo final. Os conjuntos de publicidade são usados ​​para enviar diferentes tipos de eventos de publicidade simultaneamente. Cada conjunto de anúncios terá parâmetros de anúncio diferentes, como tipo de PDU de publicidade, intervalo de publicidade e PHY.
  • Publicidade periódica : outro recurso dos anúncios estendidos do Bluetooth 5 é a publicidade periódica. Eles são usados ​​para transmitir pacotes para dispositivos em um período definido entre dois dispositivos não conectados, o que significa que mais de um dispositivo pode ouvir e sintonizar esses anúncios periódicos. Eles consistem em anúncios enviados em um intervalo fixo, com os dados do anúncio mudando de tempos em tempos.
PDUs de publicidade herdadas
Eles estão disponíveis para todas as versões do Bluetooth - também permitem compatibilidade com versões anteriores e são usados ​​nos canais de publicidade principais .
  • ADV_IND: Publicidade não digitalizável digitalizável conectável.
  • ADV_DIRECT_IND: Publicidade direcionada conectável
  • ADV_NONCONN_IND: Publicidade indireta não conectável e não digitalizável
  • ADV_SCAN_IND: Publicidade não direcionada digitalizável
PDUs de publicidade estendida
Esses tipos foram introduzidos no Bluetooth versão 5.0. Eles fornecem aos dispositivos a opção de anunciar nos canais de publicidade secundária, além dos canais de publicidade primária. O benefício dos canais secundários é que eles permitem maior capacidade de dados de publicidade.
  • ADV_EXT_IND: Publicidade estendida (usada para todos os tipos de publicidade, exceto o Connectable Scannable Undirected) - enviada nos canais de publicidade Primários .
  • AUX_ADV_IND: Publicidade estendida (usada para todos os tipos de publicidade, exceto o Connectable Scannable Undirected) - enviada nos canais de publicidade secundários .
  • AUX_SCAN_IND: usado para publicidade periódica
  • AUX_CHAIN_IND: usado com outros tipos de publicidade para armazenar dados adicionais de publicidade (encadeamento de pacotes de publicidade)
Digitalizando PDUs
Eles são utilizados para utilizar a funcionalidade Solicitação de digitalização → Resposta da digitalização , que permite que os dispositivos transmitam mais dados de publicidade do que o permitido em um único pacote de publicidade.
  • SCAN_REQ: usado nos pacotes de solicitação de digitalização enviados nos canais de publicidade principais
  • SCAN_RSP: usado nos pacotes de resposta de digitalização enviados nos canais de publicidade principais
  • AUX_SCAN_REQ: usado nos pacotes de solicitação de digitalização enviados nos canais de publicidade secundários
  • AUX_SCAN_RSP: usado nos pacotes de resposta de digitalização enviados nos canais de publicidade secundários
Iniciando PDUs
Eles são usados ​​para estabelecer uma conexão entre um dispositivo periférico e um dispositivo central.
  • CONNECT_IND: este é o pacote de solicitação de conexão enviado em um dos canais de publicidade principais
  • AUX_CONNECT_REQ: este é o pacote de solicitação de conexão enviado em um dos canais de publicidade secundários
  • AUX_CONNECT_RSP: este é o pacote de resposta de conexão enviado pelo periférico em um dos canais de publicidade secundários
RFU : reservada para uso futuro
ChSel : esse bit será definido como 1 se o anunciante suportar o recurso do algoritmo de seleção de canal LE nº 2 (consulte a Especificação principal do Bluetooth Vol. 6, parte B, seção 4.5.8.3).
TxAdd : esse bit é definido como 1 se o endereço do anunciante for aleatório e definido como 0 se o endereço for público
RxAdd : esse bit é definido como 1 se o endereço do dispositivo de destino for aleatório e definido como 0 se o endereço for público
Comprimento : mantém o comprimento da carga útil do pacote.

Carga útil da PDU

O conteúdo da carga útil do pacote de publicidade e seu tamanho máximo dependem do tipo de PDU usado. Os dados de publicidade incluem as informações que o anunciante deseja retransmitir para o observador / dispositivo central.
Aqui, estamos mais interessados ​​nos tipos de PDU que contêm dados de publicidade. Essas PDUs são:
  • PDUs de publicidade legado incluindo: ADV_INDADV_NONCONN_IND,ADV_SCAN_IND
  • PDUs de publicidade e afins incluindo: ADV_EXT_INDAUX_ADV_INDAUX_SYNC_IND,AUX_CHAIN_IND

Dados de publicidade

Há vários tipos de dados padrão que podem ser incluídos nos dados de publicidade. Os dados estão formatados da seguinte maneira:


Fonte: Documento de especificação do Bluetooth Core
Eles são definidos em um documento de especificação separado do documento de Especificação Principal chamado Suplemento de Especificação Principal ( https://www.bluetooth.com/specifications/bluetooth-core-specification/ ).
Os diferentes tipos de dados de publicidade BLE são:
  • UUID de serviço : usado para incluir uma lista de UUIDs de serviço
  • Nome local : o nome do dispositivo ( abreviado ou completo )
  • Sinalizadores : sinalizadores de um bit incluídos quando um pacote de publicidade é conectável. Os sinalizadores são: Modo detectável limitado LE, Modo detectável geral LE, BR / EDR não suportado, LE e BR / EDR simultâneos para o mesmo dispositivo (controlador), LE e BR / EDR simultâneos para o mesmo dispositivo (host).
  • Dados específicos do fabricante : usados ​​para incluir dados personalizados identificados por um identificador da empresa .
  • TX Power Level : transmite o nível de potência
  • Intervalo de conexão de escravo : uma maneira de comunicar o intervalo de intervalo de conexão preferido do periférico em pacotes de publicidade.
  • Solicitação de Serviço : usada para "convidar" centrais que expõem um ou mais dos Serviços especificados para conexão.
  • Dados do serviço : inclui um UUID de serviço e os dados associados ao serviço.
  • Aparência : define o "tipo" do dispositivo de publicidade de acordo com os números padrão de Aparência atribuídos .
  • Endereço de destino público : define o endereço de um ou mais destinatários pretendidos de um anúncio quando um ou mais dispositivos foram conectados usando um endereço público.
  • Endereço de destino aleatório : define o endereço de um ou mais destinatários pretendidos de um anúncio quando um ou mais dispositivos foram conectados usando um endereço aleatório.
  • Intervalo de publicidade : auto-explicativo .
  • Identificador uniforme de recursos : usado para transmitir um URI, como um URL.
  • Recursos suportados pelo LE : define os recursos específicos do LE suportados pelo dispositivo. Eles são definidos na Especificação principal (Vol. 6, Parte B, Seção 4.6).
Ok, é isso para o post desta semana. Abordaremos mais na Parte 2 desta série, incluindo:
  • Exemplos de pacotes de publicidade
  • Como usar pacotes de publicidade com eficiência
  • Pacotes de publicidade estendidos
  • Parâmetros de publicidade
  • e mais…
Algumas dicas sobre BLE


Seja você iniciante ou especialista no desenvolvimento de Bluetooth Low Energy, é sempre bom dar um passo atrás e revisitar alguns dos princípios e fatos.
Neste post, examinarei uma lista de 21 fatos sobre a tecnologia Bluetooth Low Energy. Você pode saber sobre tudo isso, mas é sempre bom fazer uma atualização de tempos em tempos.
  1. O Bluetooth Low Energy é compatível com versões anteriores
    O que isto significa é que, se você desenvolver um dispositivo BLE hoje executando a versão mais recente do Bluetooth (5.2), terá a garantia de poder interagir com outro dispositivo BLE executando a primeira versão suportada BLE (Bluetooth versão 4.0). Há exceções a essa regra, especificamente quando um dos dispositivos implementa um recurso opcional de uma versão Bluetooth específica, mas quando se trata da funcionalidade principal, a compatibilidade com versões anteriores é garantida pelas especificações.
  2. O Bluetooth Low Energy é capaz de atingir faixas superiores a 1 km
    Quando a maioria das pessoas pensa em BLE, elas pensam em comunicação de curto alcance e por boas razões, já que as especificações anteriores do Bluetooth se concentravam nesses tipos de aplicativos. No entanto, com o Bluetooth 5.0, um novo modo chamado modo de longo alcance (PHY codificado) foi introduzido e permitiu que os dispositivos BLE se comunicassem em intervalos muito mais longos, até 1,5 km de linha de visão.
  3. O Bluetooth Low Energy oferece suporte a topologias ponto a ponto, em estrela e em malha O
    Bluetooth Low Energy é uma das poucas tecnologias sem fio de baixa potência que suporta múltiplas topologias que podem atender a muitos aplicativos diferentes. Ele suporta nativamente a comunicação ponto a ponto, como entre seu smartphone e seu rastreador de condicionamento físico. Além disso, ele suporta topologias de um para muitos, como um hub Bluetooth Low Energy, que faz interface com vários dispositivos domésticos inteligentes ao mesmo tempo. Por fim, o BLE também suporta uma topologia muitos-para-muitos (malha) com a introdução da especificação de malha Bluetooth em julho de 2017.
  4. Pacotes de publicidade de baixa energia Bluetooth contêm até 31 bytes de dados
    Esse é o tamanho padrão da carga útil de publicidade para pacotes enviados nos canais de publicidade primária (37, 38 e 39). No entanto, lembre-se de que os 31 bytes incluirão pelo menos dois bytes: um para o comprimento e outro para o tipo. Isso deixa 29 bytes para dados do usuário. Além disso, lembre-se de que, se você tiver vários campos de diferentes tipos de dados de publicidade, cada um desses tipos utilizará dois bytes adicionais para o comprimento e o tipo de cada um.
    Para pacotes de publicidade enviados nos canais de publicidade secundária (introduzidos no Bluetooth 5.0), a carga útil aumenta para 254 bytes em vez de 31 bytes.
  5. O Bluetooth 5.0 introduziu dois novos modos: alta velocidade e longo alcance
    Na versão 5.0 do Bluetooth, foram introduzidos dois novos modos (cada um utiliza um novo PHY): modo de alta velocidade (2M PHY) e modo de longo alcance (codificado PHY).
  6. O Bluetooth Low Energy pode atingir uma taxa de transferência de até 1,4 Mbps
    Com a introdução do 2M PHY no Bluetooth 5.0, é possível obter uma taxa de transferência de até 1,4 Mbps. Se você estiver usando o 1M PHY padrão, a taxa de transferência máxima de dados do usuário é de cerca de 700 kbps.
    A razão pela qual as taxas de transferência não atingem 2M ou 1M é que os pacotes incluem sobrecarga de cabeçalho e lacunas entre os pacotes, para que a taxa de transferência de dados no nível do usuário seja reduzida.
  7. Muitos novos recursos introduzidos nas novas versões do Bluetooth são opcionais.
    Ao procurar um chipset Bluetooth Low Energy, é importante ter em mente que uma versão anunciada do Bluetooth suportada pelo chipset não significa necessariamente que um recurso específico dessa versão seja suportado. Por exemplo, o 2M PHY e o Coded PHY são recursos opcionais no Bluetooth 5.0, portanto, estude a folha de dados e as especificações de um chipset Bluetooth Low Energy escolhido para garantir que ele suporte os recursos Bluetooth de seu interesse.
  8. 100% dos smartphones, laptops e tablets enviados oferecerão suporte ao Bluetooth Low Energy e ao Bluetooth Classic em 2024 De
    acordo com o relatório mais recente da Atualização do mercado Bluetooth , 100% de todos os novos dispositivos de plataforma oferecerão suporte ao Bluetooth Classic + LE até 2024.
  9. Não há um número máximo definido de conexões entre uma Central e Periféricos de acordo com a especificação Bluetooth.
    especificação Bluetooth não determina um limite para o número de conexões entre uma central BLE e os periféricos BLE. No entanto, seu dispositivo provavelmente será limitado pela quantidade de memória disponível e pela implementação da pilha Bluetooth. Portanto, verifique a documentação e as folhas de dados do fornecedor do chipset quanto aos limites impostos pela pilha e memória disponíveis.
  10. Qualquer um pode fazer o download gratuito dos últimos documentos oficiais de especificação Bluetooth
    Ao contrário de muitas outras tecnologias sem fio de baixa potência, o Bluetooth SIG fornece acesso aos documentos oficiais de especificação Bluetooth para qualquer um baixar gratuitamente. Você pode fazer o download dos documentos mais recentes sobre a especificação principal do Bluetooth aqui: https://www.bluetooth.com/specifications/bluetooth-core-specification/
  11. O que é o Bluetooth SIG?
    O Bluetooth SIG (Grupo de Interesse Especial) é a organização sem fins lucrativos responsável por gerenciar as especificações técnicas, o marketing e a qualificação / certificação dos produtos Bluetooth. Mas você sabia que as especificações técnicas são realmente criadas e desenvolvidas por grupos de trabalho executados por empresas membros do Bluetooth, como Apple, Google, Samsung, Qualcomm, etc.?
  12. As taxas de certificação de um produto Bluetooth são fixadas por lista de produtos As
    taxas de certificação de um produto Bluetooth que incluem qualificação e taxas de listagem não são baseadas em royalties, mas sim por produto enviado.
  13. Os beacons Bluetooth se tornaram a solução mais popular para navegação interna e rastreamento de ativos
    Nos últimos anos, e especialmente desde que a Apple lançou o popular padrão iBeacon (que é baseado no BLE), a utilização dos beacons Bluetooth se tornou a solução mais popular para ambientes internos. aplicativos de navegação e rastreamento de ativos.
  14. O Bluetooth Low Energy opera na banda ISM de 2,4 GHz compartilhada por algumas outras tecnologias sem fio, incluindo Zigbee e Wi-Fi.
    A característica que distingue o Bluetooth Low Energy de outras tecnologias sem fio semelhantes é a utilização de uma técnica chamada salto de frequência . Essa técnica permite que coexista com os outros sinais de RF na área, mantendo uma conexão robusta entre dois dispositivos Bluetooth.
  15. O espectro Bluetooth Low Energy é dividido em 40 canais de RF.
    Três desses canais são chamados de canais de publicidade primária. Os 37 canais restantes são usados ​​para anúncios secundários e pacotes de dados transmitidos durante uma conexão. Cada um desses canais tem 2 MHz de largura.
  16. O modo de longo alcance (PHY codificado) pode ser usado para aumentar a confiabilidade O
    PHY codificado pode ser usado não apenas para aprimorar o alcance da comunicação Bluetooth Low Energy, mas também para aumentar a confiabilidade das conexões e anúncios através de vários obstáculos. Ao operar no PHY codificado, a sensibilidade do receptor é aumentada e os pacotes transmitidos utilizam um mecanismo de correção de erro de encaminhamento, que permite a recuperação dos dados originais de um pacote corrompido.
  17. Você pode alternar entre os três PHYs: PHY codificado, 1M PHY e 2M PHY em movimento durante uma conexão
    Esse é um recurso poderoso que fornece flexibilidade aos desenvolvedores de Bluetooth. Ele permite que os dispositivos se ajustem e se adaptem com base no ambiente e no aplicativo implementado. A capacidade, no entanto, depende dos dois dispositivos em uma conexão que suporta o PHY que está sendo comutado.
  18. Você pode utilizar PHYs diferentes para serem usados ​​em cada direção
    A especificação Bluetooth permite que um procedimento de atualização de PHY que pode ser enviado pelo mestre ou solicitado pelo escravo use PHYs diferentes em cada direção da transmissão de dados (mestre -> escravo x escravo - > mestre).
  19. O Bluetooth Classic (BR / EDR) e o Bluetooth Low Energy não são compatíveis
    Isso significa que um dispositivo Bluetooth Classic não pode interagir com um dispositivo Bluetooth Low Energy e vice-versa. É por isso que a maioria dos smartphones, tablets e PCs atualmente inclui rádios Bluetooth de modo duplo que permitem ao telefone interagir com os dois tipos de dispositivos.
  20. Um guia para o desenvolvimento de um periférico BLE que interage com um dispositivo iOS
    Se você estiver desenvolvendo um dispositivo periférico Bluetooth Low Energy que fará interface com um aplicativo móvel iOS, consulte o documento Diretrizes de design de acessórios da Apple: https://developer.apple .com / accessories / Accessory-Design-Guidelines.pdf .
    Neste documento, a Apple estabelece recomendações para os diferentes parâmetros do Bluetooth Low Energy, incluindo parâmetros de conexão preferenciais, intervalos de publicidade, tipos de publicidade etc.
  21. Esse parâmetro permite que seu periférico BLE consuma menos energia enquanto ainda consegue baixa latência.
    Para um consumo ideal de energia de um periférico Bluetooth Low Energy, além de conseguir baixa latência, você pode definir um valor diferente de zero de latência escrava . O parâmetro Slave Latency permite que o escravo pule vários eventos de conexão quando nenhum dado estiver disponível para transferência. Isso garante que, mesmo quando o escravo ignora esses eventos de conexão, o mestre não considerará a conexão perdida. No entanto, um valor diferente de zero ainda permite que o escravo acorde e transfira dados a cada intervalo de conexão quando necessário e obtendo baixa latência.
    Por exemplo, se você definir um valor de Latência do escravo de 3 e um intervalo de conexão de 15 ms, se o escravo não tiver nenhum dado durante os 15 ms, poderá pular até 3 intervalos de conexão consecutivos e, em seguida, ativar o rádio e envio de dados após cerca de 45 ms.
Espero que você tenha aprendido algo novo com esses fatos, ou pelo menos tenha refrescado sua memória em alguns desses fatos.

Dúvidas:

suporte@smartcore.com.br

Referências:


(TRADUÇÃO)

 

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portifólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br