Klik hier voor de Engelse versie van de broncode.

Hoe Bluetooth 5.3 snel en kosteneffectief toe te voegen aan Edge IoT-ontwerpen

Door Jens Wallmann

Bijgedragen door De Europese redacteurs van DigiKey

De meedogenloze concurrentie zet ontwikkelaars van Internet of Things-apparaten (IoT) onder druk om snel nieuwe en innovatieve producten te introduceren en tegelijkertijd de kosten te verlagen en te zorgen voor robuuste, energiezuinige en veilige communicatie. Traditionele intelligente IoT-eindknooppunten bestaan uit een microcontrollereenheid (MCU) voor randverwerking en een draadloze IC voor connectiviteit. Problemen ontstaan wanneer ontwerpteams niet beschikken over de radiofrequente (RF) vaardigheden die nodig zijn voor een effectieve oplossing.

Om hun draadloze IoT-ontwerpen op tijd af te ronden, te certificeren en naar volumeproductie te brengen, moeten ontwikkelaars het ontwikkelproces efficiënter maken. Eén manier om de efficiëntie van het ontwikkelproces te verhogen is het gebruik van een energiezuinige MCU met een geïntegreerde draadloze Bluetooth Low Energy-interface (BLE).

Dit artikel introduceert de ultra-low-power STM32WBA52 MCU-serie van STMicroelectronics en laat zien hoe ontwikkelaars een BLE-evaluatiebord, ontwikkeltools en toepassingsvoorbeelden kunnen gebruiken om snel een draadloos BLE 5.3-ontwerp op te zetten. Een korte blik op programmeren en bedrading van de MCU is inbegrepen.

Energiebesparende draadloze MCU met hoog beveiligingsniveau

De STM32WBA52 MCU-serie is gecertificeerd voor BLE 5.3 en is een kosteneffectieve oplossing waarmee beginnende ontwikkelaars snel draadloze communicatie kunnen toevoegen aan hun apparaten. Gebaseerd op de Arm® Cortex®-M33 kern met een 100 megahertz (MHz) klok en TrustZone technologie, bieden deze microcontrollers een hoog beveiligingsniveau, beschermen ze gegevens en intellectueel eigendom (IP) en voorkomen ze hacks en het klonen van apparaten.

Terwijl de STM32WBA52CEU6 draadloze MCU 512 kilobytes (Kbytes) flashgeheugen en 96 Kbytes statisch RAM (SRAM) heeft, biedt de STM32WBA52CGU6 variant 1 megabyte (Mbyte) flashgeheugen en 128 Kbytes SRAM. Afbeelding 1 toont het functionele bereik van het IC in een 48 UFQFN-pakket. Bovendien maken maximaal 20 capacitieve aanraakkanalen de bediening van hermetisch afgesloten apparaten mogelijk (er zijn geen mechanische toetsen nodig).

Functioneel blokschema van de STM32WBA52 van STMicroelectronicsAfbeelding 1: Een functioneel blokschema van de STM32WBA52 toont de geïntegreerde BLE 5.3 radio, flash en SRAM, en beveiligingsondersteuning. (Bron afbeelding: STMicroelectronics)

Een rijk STM32Cube-ecosysteem ondersteunt de implementatie en programmering van de BLE-toepassing. Het omvat de STM32CubeIDE-ontwikkelomgeving, evenals tools zoals de STM32CubeMX-configurator en codegenerator voor randapparatuur, de STM32CubeMonitorRF-prestatietester en de STM32Cube.AI desktop- en cloudversies voor kunstmatige intelligentie (AI). Een bijbehorend evaluatiebord, de NUCLEO-WBA52CG, vereenvoudigt prototyping en versnelt validatie met vele BLE-voorbeeldtoepassingen en vrij beschikbare broncode.

Apparaat- en gegevensbeveiliging

De STM32WBA52-productlijn voldoet aan de IoT-beveiligingsstandaarden Platform Security Arm (PSA) Certified Level 3 en Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). De cyberbeveiliging wordt verbeterd door het PSA-beveiligingsprogramma op basis van beveiligingsisolatie, geheugenbescherming, sabotagebescherming en de Cortex-M33 van de MCU's met Arm TrustZone-architectuur. De Trusted Firmware voor Arm Cortex-M (TF-M) voldoet aan de industrienorm PSA Certified Security Framework met PSA onveranderlijke Root of Trust (RoT), inclusief veilig opstarten en veilige firmware-update (X-CUBE-SBSFU), cryptografie, veilige opslag en runtime-attestatie.

