Cum să adăugați Bluetooth 5.3 la proiectele Edge IoT într-un mod rapid și rentabil

By Jens Wallmann

Contributed By DigiKey's European Editors

Concurența neîncetată pune presiune asupra dezvoltatorilor de dispozitive din Internetul lucrurilor (IoT) să introducă rapid produse noi și inovatoare, reducând în același timp costurile și asigurând o comunicare robustă, cu consum redus de energie și sigură. Nodurile terminale IoT inteligente tradiționale au o unitate de microcontroler (MCU) pentru a permite procesarea la periferie și un circuit integrat fără fir pentru conectivitate. Problemele apar atunci când echipele de proiectare nu dispun de competențele privind radiofrecvența (RF) necesare pentru o soluție eficientă.

Pentru a finaliza, certifica și transfera la timp proiectele IoT wireless în producția de volum, dezvoltatorii trebuie să eficientizeze procesul de dezvoltare. O modalitate de a spori eficiența procesului de dezvoltare implică utilizarea unui MCU cu consum redus de energie cu o interfață wireless Bluetooth Low Energy (BLE) integrată.

Acest articol prezintă seria de MCU STM32WBA52 cu consum de energie foarte redus de la STMicroelectronics și arată cum pot dezvoltatorii să utilizeze o placă de evaluare BLE, instrumente de dezvoltare și exemple de aplicații pentru a pune rapid în funcțiune un proiect wireless BLE 5.3. Este inclusă o scurtă prezentare a programării și cablajului MCU.

MCU wireless cu economie de energie și nivel de securitate ridicat

Certificată pentru BLE 5.3, seria de MCU STM32WBA52 este o soluție rentabilă care permite dezvoltatorilor începători să adauge rapid comunicații wireless la dispozitivele lor. Bazate pe nucleul Arm® Cortex®-M33 cu un ceas de 100 megahertzi (MHz) și tehnologia TrustZone, aceste microcontrolere oferă un nivel ridicat de securitate, protejează datele și proprietatea intelectuală (IP) și previn atacurile hackerilor și clonarea dispozitivelor.

În timp ce MCU wireless STM32WBA52CEU6 are 512 kiloocteți (Kbytes) de memorie flash și 96 Kbytes de memorie RAM statică (SRAM), varianta STM32WBA52CGU6 oferă 1 megaoctet (Mbyte) de memorie flash și 128 Kbytes de SRAM. Figura 1 prezintă domeniul de aplicare funcțional al circuitului integrat într-o capsulă 48 UFQFN. De altfel, până la 20 de canale tactile capacitive permit operarea dispozitivelor închise ermetic (nu sunt necesare chei mecanice).

Schema bloc funcțională a STM32WBA52 STMicroelectronicsFigura 1: O schemă bloc funcțională a STM32WBA52 care prezintă radioul BLE 5.3 integrat, flash și SRAM și suportul de securitate. (Sursă imagine: STMicroelectronics)

Un bogat ecosistem STM32Cube susține implementarea și programarea aplicației BLE. Acesta include mediul de dezvoltare STM32CubeIDE, dar și instrumente precum configuratorul de periferice STM32CubeMX și generatorul de cod, testerul de performanță STM32CubeMonitorRF și versiunile desktop și cloud STM32Cube.AI pentru inteligență artificială (AI). O placă de evaluare corespunzătoare, NUCLEO-WBA52CG, simplifică crearea de prototipuri și accelerează validarea cu multe aplicații BLE de probă și cod sursă disponibil gratuit.

Securitatea dispozitivelor și a datelor

Gama de produse STM32WBA52 este conformă cu standardele de securitate IoT Platform Security Arm (PSA) Certified Level 3 și Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). Protecția cibernetică este îmbunătățită prin programul de securitate PSA bazat pe izolarea de securitate, protecția memoriei, protecția împotriva manipulării neautorizate și pe arhitectura Cortex-M33 a MCU-urilor cu Arm TrustZone. Firmware-ul de încredere pentru Arm Cortex-M (TF-M) respectă cadrul de securitate certificat PSA standard din industrie cu Root of Trust (RoT) imuabil PSA, inclusiv pornirea securizată și actualizarea securizată a firmware-ului (X-CUBE-SBSFU), criptografia, stocarea securizată și atestarea în timpul de execuție.

