Come aggiungere in modo rapido ed economico Bluetooth 5.3 ai progetti edge IoT

Di Jens Wallmann

Contributo di Editori europei di DigiKey

La concorrenza incessante mette sotto pressione gli sviluppatori di dispositivi per Internet delle cose (IoT) perché introducano rapidamente prodotti nuovi e innovativi, riducendo al contempo i costi e garantendo comunicazioni robuste, a basso consumo e sicure. I nodi terminali IoT intelligenti tradizionali comprendono un'unità microcontroller (MCU) per l'edge processing e un CI wireless per la connettività. I problemi sorgono quando i team di progettazione non hanno le necessarie competenze in materia di radiofrequenza (RF) per una soluzione efficace.

Per completare, certificare e portare in tempo i progetti IoT wireless alla produzione in serie, gli sviluppatori devono efficientare lo sviluppo. Un modo per aumentare l'efficienza consiste nell'utilizzare un MCU a basso consumo con un'interfaccia wireless Bluetooth Low Energy (BLE) integrata.

Questo articolo presenta la serie di MCU a bassissimo consumo STM32WBA52 di STMicroelectronics e mostra come gli sviluppatori possano utilizzare una scheda di valutazione BLE, strumenti di sviluppo ed esempi applicativi per rendere rapidamente operativo un progetto wireless BLE 5.3. È anche volto un breve sguardo alla programmazione e al cablaggio dell'MCU.

MCU wireless a risparmio energetico con elevato livello di sicurezza

Certificata per BLE 5.3, la serie di MCU STM32WBA52 è una soluzione economica che consente agli sviluppatori alle prime armi di aggiungere rapidamente le comunicazioni wireless ai loro dispositivi. Basati sul core ARM® Cortex®-M33 con clock a 100 MHz e tecnologia TrustZone, questi microcontroller offrono un elevato livello di sicurezza, proteggono i dati e la proprietà intellettuale (IP) e prevengono le violazioni e la clonazione dei dispositivi.

Mentre l'MCU wireless STM32WBA52CEU6 offre 512 kB di memoria flash e 96 kB di RAM statica (SRAM), la variante STM32WBA52CGU6 offre 1 MB di flash e 128 kB di SRAM. La Figura 1 mostra il campo di applicazione funzionale del CI in un contenitore 48 UFQFN. Tra l'altro, un massimo di 20 canali a rilevamento tattile capacitivo consentono il funzionamento di dispositivi ermeticamente sigillati (non sono necessarie chiavette meccaniche).

Diagramma a blocchi funzionali di STM32WBA52 di STMicroelectronicsFigura 1: Un diagramma a blocchi funzionali di STM32WBA52 mostra la radio BLE 5.3 integrata, la flash e la SRAM e il supporto alla sicurezza. (Immagine per gentile concessione di STMicroelectronics)

Un ricco ecosistema STM32Cube supporta l'implementazione e la programmazione dell'applicazione BLE. Ciò include l'ambiente di sviluppo STM32CubeIDE, oltre a strumenti come il configuratore di periferiche e il generatore di codice STM32CubeMX, il tester di prestazioni STM32CubeMonitorRF e le versioni desktop e cloud di STM32Cube.AI per l'intelligenza artificiale (IA). Una scheda di valutazione abbinata, NUCLEO-WBA52CG, semplifica la prototipazione e accelera la validazione con molte applicazioni BLE di esempio e con il codice sorgente disponibile.

Sicurezza dei dispositivi e dei dati

La linea di prodotti STM32WBA52 è conforme agli standard di sicurezza IoT Platform Security Arm (PSA) Certified Level 3 e Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). La protezione informatica è rafforzata dal programma di sicurezza PSA basato sull'isolamento di sicurezza, sulla protezione della memoria, sulla protezione contro le manomissioni e sul core Cortex-M33 degli MCU con architettura ARM TrustZone. Trusted Firmware for ARM Cortex-M (TF-M) è conforme allo standard di settore PSA Certified Security Framework con radice di attendibilità (RoT) immutabile PSA, che include l'avvio sicuro e l'aggiornamento sicuro del firmware (X-CUBE-SBSFU), la crittografia, l'archiviazione sicura e l'attestazione di runtime.