Geïntegreerde radio minimaliseert de BOM

De geïntegreerde ultralaagvermogen radiomodule levert +10 decibel gerelateerd aan 1 milliwatt (mW) (dBm) RF-uitgangsvermogen. Het maakt betrouwbare communicatie mogelijk over korte afstanden (BLE 5.3) en lange afstanden (Long Range) met gegevenssnelheden tot 2 megabits per seconde (Mbps). Een diepe stand-by-modus met laag stroomverbruik vermindert het totale stroomverbruik wanneer de radiocommunicatie actief is. De STM32WBA MCU's kunnen tot 20 gelijktijdige verbindingen ondersteunen.

Elektrische prestatiekenmerken van de radiomodule:

  • 2,4 gigahertz (GHz) RF-zendontvanger met ondersteuning voor BLE 5.3
  • RX-gevoeligheid: -96 dBm (BLE bij 1 Mbps)
  • Programmeerbaar uitgangsvermogen, tot +10 dBm in stappen van 1 dB
  • Geïntegreerde balun

Kleinere batterij dankzij zeer efficiënt energiebeheer

De STM32WBA52 MCU's hebben veel energiebesparende technologieën, waaronder STMicroelectronics' Low Power Direct Memory Access (LPDMA) en flexibele energiebesparende toestanden met snelle wektijden. Samen kunnen deze eigenschappen het stroomverbruik van de MCU tot 90% verminderen, wat zich vertaalt in een aanzienlijk kleinere batterij of een langere levensduur van de batterij.

Elektrische prestatiekenmerken van FlexPowerControl:

  • 1,71 tot 3,6 volt voeding
  • 140 nanoampère (nA) stand-bymodus (16 wekpinnen)
  • 200 nA stand-bymodus met real-time klok (RTC)
  • 2,4 microampère (μA) stand-bymodus met 64 Kbytes SRAM
  • 16,3 μA stopmodus met 64 Kbytes SRAM
  • 45 μA/MHz runstand bij 3,3 volt
  • Radio: Rx 7,4 milliampère (mA) / Tx @ 0 dBm 10,6 mA

Daarnaast biedt Bluetooth 5.3 een snellere omschakeling tussen lage en hoge inschakelduur, waardoor het energiezuiniger is dan vorige versies.

Architectuur van de Bluetooth-stack en gegevenspakketten

De single-core Arm Cortex-M33 MCU's in de STM32WBA52 zijn ontworpen voor de ontwikkeling van toepassingsfirmware, inclusief profielen en services op de BLE-stack (controller en host). De MCU's verwerken de gegevensstroom van de geïntegreerde RF-module op de laagste fysieke laag (PHY) naar het generieke attribuutprofiel (GATT) en het generieke toegangsprofiel (GAP) (Afbeelding 2). De GAP definieert en beheert reclame en verbinding, terwijl de GATT de in/out gegevensuitwisseling definieert en beheert.

Afbeelding van MCU's verwerken de gegevensstroom van de radio PHY naar de GATT en GAPAfbeelding 2: De MCU's verwerken de gegevensstroom van de radio PHY naar de GATT en GAP. (Bron afbeelding: STMicroelectronics)

BLE verstuurt gegevenspakketten die gedefinieerd zijn als een vaste frame-structuur van een bitsequentie. De lengte van het gebruikersgegevensgebied kan dynamisch variëren van 27 tot 251 bytes.

BLE-toepassingsvoorbeelden

De online encyclopedie, STMicro-Wiki voor STM32WBA MCU's, bevat verschillende toepassingsvoorbeelden voor verschillende Bluetooth-rollen, waaronder:

  • Advert: BLE_Beacon
  • Sensor: BLE_Gezondheidsthermometer,BLE_Hartslag
  • Brug: BLE_SerialCom
  • Router: BLE_p2pRouter
  • Gegevens: BLE_DataThroughput, BLE_p2pServer & Multi Slave BLE_p2pClient
  • RF-monitor: BLE_TransparentMode,
  • Firmware-update via de lucht: BLE_Fuota

