Como adicionar o Bluetooth 5.3 de forma rápida e econômica aos projetos de IoT na borda

By Jens Wallmann

Contributed By DigiKey's European Editors

A concorrência implacável pressiona os desenvolvedores de dispositivos da Internet das Coisas (IoT) a introduzir rapidamente produtos novos e inovadores, reduzindo os custos e garantindo uma comunicação robusta, de baixo consumo de energia e segura. Os nós finais tradicionais do IoT inteligente são compostos por uma unidade de microcontrolador (MCU) para permitir o processamento de borda e um CI para conectividade sem fio. Os problemas surgem quando as equipes de projeto não têm as competências em radiofrequência (RF) necessárias para uma solução eficaz.

Para concluir, certificar e colocar seus projetos de IoT sem fio em produção de volume dentro do prazo, os desenvolvedores precisam tornar o processo de desenvolvimento mais eficiente. Uma maneira de aumentar a eficiência do processo de desenvolvimento envolve o uso de uma MCU de baixo consumo de energia com uma interface sem fio Bluetooth Low Energy (BLE) integrada.

Este artigo apresenta a série de MCUs STM32WBA52 de baixíssimo consumo de energia da STMicroelectronics e mostra como os desenvolvedores podem usar uma placa de teste BLE, ferramentas de desenvolvimento e exemplos de aplicações para colocar um projeto sem fio BLE 5.3 em funcionamento rapidamente. Inclui uma breve visão da programação e da fiação da MCU.

MCU sem fio com economia de energia e alto nível de segurança

Certificada para BLE 5.3, a série de MCUs STM32WBA52 é uma solução econômica que permite aos desenvolvedores iniciantes adicionar rapidamente comunicações sem fio aos seus dispositivos. Baseados no núcleo Arm® Cortex®-M33 com clock de 100 megahertz (MHz) e na tecnologia TrustZone, esses microcontroladores oferecem um alto nível de segurança, protegem os dados e a propriedade intelectual (IP) e evitam invasões e clonagem de dispositivos.

Enquanto a MCU sem fio STM32WBA52CEU6 tem 512 quilobytes (Kbytes) de memória flash e 96 Kbytes de RAM estática (SRAM), a variante STM32WBA52CGU6 oferece 1 megabyte (Mbyte) de memória flash e 128 Kbytes de SRAM. A Figura 1 mostra o escopo funcional do CI em um invólucro de UFQFN de 48 pinos. A propósito, até 20 canais de toque capacitivo permitem a operação de dispositivos hermeticamente selados (não são necessárias chaves mecânicas).

Diagrama de bloco funcional do STM32WBA52 da STMicroelectronicsFigura 1: Um diagrama de bloco funcional do STM32WBA52 mostra o rádio BLE 5.3 integrado, flash e SRAM e suporte de segurança. (Fonte da imagem: STMicroelectronics)

Um rico ecossistema STM32Cube suporta a implementação e a programação da aplicação BLE. Ele inclui o ambiente de desenvolvimento STM32CubeIDE, bem como ferramentas como o configurador de periféricos e gerador de código STM32CubeMX, o testador de desempenho STM32CubeMonitorRF e as versões para computador e nuvem do STM32Cube.AI para inteligência artificial (IA). Uma placa de teste correspondente, a NUCLEO-WBA52CG, simplifica a criação de protótipos e acelera a validação com muitas aplicações de amostra BLE e código-fonte disponível gratuitamente.

Segurança de dispositivos e dados

A linha de produtos STM32WBA52 está em conformidade com os padrões de segurança de IoT, PSA (Platform Security Arm) certificado nível 3 e SESIP3 (Security Evaluation Standard for IoT Platforms Assurance Level 3). A proteção cibernética é aprimorada pelo programa de segurança PSA baseado no isolamento de segurança, na proteção da memória, na proteção contra violações e no Cortex-M33 das MCUs com a arquitetura Arm TrustZone. O TF-M (Trusted Firmware for Arm Cortex-M) está em conformidade com a estrutura de segurança certificada PSA padrão do setor com Raiz de Confiança (RoT) de PSA imutável, incluindo inicialização segura e atualização segura de firmware (X-CUBE-SBSFU), criptografia, armazenamento seguro e atestado de tempo de execução.

O rádio integrado minimiza a lista de materiais

O módulo de rádio integrado de potência baixíssima fornece +10 decibéis com referência à potência de saída de RF de 1 miliwatt (mW) (dBm). Ele permite a comunicação confiável em distâncias curtas (BLE 5.3) e longas (longo alcance) com taxas de dados de até 2 megabits por segundo (Mbps). Um modo profundo de baixa potência em espera reduz a energia elétrica total, quando a comunicação por rádio estiver ativa. As MCUs STM32WBA podem suportar até 20 conexões simultâneas.