La radio integrata riduce al minimo la distinta base

Il modulo radio integrato a bassissima potenza fornisce +10 dBm riferiti a 1 mW di potenza di uscita RF. Assicura la comunicazione affidabile su brevi distanze (BLE 5.3) e su lunghe distanze (LR) con velocità di trasmissione dati fino a 2 Mbps. Una modalità di standby profondo a basso consumo riduce la potenza elettrica complessiva quando la comunicazione radio è attiva. Gli MCU STM32WBA possono supportare fino a 20 connessioni simultanee.

Caratteristiche di prestazione elettrica del modulo radio:

  • Transceiver RF da 2,4 GHz con supporto di BLE 5.3
  • Sensibilità RX: -96 dBm (BLE a 1 Mbps)
  • Potenza di uscita programmabile fino a +10 dBm in incrementi di 1 dB
  • Balun integrato

Batteria più piccola grazie alla gestione altamente efficiente dell'energia

Gli MCU STM32WBA52 offrono numerose tecnologie di risparmio energetico, tra cui l'accesso diretto alla memoria a basso consumo (LPDMA) di STMicroelectronics e stati di risparmio energetico flessibili con tempi rapidi di riattivazione. Insieme, queste caratteristiche possono ridurre il consumo energetico dell'MCU fino al 90%, il che si traduce in una batteria significativamente più piccola o in una sua maggiore durata.

Caratteristiche delle prestazioni elettriche di FlexPowerControl:

  • Alimentazione da 1,71 a 3,6 V
  • 140 nA modalità standby (16 pin di riattivazione)
  • 200 nA in modalità standby con clock in tempo reale (RTC)
  • 2,4 μA in modalità standby con 64 kB di SRAM
  • 16,3 μA modalità di arresto con 64 kB di SRAM
  • Modalità di esecuzione a 45 μA/MHz a 3,3 V
  • Radio: Rx 7,4 mA / Tx a 0 dBm 10,6 mA

Inoltre, Bluetooth 5.3 offre una commutazione più rapida tra cicli di lavoro bassi e alti, che lo rende più efficiente dal punto di vista energetico rispetto alle versioni precedenti.

Architettura dello stack Bluetooth e dei pacchetti di dati

Gli MCU ARM Cortex-M33 single-core di STM32WBA52 sono progettati per lo sviluppo di firmware applicativo, compresi profili e servizi sullo stack BLE (controller e host). Gli MCU elaborano il flusso di dati dal modulo RF integrato allo strato fisico più basso (PHY) al profilo di attributo generico (GATT) e al profilo di accesso generico (GAP) (Figura 2). Il GAP definisce e gestisce l'advertising e la connessione, mentre il GATT definisce e gestisce lo scambio di dati in ingresso e uscita.

Immagine degli MCU che elaborano il flusso di dati dalla radio PHY al GATT e al GAPFigura 2: Gli MCU elaborano il flusso di dati dalla radio PHY al GATT e al GAP. (Immagine per gentile concessione di STMicroelectronics)

BLE invia pacchetti di dati definiti come una struttura fissa di frame di una sequenza di bit. La lunghezza dell'area dati utente può variare dinamicamente da 27 a 251 byte.

Esempi applicativi di BLE

L'enciclopedia online, STMicro-Wiki per gli MCU STM32WBA, contiene numerosi esempi applicativi per diversi ruoli Bluetooth, tra cui:

  • Advertising: BLE_Beacon
  • Sensore: BLE_HealthThermometer, BLE_HeartRate
  • Ponte: BLE_SerialCom
  • Router: BLE_p2pRouter
  • Dati: BLE_DataThroughput, BLE_p2pServer & Multi Slave BLE_p2pClient
  • Monitor RF: BLE_TransparentMode
  • Aggiornamento firmware OTA: BLE_Fuota