Radioul integrat minimizează lista de materiale

Modulul radio integrat de putere foarte redusă oferă o putere de ieșire RF de +10 decibeli, raportată la 1 miliwatt (mW) (dBm). Acesta permite o comunicare fiabilă pe distanțe scurte (BLE 5.3) și lungi (Long Range) cu viteze de transfer al datelor de până la 2 megabiți pe secundă (Mbps). Un mod de standby profund cu consum scăzut de energie reduce consumul total de energie electrică atunci când comunicarea radio este activă. MCU-urile STM32WBA pot suporta până la 20 de conexiuni simultane.

Caracteristicile de performanță electrică ale modulului radio:

  • Emițător-receptor RF de 2,4 gigahertzi (GHz) care acceptă BLE 5.3
  • Sensibilitate RX: -96 dBm (BLE la 1 Mbps)
  • Putere de ieșire programabilă, până la +10 dBm în pași de 1 dB
  • Balun integrat

Baterie mai mică datorită gestionării foarte eficiente a energiei

MCU-urile STM32WBA52 dispun de multe tehnologii de economisire a energiei, inclusiv accesul direct la memorie cu consum redus de energie (LPDMA) și stări flexibile de economisire a energiei cu timpi rapizi de activare. Împreună, aceste caracteristici pot reduce consumul de energie al MCU cu până la 90%, ceea ce se traduce printr-o baterie semnificativ mai mică sau o durată de viață mai lungă a bateriei.

Caracteristicile de performanță electrică ale FlexPowerControl:

  • Alimentare de la 1,71 la 3,6 volți
  • 140 nanoamperi (nA) în modul standby (16 pini de activare)
  • 200 nA în modul standby cu ceas în timp real (RTC)
  • Mod standby de 2,4 microamperi (μA) cu SRAM de 64 Kbytes
  • 16,3 μA în modul de oprire cu SRAM de 64 Kbytes
  • 45 μA/MHz în modul de funcționare la 3,3 volți
  • Radio: Rx 7,4 miliamperi (mA)/Tx la 0 dBm 10,6 mA

În plus, Bluetooth 5.3 oferă o comutare mai rapidă între ciclurile de utilizare redusă și ridicată, ceea ce îl face mai eficient din punct de vedere energetic decât versiunile anterioare.

Arhitectura stivei Bluetooth și a pachetelor de date

MCU-urile Arm Cortex-M33 cu un singur nucleu din STM32WBA52 sunt concepute pentru dezvoltarea de firmware pentru aplicații, inclusiv profiluri și servicii pe stiva BLE (controler și gazdă). MCU-urile procesează fluxul de date de la modulul RF integrat la cel mai de jos nivel fizic (PHY) la profilul generic de atribute (GATT) și la profilul generic de acces (GAP) (Figura 2). GAP definește și gestionează semnalizarea și conexiunea, în timp ce GATT definește și gestionează schimbul de date intrate/ieșite.

Imaginea cu MCU-urile care procesează fluxul de date de la PHY radio la GATT și GAPFigura 2: MCU-urile procesează fluxul de date de la PHY radio la GATT și GAP. (Sursă imagine: STMicroelectronics)

BLE trimite pachete de date care sunt definite ca o structură cu cadru fix a unei secvențe de biți. Lungimea zonei de date a utilizatorului poate varia în mod dinamic de la 27 la 251 de octeți.

Exemple de aplicații BLE

Enciclopedia online, STMicro-Wiki pentru MCU STM32WBA, conține mai multe exemple de aplicații pentru diferite roluri Bluetooth, inclusiv:

  • Semnalizare: BLE_Beacon
  • Senzor: BLE_HealthThermometer,BLE_HeartRate
  • Punte: BLE_SerialCom
  • Router: BLE_p2pRouter
  • Date: BLE_DataThroughput, BLE_p2pServer și Multi Slave BLE_p2pClient
  • Monitor RF: BLE_TransparentMode,
  • Actualizarea firmware-ului pe cale aeriană: BLE_Fuota