Características de desempenho elétrico do módulo de rádio:

  • Transceptor de RF de 2,4 gigahertz (GHz) compatível com BLE 5.3
  • Sensibilidade RX: -96 dBm (BLE a 1 Mbps)
  • Potência de saída programável, até +10 dBm em passos de 1 dB
  • Balun integrado

Bateria menor devido ao gerenciamento de energia altamente eficiente

As MCUs STM32WBA52 têm muitas tecnologias de economia de energia, incluindo o LPDMA (Low Power Direct Memory Access) da STMicroelectronics e estados flexíveis de economia de energia com tempos de despertar rápidos. Juntos, esses recursos podem reduzir o consumo de energia da MCU em até 90%, o que se traduz em uma bateria significativamente menor ou em uma vida útil mais longa.

Recursos de desempenho elétrico do FlexPowerControl:

  • Fonte de alimentação de 1,71 a 3,6 volts
  • 140 nanoamperes (nA) em modo de espera (16 pinos de despertar)
  • 200 nA em modo de espera com relógio de tempo real (RTC)
  • Modo de espera de 2,4 microamperes (μA) com SRAM de 64 Kbytes
  • Modo de parada de 16,3 μA com SRAM de 64 Kbytes
  • 45 μA/MHz em modo de execução a 3,3 volts
  • Rádio: Rx 7,4 miliamperes (mA) / Tx a 0 dBm 10,6 mA

Além disso, o Bluetooth 5.3 oferece um chaveamento mais rápido entre os ciclos de trabalho de nível baixo e alto, tornando-o mais eficiente em termos de energia do que as versões anteriores.

Arquitetura da pilha Bluetooth e dos pacotes de dados

As MCUs Arm Cortex-M33 de núcleo único do STM32WBA52 foram projetadas para o desenvolvimento do firmware da aplicação, incluindo perfis e serviços na pilha BLE (controlador e host). As MCUs processam o fluxo de dados do módulo de RF integrado na camada física mais baixa (PHY) para o perfil de atributo genérico (GATT) e o perfil de acesso genérico (GAP) (Figura 2). O GAP define e gerencia a publicidade e a conexão, enquanto o GATT define e gerencia a troca de dados de entrada/saída.

Imagem das MCUs que processa o fluxo de dados do PHY de rádio para o GATT e o GAPFigura 2: As MCUs processam o fluxo de dados do PHY de rádio para o GATT e o GAP. (Fonte da imagem: STMicroelectronics)

O BLE envia pacotes de dados que são definidos como uma estrutura de quadro fixo de uma sequência de bits. O comprimento da área de dados do usuário pode variar dinamicamente de 27 a 251 bytes.

Exemplos de aplicações BLE

A enciclopédia on-line, STMicro-Wiki para MCUs STM32WBA, contém vários exemplos de aplicações para diferentes funções Bluetooth, incluindo:

  • Anúncio: BLE_Beacon
  • Sensor: BLE_HealthThermometer,BLE_HeartRate
  • Ponte: BLE_SerialCom
  • Roteador: BLE_p2pRouter
  • Dados: BLE_DataThroughput, BLE_p2pServer e Multi Slave BLE_p2pClient
  • Monitor de RF: BLE_TransparentMode,
  • Atualização do firmware por via aérea: BLE_Fuota

Combinando com seu próprio projeto BLE, os projetistas e gravadores de memória dos dispositivos podem transferir o binário compilado do diretório do projeto GitHub correspondente para a placa NUCLEO e iniciar a conexão Bluetooth com um smartphone ou PC. O software programador necessário, STM32CubeProg, fornece leitura, escrita e verificação da memória do dispositivo por meio da interface de depuração e da interface do carregador de inicialização.

Execução do exemplo de BLE "Sensor de termômetro de saúde"

O Health Thermometer Profile (HTP) é um perfil de baixa energia baseado em GAP definido pelo Bluetooth Special Interest Group (SIG). Ele combina um coletor de termômetro de saúde e um sensor de termômetro de saúde para conectar e trocar dados em diferentes aplicações (Figura 3).

Imagem da comunicação BLE entre a placa NUCLEO e um smartphone (clique para ampliar)Figura 3: Comunicação BLE entre a placa NUCLEO como sensor/servidor e um smartphone como coletor/cliente. (Fonte da imagem: STMicroelectronics)

O sensor do termômetro de saúde:

  • Mede a temperatura e a expõe por meio do Health Thermometer Service
  • Contém o serviço de informações do dispositivo a ser identificado pelo dispositivo remoto
  • O servidor do GATT é