Met hun eigen BLE-project kunnen apparaatontwerpers en programmeurs de gecompileerde binary uit de corresponderende GitHub-projectdirectory flashen naar het NUCLEO-bord en de Bluetooth-verbinding starten met een smartphone of desktop-pc. De vereiste programmeersoftware, STM32CubeProg, biedt lezen, schrijven en verificatie van het apparaatgeheugen via zowel de debug-interface als de bootloader-interface.

Het BLE-voorbeeld "Gezondheidsthermometersensor" uitvoeren

Het Health Thermometer Profile (HTP) is een op GAP gebaseerd energiezuinig profiel gedefinieerd door de Bluetooth Special Interest Group (SIG). Het combineert een gezondheidsthermometercollector en een gezondheidsthermometersensor om verbinding te maken en gegevens uit te wisselen in verschillende toepassingen (Afbeelding 3).

Afbeelding van BLE-communicatie tussen het NUCLEO-bord en een smartphone (klik om te vergroten)Afbeelding 3: BLE-communicatie tussen het NUCLEO-bord als sensor/server en een smartphone als collector/client. (Bron afbeelding: STMicroelectronics)

De gezondheidsthermometersensor:

  • Meet de temperatuur en geeft deze weer via de gezondheidsthermometerservice
  • Bevat de apparaatinformatiedienst die door het apparaat op afstand moet worden geïdentificeerd
  • Is de GATT-server

De gezondheidsthermometerverzamelaar:

  • Heeft toegang tot de informatie van de Gezondheidsthermometersensor en kan deze weergeven aan de eindgebruiker of opslaan in een niet-vluchtig geheugen voor latere analyse.
  • Is de GATT-cliënt

Nadat het binaire bestand van de Gezondheidsthermometer in de MCU van de NUCLEO is geflasht, moet de ontwikkelaar de volgende stappen volgen om het BLE-toepassingsvoorbeeld uit te voeren:

De smartphone-app gebruiken

  1. Installeer ST BLE Toolbox op een smartphone. De app wordt gebruikt voor interactie met en debuggen van ST BLE-apparaten.
  2. Zet het STM32WBA NUCLEO-bord aan met de toepassing Gezondheidsthermometer erin geflitst.
  3. Zet Bluetooth (BT) op de smartphone aan en scan de BT-apparaten die beschikbaar zijn in de app. Selecteer Gezondheidsthermometer en maak verbinding.

De webbrowserinterface gebruiken

  1. Zorg voor browsercompatibiliteit:
    • op een desktopcomputer: Chrome, Edge of Opera
    • op een smartphone: Chrome Android
  2. Zet het STM32WBA NUCLEO-bord aan met de toepassing Gezondheidsthermometer erin geflitst.
  3. Activeer Bluetooth op de computer.
  4. Open de webpagina https://applible.github.io/Web_Bluetooth_App_WBA/ in de browser.
  5. Klik op de knop Verbinden bovenaan de webpagina, selecteer HT_xx in de apparatenlijst en klik op Koppelen. Het apparaat is nu verbonden.
  6. Klik op Gezondheidsthermometer om de interface weer te geven.

Tabel 1 beschrijft de structuur van de services van de gezondheidsthermometersensor. De 128-bits lange Universally Unique Identifier (UUID) onderscheidt de individuele kenmerken en services.

Service Kenmerk Eigendom UUID Grootte
Gezondheidstermometerservice 0x1809
Temperatuurmeting Geef aan 0x2A1C 13
Type temperatuur Lezen 0x2A1D 1
Gemiddelde temperatuur Verwittig 0x2A1E 13
Meetinterval Lezen, schrijven, aangeven 0x2A21 2
Apparaatinformatiedienst 0x180A
Naam fabrikant string Lezen 0x2A29 32
Modelnummerreeks Lezen 0x2A24 32
Systeem-ID Lezen 0x2A23 8

Tabel 1: GATT-diensten en hun UUID voor de "gezondheidsthermometersensor" GAP. (Bron afbeelding: STMicroelectronics)

De volgende JavaScript-sequentie van GitHub laat zien hoe de webbrowserinterface de verschillende GATT-datadoorvoerkenmerken filtert (Lijst 1).

Kopie
[...]

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

[...]

