Sådan tilføjer du hurtigt og omkostningseffektivt Bluetooth 5.3 til Edge IoT-designs
Bidraget af DigiKey's European Editors
2023-11-29
Ubarmhjertig konkurrence lægger pres på udviklere af IoT-enheder (Internet of Things) for hurtigt at introducere nye og innovative produkter og samtidig reducere omkostningerne og sikre robust, strømbesparende og sikker kommunikation. Traditionelle intelligente IoT-slutnoder består af en mikrocontroller-enhed (MCU), der muliggør edge-processering, og en trådløs IC til konnektivitet. Der opstår problemer, når designteams mangler de radiofrekvensfærdigheder (RF), der er nødvendige for en effektiv løsning.
For at færdiggøre, certificere og flytte deres trådløse IoT-designs til volumenproduktion til tiden, er udviklerne nødt til at gøre udviklingsprocessen mere effektiv. En måde at øge effektiviteten i udviklingsprocessen på er ved at bruge en MCU med lavt strømforbrug og integreret trådløs Bluetooth Low Energy (BLE)-grænseflade.
Denne artikel introducerer STM32WBA52 MCU-serien med ultralavt strømforbrug fra STMicroelectronics og viser, hvordan udviklere kan bruge et BLE-evalueringskort, udviklingsværktøjer og applikationseksempler til hurtigt at få et trådløst BLE 5.3-design op at køre. Et kort kig på programmering og MCU-kabling er inkluderet.
Strømbesparende trådløs MCU med højt sikkerhedsniveau
STM32WBA52 MCU-serien er certificeret til BLE 5.3 og er en omkostningseffektiv løsning, der gør det muligt for uerfarne udviklere hurtigt at tilføje trådløs kommunikation til deres enheder. Baseret på Arm® Cortex®-M33-kernen med en 100 megahertz (MHz) clock og TrustZone-teknologi giver disse mikrocontrollere et højt sikkerhedsniveau, beskytter data og intellektuel ejendom (IP) og forhindrer hacks og kloning af enheder.
Mens den trådløse MCU STM32WBA52CEU6 har 512 kilobyte (Kbytes) flashhukommelse og 96 Kbytes statisk RAM (SRAM), har STM32WBA52CGU6-varianten 1 megabyte (Mbyte) flashhukommelse og 128 Kbytes SRAM. Figur 1 viser IC'ens funktionelle omfang i en 48 UFQFN-pakke. I øvrigt gør op til 20 kapacitive touch-kanaler det muligt at betjene hermetisk forseglede enheder (ingen mekaniske taster er nødvendige).
Figur 1: Et funktionelt blokdiagram af STM32WBA52 viser den integrerede BLE 5.3-radio, flash og SRAM samt sikkerhedsunderstøttelse. (Billedkilde: STMicroelectronics)
Et rigt STM32Cube-økosystem understøtter implementeringen og programmeringen af BLE-applikationen. Det omfatter udviklingsmiljøet STM32CubeIDE samt værktøjer som STM32CubeMX periferikonfigurator og kodegenerator, STM32CubeMonitorRF ydelsestester og STM32Cube.AI desktop- og cloud-versioner til kunstig intelligens (AI). Et matchende evalueringskort, NUCLEO-WBA52CG, forenkler prototyping og fremskynder validering med mange BLE-eksempelapplikationer og frit tilgængelig kildekode.
Enheds- og datasikkerhed
STM32WBA52-produktlinjen overholder IoT-sikkerhedsstandarderne Platform Security Arm (PSA) Certified Level 3 og Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). Cyberbeskyttelsen forbedres af PSA-sikkerhedsprogrammet, der er baseret på sikkerhedsisolering, hukommelsesbeskyttelse, manipulationsbeskyttelse og MCU'ernes Cortex-M33 med Arm TrustZone-arkitektur. Trusted Firmware for Arm Cortex-M (TF-M) overholder industristandarden PSA Certified Security Framework med PSA immutable Root of Trust (RoT), herunder sikker boot og sikker firmwareopdatering (X-CUBE-SBSFU), kryptografi, sikker lagring og run-time attestation.
Integreret radio minimerer styklisten
Det integrerede ultralave effektradiomodul leverer +10 decibel i forhold til 1 milliwatt (mW) (dBm) RF-udgangseffekt. Det muliggør pålidelig kommunikation over korte afstande (BLE 5.3) og lange afstande (Long Range) med datahastigheder på op til 2 megabit pr. sekund (Mbps). En dyb standby-tilstand med lavt strømforbrug reducerer den samlede elektriske effekt, når radiokommunikationen er aktiv. STM32WBA MCU'erne kan understøtte op til 20 samtidige forbindelser.
Radiomodulets elektriske egenskaber:
- 2,4 gigahertz (GHz) RF-transceiver, der understøtter BLE 5.3
- RX-følsomhed: -96 dBm (BLE ved 1 Mbps)
- Programmerbar udgangseffekt, op til +10 dBm i 1 dB-trin
- Integreret balun
Mindre batteri takket være højeffektiv energistyring
STM32WBA52 MCU'erne har mange energibesparende teknologier, herunder STMicroelectronics' LPDMA (Low Power Direct Memory Access) og fleksible strømbesparende tilstande med hurtige opvågningstider. Tilsammen kan disse funktioner reducere MCU'ens strømforbrug med op til 90 %, hvilket betyder et betydeligt mindre batteri eller en længere batterilevetid.
Elektriske egenskaber ved FlexPowerControl:
- 1,71 til 3,6 volt strømforsyning
- 140 nanoampere (nA) standbytilstand (16 opvågningsben)
- 200 nA standbytilstand med realtidsur (RTC)
- 2,4 mikroampere (μA) standbytilstand med 64 Kbytes SRAM
- 16,3 μA stoptilstand med 64 Kbytes SRAM
- 45 μA/MHz driftstilstand ved 3,3 volt
- Radio: Rx 7,4 milliampere (mA) / Tx @ 0 dBm 10,6 mA
Derudover giver Bluetooth 5.3 hurtigere skift mellem lav og høj driftscyklus, hvilket gør det mere energieffektivt end tidligere versioner.
Arkitektur af Bluetooth-stakken og datapakker
Single-core Arm Cortex-M33 MCU'erne i STM32WBA52 er designet til udvikling af applikationsfirmware, herunder profiler og tjenester på BLE-stakken (controller og host). MCU'erne behandler datastrømmen fra det integrerede RF-modul på det laveste fysiske lag (PHY) til den generiske attributprofil (GATT) og den generiske adgangsprofil (GAP) (figur 2). GAP definerer og administrerer annoncering og tilslutning, mens GATT definerer og administrerer ind/ud dataudveksling.
Figur 2: MCU'erne behandler datastrømmen fra radioens PHY til GATT og GAP. (Billedkilde: STMicroelectronics)
BLE sender datapakker, der er defineret som en fast rammestruktur af en bitsekvens. Længden af brugerdataområdet kan variere dynamisk fra 27 til 251 bytes.
Eksempler på BLE-anvendelser
Online-encyklopædien STMicro-Wiki for STM32WBA MCU'er indeholder flere applikationseksempler for forskellige Bluetooth-roller, herunder:
- Annonce: 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-opdatering over-the-air: BLE_Fuota
Når de matcher deres eget BLE-projekt, kan enhedsdesignere og programmører flashe den kompilerede binære fil fra den tilsvarende GitHub-projektmappe til NUCLEO-kortet og starte Bluetooth-forbindelsen til en smartphone eller stationær pc. Den nødvendige programmørsoftware, STM32CubeProg, gør det muligt at læse, skrive og verificere enhedens hukommelse via både debug-interfacet og bootloader-interfacet.
Kørsel af BLE-eksemplet "Health Thermometer Profile"
Health Thermometer Profile (HTP) er en GAP-baseret lavenergiprofil defineret af Bluetooth Special Interest Group (SIG). Den kombinerer en Health Thermometer-kollektor og en Health Thermometer-sensor til at forbinde og udveksle data i forskellige applikationer (figur 3).
Figur 3: BLE-kommunikation mellem NUCLEO-kortet som sensor/server og en smartphone som kollektor/klient. (Billedkilde: STMicroelectronics)
Health Thermometer-sensor:
- Måler temperaturen og eksponerer den via Health Thermometer-tjenesten
- Indeholder enhedens informationstjeneste, der skal identificeres af den eksterne enhed
- Er GATT-serveren
Health Thermometer-kollektor:
- Får adgang til de oplysninger, som Health Thermometer-sensor afslører, og kan vise dem til slutbrugeren eller gemme dem i en ikke-flygtig hukommelse til senere analyse.
- Er GATT-klienten
Når den binære fil til Health Thermometer-sensoren er flashet til NUCLEOs MCU, skal udvikleren følge de næste trin for at køre BLE-applikationseksemplet:
Brug af smartphone-appen
- Installer ST BLE Toolbox på en smartphone. Appen bruges til at interagere med og debugge ST BLE-enheder.
- Tænd for STM32WBA NUCLEO-kortet med Health Thermometer-applikationen flashet ind.
- Tænd for smartphone Bluetooth (BT), og scan BT-enheder, der er tilgængelige i appen. Vælg Health Thermometer, og opret forbindelse.
Brug af webbrowser-grænsefladen
- Sørg for, at browseren er kompatibel:
- på en stationær computer: Chrome, Edge eller Opera
- på en smartphone-enhed: Chrome Android
- Tænd for STM32WBA NUCLEO-kortet med Health Thermometer-applikationen flashet ind.
- Aktivér Bluetooth på computeren.
- Åbn websiden https://applible.github.io/Web_Bluetooth_App_WBA/ i browseren.
- Klik på tilslutningsknappen øverst på websiden, vælg derefter HT_xx på enhedslisten, og klik på par. Enheden er nu tilsluttet.
- Klik på Health Thermometer for at få vist grænsefladen.
Tabel 1 beskriver strukturen af tjenesterne i Health Thermometer-sensoren. Den 128-bit lange Universally Unique Identifier (UUID) skelner mellem de enkelte egenskaber og tjenester.
|
Tabel 1: GATT-tjenester og deres UUID for GAP'en "Health Thermometer Sensor". (Billedkilde: STMicroelectronics)
Følgende JavaScript-sekvens fra GitHub viser, hvordan webbrowsergrænsefladen filtrerer de forskellige GATT-datatransmissionsegenskaber (Listing 1).
Kopi
[...]
// 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..");
}
});
[...]
Listing 1: Denne JavaScript-sekvens filtrerer de forskellige GATT-datagennemstrømningskarakteristika fra tabel 1. (Kilde: GitHub, STMicroelectronics)
Sporing af BLE-stakprocesserne
NUCLEO-WBA52CG indeholder ST-LINK/V3 in-circuit debugger og programmer, der understøtter STM32 virtual COM port driver til kommunikation med en pc via en seriel grænseflade. Enhver softwareterminal kan åbne denne serielle kommunikationsport for at vise de korte tekstbeskeder, der genereres i koden af funktionen APP_DBG_MSG.
Sporene i projektet skal være aktiveret i filen app_conf.h
#define CFG_DEBUG_APP_TRACE (1)
Alternativt tilbyder smartphone-appen "SE BLE Toolbox" en sporingsfunktion på fanen <Application Log>.
Programmering af BLE 5.3-applikationer
Til programmering af STM32WBA52 MCU'er har STM sammensat STM32CubeWBA-pakken, der består af et hardware abstraktionslag (HAL), lav-lags applikationsprogrammeringsgrænseflader (API'er) og CMSIS, filsystem, RTOS, BLE/802.15.4, Thread- og Zigbee-stakke samt eksempler, der kører på STMicroelectronics kort.
Projektstrukturopsætninger til alle tre udviklingsmiljøer (IDE'er), såsom IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM og STM32CubeIDE, er inkluderet i hvert NUCLEO-WBA52CG BLE-applikationseksempel.
I eksemplet med Health Thermometer er det kun specifikke filer fra projektmappetræet (rammen i figur 4 til venstre), der genererer GATT-tjenesterne. De to rutiner, "Health Thermometer Service" (hts) og "Device Information Service" (dis) fra tabel 1, kører parallelt (nederst til højre i figur 4).
Figur 4: Programmører kan tilføje deres eget GATT-indhold til de indrammede kodefiler (til venstre); disse filer genererer GATT-tjenesterne (til højre). (Billedkilde: STMicroelectronics)
Programmører kan bruge kildekoden til deres egne projekter og udvide den med deres GATT-indhold i de områder, der er markeret med USER CODE BEGIN / USER CODE END (Listing 2). Initialiseringssekvensen fra filen hts.c genererer GATT-karakteristikken Temperature Measurement (TEMM) med UUID 0x2A1C.
Kopi
[...]
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 */
[...]
}
[...]
Listing 2: Initialiseringssekvensen fra filen hts.c genererer GATT-karakteristikken TEMM. (Billedkilde: GitHub, STMicroelectronics)
Krav til eksterne komponenter
Den trådløse MCU STM32WBA52 kræver kun få eksterne komponenter til grundlæggende drift med Bluetooth-funktionalitet. Disse omfatter kondensatorer til spændingsforsyningen, en krystaloscillator, en printkortantenne med impedanstilpasning og et harmonisk filter (figur 5).
Figur 5: Til Bluetooth tilsluttes STM32WBA52's RF-terminal til et impedansmatchningsnetværk, et harmonisk filter og en antenne. (Billedkilde: STMicroelectronics)
Konklusion
Udviklere af trådløse IoT-enheder er nødt til at forkorte designcyklusserne og sænke omkostningerne for at kunne konkurrere på et marked i hastig udvikling. Men RF-design er en udfordring. STM32WBA52 MCU med sit integrerede BLE 5.3-interface gør det muligt for udviklere at komme hurtigt og omkostningseffektivt ud på markedet. Den forprogrammerede BLE-stak og flere BLE-applikationseksempler udgør en programmeringsskabelon til brugerdefinerede projekter, hvor GATT-indhold nemt kan indsættes.

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.