O coletor do termômetro de saúde:

  • Acessa as informações expostas pelo sensor de termômetro de saúde e pode exibi-las para o usuário final ou armazená-las na memória não volátil para análise posterior.
  • É o cliente GATT

Depois que o arquivo binário do termômetro de saúde for transferido para a MCU do NUCLEO, o desenvolvedor precisará seguir as próximas etapas para executar o exemplo de aplicação BLE:

Usando o aplicativo para smartphone

  1. Instale o ST BLE Toolbox em um smartphone. O aplicativo é usado para interagir e depurar dispositivos ST BLE.
  2. Ligue a placa STM32WBA NUCLEO com a aplicação instalada do termômetro de saúde.
  3. Ligue o Bluetooth (BT) do smartphone e procure os dispositivos BT disponíveis no aplicativo. Selecione Health Thermometer e conecte-se.

Usando a interface do navegador da Web

  1. Garanta a compatibilidade do navegador:
    • em um computador de mesa: Chrome, Edge ou Opera
    • em um dispositivo smartphone: Chrome Android
  2. Ligue a placa STM32WBA NUCLEO com a aplicação instalada do termômetro de saúde.
  3. Ative o Bluetooth no computador.
  4. Abra a página da Web https://applible.github.io/Web_Bluetooth_App_WBA/ no navegador.
  5. Clique no botão conectar na parte superior da página da Web, selecione HT_xx na lista de dispositivos e clique em emparelhar. O dispositivo agora está conectado.
  6. Clique em Health Thermometer para exibir a interface.

A Tabela 1 descreve a estrutura dos serviços do sensor de termômetro de saúde. O UUID (identificador único universal) de 128 bits distingue as características e os serviços individuais.

Serviço Característica Propriedade UUID Tamanho
Serviço do Termômetro de Saúde 0x1809
Medição de temperatura Indicar 0x2A1C 13
Tipo de temperatura Ler 0x2A1D 1
Temperatura intermediária Notificar 0x2A1E 13
Intervalo de medição Ler, escrever, indicar 0x2A21 2
Serviço de informações do dispositivo 0x180A
Cadeia de caracteres do nome do fabricante Ler 0x2A29 32
Cadeia de caracteres do número do modelo Ler 0x2A24 32
ID do sistema Ler 0x2A23 8

Tabela 1: Serviços GATT e seu UUID para o GAP "Sensor de termômetro de saúde". (Fonte de imagem: STMicroelectronics)

A seguinte sequência de JavaScript do GitHub mostra como a interface do navegador da Web filtra as diferentes características de processamento de dados do GATT (Listagem 1).

Copiar
[...]

// Filtering the different datathroughput characteristics
  props.allCharacteristics.map(element => {
    switch (element.characteristic.uuid) {
      case "00002a1c-0000-1000-8000-00805f9b34fb":
        IndicateCharacteristic = element; // Temperature Measurement (TEMM)
        IndicateCharacteristic.characteristic.startNotifications();
        IndicateCharacteristic.characteristic.oncharacteristicvaluechanged = 
        temperatureMeasurement;
        break;
      case "00002a1d-0000-1000-8000-00805f9b34fb":
        ReadCharacteristic = element; // Temperature Type
        readTemperatureType();
        break;
      case "00002a1e-0000-1000-8000-00805f9b34fb":
        NotifyCharacteristic = element; //Immediate Temperature
        NotifyCharacteristic.characteristic.startNotifications();
        NotifyCharacteristic.characteristic.oncharacteristicvaluechanged = notifHandler;
        break; 
      case "00002a21-0000-1000-8000-00805f9b34fb":
        ReadWriteIndicateCharacteristic = element; // Measurement Interval
        readMeasurementInterval();
        break;
      default:
        console.log("# No characteristics found..");
    }
  });

[...]

Listagem 1: Essa sequência JavaScript filtra as diferentes características de processamento de dados do GATT da Tabela 1. (Fonte da listagem: GitHub, STMicroelectronics)

Rastreamento dos processos da pilha BLE

O NUCLEO-WBA52CG incorpora o depurador e gravador de memória no circuito ST-LINK/V3, suportando o acionador de porta COM virtual STM32 para comunicação com um PC por meio de uma interface serial. Qualquer terminal de software pode abrir essa porta de comunicação serial para mostrar as mensagens de texto curtas geradas no código pela função APP_DBG_MSG.

Os rastreios no projeto precisam ser habilitados no arquivo app_conf.h

#define CFG_DEBUG_APP_TRACE (1)