Lijst 1: Deze JavaScript-reeks filtert de verschillende GATT-gegevensdoorvoerkarakteristieken uit Tabel 1. (Bron lijst: GitHub, STMicroelectronics)

De BLE-stackprocessen traceren

De NUCLEO-WBA52CG bevat de ST-LINK/V3 in-circuit debugger en programmer en ondersteunt de STM32 virtuele COM-poortdriver voor communicatie met een PC via een seriële interface. Elke softwareterminal kan deze seriële communicatiepoort openen om de korte tekstberichten weer te geven die in de code gegenereerd worden door de functie APP_DBG_MSG.

De sporen binnen het project moeten worden ingeschakeld in het bestand app_conf.h

#define CFG_DEBUG_APP_TRACE (1)

Als alternatief biedt de smartphone-app "SE BLE Toolbox" een traceerfunctie op tabblad .

BLE 5.3-toepassingen programmeren

Voor het programmeren van de STM32WBA52 MCUs heeft STM het STM32CubeWBA-pakket samengesteld, dat bestaat uit een hardware-abstractielaag (HAL), API's (Application Programming Interfaces) en CMSIS, Bestandssysteem, RTOS, BLE/802.15.4, Thread en Zigbee stacks, en voorbeelden die draaien op STMicroelectronics-borden.

Projectstructuurinstellingen voor alle drie ontwikkelomgevingen (IDE's), zoals IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM en STM32CubeIDE, zijn opgenomen in elk NUCLEO-WBA52CG BLE-toepassingsvoorbeeld.

In het geval van het voorbeeld van de Gezondheidsthermometer genereren alleen specifieke bestanden uit de boomstructuur van de projectmap (kader in Afbeelding 4 links) de GATT-services. De twee routines, "Health Thermometer Service" (hts) en "Device Information Service" (dis) uit Tabel 1, draaien parallel (rechtsonder in Afbeelding 4).

Schema van programmeurs kunnen hun eigen GATT-inhoud toevoegen aan de ingelijste codebestanden (klik om te vergroten)Afbeelding 4: Programmeurs kunnen hun eigen GATT-inhoud toevoegen aan de omkaderde codebestanden (links); deze bestanden genereren de GATT-services (rechts). (Bron afbeelding: STMicroelectronics)

Programmeurs kunnen de broncode gebruiken voor hun eigen projecten en deze uitbreiden met hun GATT-inhoud in de gebieden gemarkeerd met USER CODE BEGIN / USER CODE END (Lijst 2). De initialisatiesequentie van bestand hts.c genereert het GATT kenmerk Temperatuurmeting (TEMM) met de UUID 0x2A1C.

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

 [...]
 }
[...]

Lijst 2: De initialisatiesequentie van bestand hts.c genereert de GATT-karakteristiek TEMM. (Bron afbeelding: GitHub, STMicroelectronics)

Vereisten voor externe onderdelen

De STM32WBA52 draadloze MCU heeft slechts een paar externe componenten nodig voor een basisfunctie met Bluetooth-functionaliteit. Deze omvatten condensators voor de voedingsspanning, een kristaloscillator, een printplaatantenne met impedantieaanpassing en een harmonische filter (Afbeelding 5).

Schema van STM32WBA52 RF-aansluitklem van STMicroelectronics (klik om te vergroten)Afbeelding 5: Voor Bluetooth wordt de RF-aansluiting van de STM32WBA52 verbonden met een impedantienetwerk, een harmonische filter en een antenne. (Bron afbeelding: STMicroelectronics)

Conclusie

Ontwikkelaars van draadloze IoT-apparaten moeten ontwerpcycli verkorten en kosten verlagen om te kunnen concurreren in een snel evoluerende markt. RF-ontwerp is echter een uitdaging. De STM32WBA52 MCU, met zijn geïntegreerde BLE 5.3-interface, stelt ontwikkelaars in staat om snel en kosteneffectief op de markt te komen. De voorgeprogrammeerde BLE-stack en verschillende BLE-toepassingsvoorbeelden vormen een programmeersjabloon voor aangepaste projecten waarin de GATT-inhoud gemakkelijk kan worden ingevoegd.

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.

Achtergrondinformatie over deze auteur

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.

Over deze uitgever

De Europese redacteurs van DigiKey