Hur man snabbt och kostnadseffektivt lägger till Bluetooth 5.3 i IoT-konstruktioner för molnkanten
Bidraget med av DigiKeys europeiska redaktörer
2023-11-29
Stenhård konkurrens sätter press på utvecklare av IoT-enheter (Internet of Things) att snabbt lansera nya och innovativa produkter och samtidigt minska kostnaderna och garantera en stabil, strömsnål och säker kommunikation. Traditionella intelligenta slutnoder för IoT består av en microcontroller (MCU) för att möjliggöra bearbetning i molnkanten och en krets för trådlös anslutning. Problemen uppstår när konstruktionsteamen saknar de kunskaper om radiofrekvenser (RF) som krävs för en effektiv lösning.
För att kunna slutföra, certifiera och flytta sina trådlösa IoT-konstruktioner till volymproduktion i tid måste utvecklarna göra utvecklingsprocessen mer effektiv. Ett sätt att effektivisera utvecklingsprocessen är att använda en MCU med låg effekt och integrerat trådlöst gränssnitt för Bluetooth Low Energy (BLE).
Artikeln presenterar MCU-serien STM32WBA52 från STMicroelectronics och visar hur utvecklare kan använda ett utvärderingskort för BLE, utvecklingsverktyg och tillämpningsexempel för att snabbt komma igång med en trådlös design för BLE 5.3. En kort genomgång av programmering och MCU-inkoppling ingår också.
Energibeparande trådlös MCU med hög säkerhetsnivå
MCU-serien STM32WBA52 är certifierad för BLE 5.3, och är en kostnadseffektiv lösning som gör det möjligt för nybörjare att snabbt lägga till trådlös kommunikation i sina enheter. Dessa microcontrollers, som är baserade på kärnan Arm® Cortex®-M33 med en klockfrekvens på 100 MHz och TrustZone-teknik har en hög säkerhetsnivå, skyddar data och immateriella rättigheter (IP) samt förhindrar hackning och kloning av enheter.
Den trådlösa MCU:n STM32WBA52CEU6 har 512 kbyte) flashminne och 96 kbyte SRAM, och modellen STM32WBA52CGU6 har 1 Mbyte flashminne och 128 kbyte SRAM. Figur 1 visar den integrerade kretsens funktioner i en 48 UFQFN-kapsling. Upp till 20 kapacitiva touchkanaler gör det för övrigt möjligt att använda hermetiskt tillslutna enheter (inga mekaniska knappar behövs).
Figur 1: Ett blockdiagram över funktionerna i STM32WBA52 visar den inbyggda radion BLE 5.3, flashminne och SRAM-minne samt säkerhetsstöd. (Bildkälla: STMicroelectronics)
Ett omfattande ekosystem baserat på STM32Cube stöder implementering och programmering av BLE-tillämpningen. Det innehåller utvecklingsmiljön STM32CubeIDE samt verktyg som STM32CubeMX för kringutrustningskonfigurering och kodgenerering, prestandatestaren STM32CubeMonitorRF samt STM32Cube.AI skrivbords- och molnversioner för artificiell intelligens (AI). Ett motsvarande utvärderingskort, NUCLEO-WBA52CG, förenklar prototyputveckling och påskyndar validering med många exempeltillämpningar för BLE och fritt tillgänglig källkod.
Enhet och datasäkerhet
Produktsortimentet STM32WBA52 uppfyller säkerhetsstandarderna för IoT Platform Security Arm (PSA) Certified Level 3 och Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). Cyberskyddet förstärks av PSA:s säkerhetsprogram som bygger på säkerhetsisolering, minnesskydd, sabotageskydd och MCU:erna Cortex-M33 med Arm TrustZone-arkitektur. Trusted Firmware for Arm Cortex-M (TF-M) uppfyller branschstandarden PSA Certified Security Framework med PSA immutable Root of Trust (RoT), inklusive säker start och säker firmware-uppdatering(X-CUBE-SBSFU), kryptografi, säker lagring och attestering vid körning.
Inbyggd radio minimerar materiallistan
Den inbyggda radiomodulen med extremt låg effekt levererar +10 decibel refererat till 1 mW (dBm) i RF-uteffekt. Den möjliggör tillförlitlig kommunikation över korta avstånd (BLE 5.3) och långa avstånd (Long Range) med datahastigheter på upp till 2 Mbit/s. Ett djupt standby-läge med låg strömförbrukning minskar den totala elektriska effekten när radiokommunikationen är aktiv. MCU:n STM32WBA kan stödja upp till 20 samtidiga anslutningar.
Radiomodulens elektriska prestandaegenskaper:
- 2,4 GHz RF-transceiver med stöd för BLE 5.3
- Mottagningskänslighet: -96 dBm (BLE vid 1 Mbit/s)
- Programmerbar uteffekt, upp till +10 dBm i steg om 1 dB
- Inbyggd balun
Mindre batteri tack vare högeffektiv energihantering
MCU:n STM32WBA52 har många energibesparingstekniker, inklusive LPDMA (Low Power Direct Memory Access) från STMicroelectronics och flexibla energisparlägen med snabba väckningstider. Dessa funktioner kan tillsammans minska MCU:ns strömförbrukning med upp till 90 %, vilket innebär ett betydligt mindre batteri eller en längre batteritid.
Elektriska prestandaegenskaper för FlexPowerControl:
- Strömförsörjning på 1,71 till 3,6 V
- Standbyläge med 140 nA (16 väckningsstift)
- Standyläge med 200 nA med realtidsklocka (RTC)
- Standbyläge på 2,4 μA med 64 kbyte SRAM
- Stoppläge på 16,3 μA med 64 kbyte SRAM
- 45 μA/MHz i driftläge vid 3,3 V
- Radio: Rx 7,4 mA/Tx vid 0 dBm 10,6 mA
Bluetooth 5.3 har dessutom snabbare växling mellan låg och hög driftscykel, vilket gör den mer energieffektiv än tidigare versioner.
Bluetooth-stackens arkitektur och datapaket
De enkelkärniga Arm Cortex-M33 MCU-enheterna i STM32WBA52 är utformade för utveckling av firmware för tillämpningar, inklusive profiler och tjänster på BLE-stacken (styrningsenhet och värd). MCU-enheterna bearbetar dataflödet från den inbyggda RF-modulen i det lägsta fysiska lagret (PHY) till den generiska attributprofilen (GATT) och den generiska åtkomstprofilen (GAP) (figur 2). GAP definierar och hanterar annonsering och anslutning, medan GATT definierar och hanterar datautbytet in/ut.
Figur 2: MCU-enheterna bearbetar dataflödet från radions PHY till GATT och GAP. (Bildkälla: STMicroelectronics)
BLE skickar datapaket som definieras som en fast ramstruktur av en bitsekvens. Längden på området för användardata kan variera dynamiskt från 27 till 251 bytes.
Exempel på tillämpningar med BLE
I online-encyklopedin STMicro-Wiki för MCU:erna STM32WBA finns flera tillämpningsexempel för olika Bluetooth-roller, t.ex:
- Advert: BLE_Beacon
- Sensor: BLE_HealthThermometer,BLE_HeartRate
- Bridge: BLE_SerialCom
- Router: BLE_p2pRouter
- Data: BLE_DataThroughput, BLE_p2pServer & Multi Slave BLE_p2pClient
- RF-Monitor: BLE_TransparentMode,
- Firmware-uppdatering via radio: BLE_Fuota
Genom att matcha sitt eget BLE-projekt kan konstruktörer av enheter och programmerare flashprogrammera den kompilerade binärfilen från motsvarande projektkatalog på GitHub till NUCLEO-kortet och starta Bluetooth-anslutningen med en smartphone eller stationär dator. Programmet STM32CubeProg för programmeraren gör det möjligt att läsa, skriva och verifiera enhetens minne via både felsökningsgränssnittet och bootloader-gränssnittet.
Körning av BLE-exemplet "Health Thermometer Sensor"
Health Thermometer Profile (HTP) är en GAP-baserad lågenergiprofil som definierats av Bluetooth Special Interest Group (SIG). Den kombinerar en Health Thermometer Collector och en Health Thermometer Sensor för att ansluta och utbyta data i olika tillämpningar (Figur 3).
Figur 3: BLE-kommunikation mellan NUCLEO-kortet som sensor/server och en smartphone som insamlare/klient. (Bildkälla: STMicroelectronics)
Health Thermometer Sensor:
- Mäter temperaturen och exponerar den via tjänsten Health Thermometer
- Innehåller den tjänst för enhetsinformation som ska identifieras av fjärrenheten
- Är GATT-servern
Health Thermometer Collector:
- Får åtkomst till den information som Health Thermometer Sensor exponerar, och kan visa den för slutanvändaren eller lagra den i ett icke-flyktigt minne för senare analys
- Är GATT-klienten
När den binära filen för Health Thermometer har flashprogrammerats till NUCLEO:s MCU behöver utvecklaren följa nästa steg för att köra BLE-tillämpningsexemplet:
Använda Smartphone-appen
- Installera ST BLE Toolbox på en smartphone. Appen används för att interagera med och felsöka ST BLE-enheter.
- Slå på STM32WBA NUCLEO-kortet med tillämpningen Health Thermometer i flashminnet.
- Slå på Bluetooth (BT) på smarttelefonen och skanna de BT-enheter som finns tillgängliga i appen. Välj Health Thermometer och anslut.
Använda webbläsarens gränssnitt
- Kontrollera webbläsarens kompatibilitet:
- på en stationär dator: Chrome, Edge eller Opera
- på en smartphone-enhet: Chrome Android
- Slå på STM32WBA NUCLEO-kortet med tillämpningen Health Thermometer i flashminnet.
- Aktivera Bluetooth på datorn.
- Öppna webbsidan https://applible.github.io/Web_Bluetooth_App_WBA/ i webbläsaren.
- Klicka på knappen Anslut längst upp på webbsidan, välj sedan HT_xx i enhetslistan och klicka på Sammankoppla. Enheten är nu ansluten.
- Klicka på Health Thermometer för att visa gränssnittet.
Tabell 1 beskriver tjänsternas struktur i sensorn för Health Thermometer. Den 128 bitar långa Universally Unique Identifier (UUID) särskiljer de enskilda egenskaperna och tjänsterna.
|
Tabell 1: GATT-tjänster och deras UUID för GAP:en "Sensor för Health Thermometer". (Bildkälla: STMicroelectronics)
Följande JavaScript-sekvens från GitHub visar hur webbläsarens gränssnitt filtrerar de olika egenskaperna för GATT-datagenomströmning (lista 1).
Kopiera
[...]
// 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: Denna JavaScript-sekvens filtrerar de olika egenskaperna för GATT-datagenomströmning i tabell 1. (Listans källa: GitHub, STMicroelectronics)
Spårning av BLE-stackens processer
NUCLEO-WBA52CG innehåller den inbyggda felsökaren och programmeraren ST-LINK/V3, med stöd för den virtuella COM-portsdrivrutinen STM32 för kommunikation med en PC via ett seriellt gränssnitt. Valfri programvaruterminal kan öppna denna seriella kommunikationsporten för att visa de korta textmeddelanden som genereras i koden med funktionen APP_DBG_MSG.
Spårning i projektet måste aktiveras i filen app_conf.h
#define CFG_DEBUG_APP_TRACE (1)
Eller, så har smartphone-appen "SE BLE Toolbox" en spårningsfunktion på fliken <Application Log>.
Programmering av tillämpningar för BLE 5.3
För programmering av MCU:erna STM32WBA52 har STM sammanställt paketet STM32CubeWBA, som består av ett HAL-lager (hardware abstraction layer), API:er (application programming interface) och CMSIS, filsystem, RTOS, BLE/802.15.4, Thread och Zigbee-stackar samt exempel som körs på kort från STMicroelectronics.
Projektstrukturens inställningar för alla de tre utvecklingsmiljöerna (IDE), såsom IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM och STM32CubeIDE, ingår i respektive BLE-tillämpningsexempel för NUCLEO-WBA52CG.
I exemplet med Health Thermometer är det endast specifika filer från projektkatalogens träd (ram i figur 4 till vänster) som genererar GATT-tjänsterna. De två rutinerna, "Health Thermometer Service" (hts) och "Device Information Service" (dis) från tabell 1, körs parallellt (längst ned till höger i figur 4).
Bild 4: Programmerare kan lägga till sitt eget GATT-innehåll i de inramade kodfilerna (vänster); dessa filer genererar GATT-tjänsterna (höger). (Bildkälla: STMicroelectronics)
Programmerare kan använda källkoden för sina egna projekt och utöka den med sitt GATT-innehåll i de områden som är markerade med USER CODE BEGIN/USER CODE END (lista 2). Initialiseringssekvensen från filen hts.c genererar GATT-egenskapen Temperature Measurement (TEMM) med UUID 0x2A1C.
Kopiera
[...]
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: Initialiseringssekvensen från filen hts.c genererar GATT-egenskapen TEMM. (Bildkälla: GitHub, STMicroelectronics)
Krav på kringkomponenter
Den trådlösa MCU:n STM32WBA52 behöver endast ett fåtal kringkomponenter för grundläggande drift med Bluetooth-funktion. Dessa inkluderar kondensatorer för spänningsmatningen, en kristalloscillator, en kretskortsantenn med impedansanpassning och ett filter för övertoner (figur 5).
Figur 5: För Bluetooth ansluts RF-anslutningen på STM32WBA52 till ett impedansmatchningsnätverk, ett filter för övertoner och en antenn. (Bildkälla: STMicroelectronics)
Sammanfattning
Utvecklare av trådlösa IoT-enheter måste förkorta designcyklerna och sänka kostnaderna för att kunna konkurrera på en snabbt föränderlig marknad. RF-konstruktionen är dock en utmaning. MCU:n STM32WBA52 med sitt inbyggda gränssnitt för BLE 5.3, gör det möjligt för utvecklare att snabbt och kostnadseffektivt komma ut på marknaden. Den förprogrammerade BLE-stacken och flera tillämpningsexempel för BLE utgör en programmeringsmall för anpassade projekt där GATT-innehåll enkelt kan infogas.
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.