Como alternativa, o aplicativo para smartphone "SE BLE Toolbox" oferece uma função de rastreamento na aba <Application Log>.

Programação de aplicações BLE 5.3

Para programar as MCUs STM32WBA52, a STM criou o STM32CubeWBA-Package, que consiste em uma camada de abstração de hardware (HAL), interfaces de programação de aplicativos (APIs) de camada baixa e CMSIS, sistema de arquivos, RTOS, BLE/802.15.4, Thread e pilhas Zigbee, bem como exemplos executados em placas da STMicroelectronics.

As configurações da estrutura do projeto para os três ambientes de desenvolvimento (IDEs), como IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM e STM32CubeIDE, estão incluídas em cada exemplo de aplicação BLE do NUCLEO-WBA52CG.

No caso do exemplo do termômetro de saúde, somente arquivos específicos da árvore de diretórios do projeto (quadro na Figura 4 à esquerda) geram os serviços GATT. As duas rotinas, "Serviço do Termômetro de Saúde" (hts) e "Serviço de Informações do Dispositivo" (dis) da Tabela 1, são executadas em paralelo (canto inferior direito da Figura 4).

Diagrama dos gravadores de memória que podem adicionar seu próprio conteúdo do GATT aos arquivos de código enquadrados (clique para ampliar)Figura 4: Os gravadores de memória podem adicionar seu próprio conteúdo do GATT aos arquivos de código enquadrados (esquerda); esses arquivos geram os serviços do GATT (direita). (Fonte da imagem: STMicroelectronics)

Os gravadores de memória podem usar o código-fonte para seus próprios projetos e ampliá-lo com seu conteúdo GATT nas áreas marcadas com USER CODE BEGIN / USER CODE END (Listagem 2). A sequência de inicialização do arquivo hts.c gera a característica GATT Temperature Measurement (TEMM) com o UUID 0x2A1C.

Copiar
[...]
 void HTS_Init(void)
 {
 [...]

  /* TEMM, Temperature Measurement */
  
  uuid.Char_UUID_16 = 0x2a1c;
  ret = aci_gatt_add_char(HTS_Context.HtsSvcHdle,
                          UUID_TYPE_16,
                          (Char_UUID_t *) &uuid,
                          SizeTemm,
                          CHAR_PROP_INDICATE,
                          ATTR_PERMISSION_NONE,
                          GATT_DONT_NOTIFY_EVENTS,
                          0x10,
                          CHAR_VALUE_LEN_VARIABLE,
                          &(HTS_Context.TemmCharHdle));
  if (ret != BLE_STATUS_SUCCESS)
  {
    APP_DBG_MSG("  Fail   : aci_gatt_add_char command  : TEMM, error code: 0x%2X\n", ret);
  }
  else
  {
    APP_DBG_MSG("  Success: aci_gatt_add_char command  : TEMM\n");
  }

  /* USER CODE BEGIN SVCCTL_InitService2Char1 */

  /* USER CODE END SVCCTL_InitService2Char1 */

 [...]
 }
[...]

Listagem 2: A sequência de inicialização do arquivo hts.c gera a característica TEMM do GATT. (Fonte da imagem: GitHub, STMicroelectronics)

Requisitos de componentes externos

A MCU sem fio STM32WBA52 requer apenas alguns componentes externos para a operação básica com a funcionalidade Bluetooth. Isso inclui capacitores para a alimentação de tensão, um oscilador de cristal, uma antena de placa de circuito impresso (PCI) com casamento de impedância e um filtro harmônico (Figura 5).

Diagrama do terminal de RF STM32WBA52 da STMicroelectronics (clique para ampliar)Figura 5: Para o Bluetooth, o terminal de RF do STM32WBA52 se conecta a uma rede de casamento de impedância, um filtro harmônico e uma antena. (Fonte da imagem: STMicroelectronics)

Conclusão

Os desenvolvedores de dispositivos IoT sem fio precisam reduzir os ciclos de projeto e os custos para competir em um mercado em rápida evolução. No entanto, o projeto de RF é desafiador. A MCU STM32WBA52, com sua interface BLE 5.3 integrada, permite que os desenvolvedores cheguem ao mercado de forma rápida e econômica. A pilha BLE pré-programada e vários exemplos de aplicações BLE formam um modelo de programação para projetos personalizados em que o conteúdo do GATT é facilmente inserido.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Jens Wallmann

Jens Wallmann

Jens Wallmann is a freelancing editor and contributes to electronics publications, both print and online. As an electrical engineer (communications engineering) and a trained industrial electronic engineer he has more than 25 years in electronics development with a focus on measuring technology, automotive electronics, process industry and Radio Frequency.

About this publisher

DigiKey's European Editors