In base al proprio progetto BLE, i progettisti e i programmatori di dispositivi possono inserire nella scheda NUCLEO il codice binario compilato dalla directory del progetto GitHub corrispondente e avviare la connessione Bluetooth a uno smartphone o a un PC desktop. Il software di programmazione richiesto, STM32CubeProg, consente di leggere, scrivere e verificare la memoria del dispositivo attraverso l'interfaccia di debug e l'interfaccia del bootloader.

Esecuzione dell'esempio BLE "Health Thermometer Sensor"

Health Thermometer Profile (HTP) è un profilo a basso consumo energetico basato sul GAP e definito dal Bluetooth Special Interest Group (SIG). Combina un Health Thermometer Collector e un Health Thermometer Sensor per connettersi e scambiare dati in diverse applicazioni (Figura 3).

Immagine della comunicazione BLE tra la scheda NUCLEO e uno smartphone (fare clic per ingrandire)Figura 3: Comunicazione BLE tra la scheda NUCLEO come sensore/server e uno smartphone come collettore/client. (Immagine per gentile concessione di STMicroelectronics)

Health Thermometer Sensor:

  • Misura la temperatura e la espone tramite l'Health Thermometer Service
  • Contiene il Device Information Service che deve essere identificato dal dispositivo remoto
  • Il server del GATT

Health Thermometer Collector:

  • Accede alle informazioni esposte dall'Health Thermometer Sensor e può visualizzarle all'utente finale o memorizzarle nella memoria non volatile per l'analisi successiva
  • Il client del GATT

Dopo aver inserito il file binario dell'Health Thermometer nell'MCU della scheda NUCLEO, lo sviluppatore deve attenersi a questi passi per eseguire l'esempio applicativo di BLE:

Utilizzo dell'app per smartphone

  1. Installare ST BLE Toolbox su uno smartphone. L'app viene utilizzata per interagire con i dispositivi ST BLE ed eseguirne il debug.
  2. Accendere la scheda STM32WBA NUCLEO con l'applicazione Health Thermometer inserita.
  3. Attivare Bluetooth (BT) sullo smartphone e scansionare i dispositivi BT disponibili nell'app. Selezionare Health Thermometer e collegarsi a questo.

Utilizzo dell'interfaccia del browser Web

  1. Garantire la compatibilità del browser:
    • su un computer desktop: Chrome, Edge o Opera
    • su un dispositivo smartphone: Chrome per Android
  2. Accendere la scheda STM32WBA NUCLEO con l'applicazione Health Thermometer inserita.
  3. Attivare Bluetooth sul computer.
  4. Aprire la pagina web https://applible.github.io/Web_Bluetooth_App_WBA/ nel browser.
  5. Fare clic sul pulsante di connessione nella parte superiore, quindi selezionare HT_xx nell'elenco dei dispositivi ed eseguire l'accoppiamento. Il dispositivo è ora collegato.
  6. Fare clic su Health Thermometer per visualizzare l'interfaccia.

La Tabella 1 descrive la struttura dei servizi dell'Health Thermometer Sensor. L'identificativo unico universale (UUID), lungo 128 bit, distingue le singole caratteristiche e i singoli servizi.

Servizio Caratteristica Proprietà UUID Dimensioni
Health Termometer Service 0x1809
Misurazione di temperatura Indicazione 0x2A1C 13
Tipo di temperatura Lettura 0x2A1D 1
Temperatura intermedia Notifica 0x2A1E 13
Intervallo di misurazione Lettura, scrittura, indicazione 0x2A21 2
Device Information Service 0x180A
Stringa con il nome del produttore Lettura 0x2A29 32
Stringa con il numero di modello Lettura 0x2A24 32
ID di sistema Lettura 0x2A23 8

Tabella 1: Servizi GATT e relativi UUID per il GAP "Health Thermometer Sensor". (Immagine per gentile concessione di STMicroelectronics)

La seguente sequenza JavaScript, tratta da GitHub, mostra come l'interfaccia del browser web filtri le diverse caratteristiche del flusso di dati GATT (listato 1).

Copy
[...]

// 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..");
    }
  });

[...]