Adaptându-și propriul proiect BLE, proiectanții și programatorii de dispozitive pot să introducă binarul compilat din directorul de proiecte GitHub corespunzător pe placa NUCLEO și să pornească conexiunea Bluetooth cu un smartphone sau un PC desktop. Software-ul de programare necesar, STM32CubeProg, asigură citirea, scrierea și verificarea memoriei dispozitivului atât prin interfața de depanare, cât și prin interfața bootloader.

Rularea exemplului BLE „Health Thermometer Sensor” (Senzor termometru medical)

Health Thermometer Profile (HTP) este un profil cu consum redus de energie bazat pe GAP definit de Bluetooth Special Interest Group (SIG). Acesta combină un colector de termometre medicale și un senzor de termometre medicale pentru a se conecta și a face schimb de date în diferite aplicații (Figura 3).

Imagine cu comunicarea BLE între placa NUCLEO și un smartphone (faceți clic pentru mărire)Figura 3: Comunicarea BLE între placa NUCLEO ca senzor/server și un smartphone ca și colector/client. (Sursă imagine: STMicroelectronics)

Senzorul termometrului medical:

  • Măsoară temperatura și o expune prin intermediul Serviciului de termometre medicale
  • Conține serviciul de informații despre dispozitiv care urmează să fie identificat de către dispozitivul de la distanță
  • Este serverul GATT

Colectorul de termometre medicale:

  • Accesează informațiile expuse de către senzorul termometrului medical și le poate afișa utilizatorului final sau le poate stoca în memoria nevolatilă pentru o analiză ulterioară
  • Este clientul GATT

După ce fișierul binar al termometrului medical este introdus în MCU NUCLEO, dezvoltatorul trebuie să urmeze pașii din continuare pentru a rula exemplul de aplicație BLE:

Utilizând aplicația pentru smartphone

  1. Instalați ST BLE Toolbox pe un smartphone. Aplicația este utilizată pentru a interacționa cu dispozitivele ST BLE și pentru a depana aceste dispozitive.
  2. Porniți placa STM32WBA NUCLEO cu aplicația Health Thermometer activată.
  3. Activați funcția Bluetooth (BT) a smartphone-ului și scanați dispozitivele BT disponibile în aplicație. Selectați Health Thermometer și conectați-vă.

Utilizând interfața browserului web

  1. Verificați compatibilitatea browserului:
    • pe un computer desktop: Chrome, Edge sau Opera
    • pe un dispozitiv smartphone: Chrome Android
  2. Porniți placa STM32WBA NUCLEO cu aplicația Health Thermometer activată.
  3. Activați Bluetooth pe computer.
  4. Deschideți pagina web https://applible.github.io/Web_Bluetooth_App_WBA/ în browser.
  5. Faceți clic pe butonul de conectare din partea de sus a paginii web, apoi selectați HT_xx în lista de dispozitive și faceți clic pe opțiunea de asociere. Dispozitivul este acum conectat.
  6. Faceți clic pe Health Thermometer pentru a afișa interfața.

Tabelul 1 descrie structura serviciilor senzorului de termometru medical. Identificatorul unic universal (UUID), cu o lungime de 128 de biți, distinge caracteristicile și serviciile individuale.

Serviciu Caracteristică Proprietate UUID Dimensiune
Serviciul termometrului medical 0x1809
Măsurarea temperaturii Indicare 0x2A1C 13
Tipul de temperatură Citire 0x2A1D 1
Temperatura intermediară Notificare 0x2A1E 13
Interval de măsurare Citire, scriere, indicare 0x2A21 2
Serviciul de informații despre dispozitive 0x180A
Șir cu numele producătorului Citire 0x2A29 32
Șir cu numărul de model Citire 0x2A24 32
ID-ul sistemului Citire 0x2A23 8

Tabelul 1: Serviciile GATT și UUID-ul acestora pentru GAP „Health Thermometer Sensor”. (Sursa imaginii: STMicroelectronics)

Următoarea secvență JavaScript de pe GitHub arată modul în care interfața browserului web filtrează diferitele caracteristici ale debitului de date GATT (Lista 1).