Listato 1: Questa sequenza JavaScript filtra le diverse caratteristiche del flusso di dati GATT dalla Tabella 1. (Listato per gentile concessione di GitHub, STMicroelectronics)

Tracciare i processi dello stack BLE

NUCLEO-WBA52CG integra il debugger e il programmatore in-circuit ST-LINK/V3 e supporta il driver per porta COM virtuale STM32 per la comunicazione con un PC tramite interfaccia seriale. Qualsiasi terminale software può aprire questa porta di comunicazione seriale per visualizzare i brevi messaggi di testo generati nel codice dalla funzione APP_DBG_MSG.

Le tracce all'interno del progetto devono essere abilitate nel file app_conf.h

#define CFG_DEBUG_APP_TRACE   (1)

In alternativa, l'applicazione per smartphone "SE BLE Toolbox" offre una funzione di tracciamento nella scheda <Application Log>.

Programmazione di applicazioni BLE 5.3

Per la programmazione degli MCU STM32WBA52, STM ha messo a punto il pacchetto STM32CubeWBA, che comprende un livello di astrazione hardware (HAL), interfacce di programmazione delle applicazioni (API) a basso livello e stack CMSIS, file system, RTOS, BLE/802.15.4, Thread e Zigbee, nonché esempi funzionanti su schede di STMicroelectronics.

Le impostazioni della struttura del progetto per tutti e tre gli ambienti di sviluppo (IDE), come IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM e STM32CubeIDE, sono incluse in ogni esempio applicativo NUCLEO-WBA52CG BLE.

Nel caso dell'esempio dell'Health Thermometer, solo alcuni file specifici della struttura delle directory del progetto (riquadro nella Figura 4 a sinistra) generano i servizi GATT. Le due routine, "Health Thermometer Service" (hts) e "Device Information Service" (dis) della Tabella 1, sono eseguite in parallelo (in basso a destra nella Figura 4).

Schema dei programmatori che possono aggiungere il proprio contenuto GATT ai file di codice framed (fare clic per ingrandire)Figura 4: I programmatori possono aggiungere il proprio contenuto GATT ai file di codice framed (a sinistra); questi file generano i servizi GATT (a destra). (Immagine per gentile concessione di STMicroelectronics)

I programmatori possono utilizzare il codice sorgente per i propri progetti ed estenderlo con i propri contenuti GATT nelle aree contrassegnate con USER CODE BEGIN / USER CODE END (Listato 2). La sequenza di inizializzazione del file hts.c genera la caratteristica di misurazione della temperatura (TEMM) GATT con UUID 0x2A1C.

Copy
[...]
 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 */

 [...]
 }
[...]

Listato 2: La sequenza di inizializzazione del file hts.c genera la caratteristica TEMM GATT. (Immagine per gentile concessione di GitHub, STMicroelectronics)

Requisiti dei componenti esterni

L'MCU wireless STM32WBA52 richiede solo pochi componenti esterni per il funzionamento di base con funzionalità Bluetooth. Questi includono condensatori per l'alimentazione di tensione, un oscillatore a cristallo, un'antenna su circuito stampato (scheda CS) con adattamento dell'impedenza e un filtro armonico (Figura 5).

Schema del terminale RF STM32WBA52 di STMicroelectronics (fare clic per ingrandire)Figura 5: Per Bluetooth, il terminale RF di STM32WBA52 si collega a una rete di adattamento dell'impedenza, a un filtro armonico e a un'antenna. (Immagine per gentile concessione di STMicroelectronics)

Conclusione

Gli sviluppatori di dispositivi IoT wireless devono ridurre i cicli di progettazione e i costi per competere in un mercato in rapida evoluzione. Tuttavia, la progettazione RF è impegnativa. L'MCU STM32WBA52, con la sua interfaccia BLE 5.3 integrata, consente agli sviluppatori di giungere sul mercato in modo rapido ed economico. Lo stack BLE pre-programmato e diversi esempi applicativi di BLE sono un modello di programmazione per progetti personalizzati in cui sono facilmente inseribili i contenuti GATT.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

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.

Informazioni su questo editore

Editori europei di DigiKey