Copiere
[...]

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

[...]

Lista 1: Această secvență JavaScript filtrează diferitele caracteristici ale fluxului de date GATT din Tabelul 1. (Sursa listei: GitHub, STMicroelectronics)

Urmărirea proceselor din stiva BLE

NUCLEO-WBA52CG încorporează depanatorul și programatorul ST-LINK/V3 în circuit, susținând driverul portului virtual COM STM32 pentru comunicarea cu un PC prin intermediul unei interfețe seriale. Orice terminal software poate deschide acest port de comunicare serial pentru a afișa mesajele text scurte generate în cod prin funcția APP_DBG_MSG.

Traseele din cadrul proiectului trebuie să fie activate în fișierul app_conf.h

#define CFG_DEBUG_APP_TRACE   (1)

Alternativ, aplicația pentru smartphone „SE BLE Toolbox” oferă o funcție de urmărire pe fila <Application Log>.

Programarea aplicațiilor BLE 5.3

Pentru programarea MCU STM32WBA52, STM a creat pachetul STM32CubeWBA-Package, care constă într-un strat de abstractizare hardware (HAL), interfețe de programare a aplicațiilor (API) de nivel scăzut și stive CMSIS, sistem de fișiere, RTOS, BLE/802.15.4, Thread și Zigbee, precum și exemple care rulează pe plăci STMicroelectronics.

În fiecare exemplu de aplicație NUCLEO-WBA52CG BLE sunt incluse configurații ale structurii proiectului pentru toate cele trei medii de dezvoltare (IDE), cum ar fi IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM și STM32CubeIDE.

În cazul exemplului „Health Thermometer”, numai anumite fișiere din arborele de directoare al proiectului (cadrul din Figura 4 din stânga) generează serviciile GATT. Cele două rutine, „Health Thermometer Service” (hts) și „Device Information Service” (dis) din Tabelul 1, rulează în paralel (partea din dreapta jos a Figurii 4).

Diagrama programatorilor care pot adăuga propriul conținut GATT la fișierele de cod încadrate (faceți clic pentru mărire)Figura 4: Programatorii își pot adăuga propriul conținut GATT în fișierele de cod încadrate (stânga); aceste fișiere generează serviciile GATT (dreapta). (Sursă imagine: STMicroelectronics)

Programatorii pot utiliza codul sursă pentru propriile proiecte și îl pot extinde cu conținutul lor GATT în zonele marcate cu USER CODE BEGIN / USER CODE END (Lista 2). Secvența de inițializare din fișierul hts.c generează caracteristica GATT Temperature Measurement (TEMM) (Măsurarea temperaturii) cu UUID 0x2A1C.

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

 [...]
 }
[...]

Lista 2: Secvența de inițializare din fișierul hts.c generează caracteristica GATT TEMM. (Sursa imaginii: GitHub, STMicroelectronics)

Cerințe privind componentele externe

MCU wireless STM32WBA52 necesită doar câteva componente externe pentru o funcționare de bază cu funcționalitate Bluetooth. Printre acestea se numără condensatoare pentru alimentarea cu tensiune, un oscilator cu cristal, o antenă pe placă de circuite imprimate (PC) cu adaptare de impedanță și un filtru de armonici (Figura 5).

Diagrama terminalului STMicroelectronics STM32WBA52 RF (faceți clic pentru mărire)Figura 5: Pentru Bluetooth, terminalul RF al STM32WBA52 se conectează la o rețea de adaptare a impedanței, la un filtru de armonici și la o antenă. (Sursă imagine: STMicroelectronics)

Concluzie

Dezvoltatorii de dispozitive IoT wireless trebuie să scurteze ciclurile de proiectare și să reducă costurile pentru a concura pe o piață în evoluție rapidă. Cu toate acestea, proiectarea RF reprezintă o provocare. MCU STM32WBA52, cu interfața BLE 5.3 integrată, permite dezvoltatorilor să ajungă pe piață în mod rapid și rentabil. Stiva BLE preprogramată și mai multe exemple de aplicații BLE formează un șablon de programare pentru proiecte personalizate în care conținutul GATT este ușor de introdus.

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