Slik legger du raskt og kostnadseffektivt til Bluetooth 5.3 til Edge IoT-design
Bidrag fra DigiKey's European Editors
2023-11-29
Steinhard konkurranse legger press på utviklere av IoT-enheter (tingenes internett / Internet of Things), for å kunne introdusere raskt nye og innovative produkter – samtidig som de reduserer kostnadene og sikrer robust, lavt energiforbruk og sikker kommunikasjon. Tradisjonelle intelligente IoT-endenoder omfatter en mikrokontrollerenhet (MCU) for å muliggjøre kantbehandling (edge / inngangspunkt-behandling) og en trådløs IC for tilkobling. Problemer oppstår når et designteam mangler RF-ferdighetene (radiofrekvens-ferdighetene) som kreves for en effektiv løsning.
Utviklere må gjøre utviklingsprosessen mer effektiv for å fullføre, sertifisere og flytte de trådløse IoT-konstruksjonene til volumproduksjon i tide. En måte å øke effektiviteten i utviklingsprosessen på er å bruke en lavenergi-MCU med et integrert trådløst lavenergi-Bluetooth-grensesnitt (ble).
Denne artikkelen introduserer MCU-serien STM32WBA52 med ultralavt energiforbruk fraSTMicroelectronics, og viser hvordan utviklere kan bruke et BLE-evalueringskorte, utviklingsverktøy og utrustningseksempler for å få en BLE 5.3 trådløs design opp og kjøre raskt. En kort titt på programmering og MCU-kabling er også med.
Strømsparende trådløs MCU med høyt sikkerhetsnivå
STM32WBA52 MCU-serien er sertifisert for BLE 5.3, og er en kostnadseffektiv løsning som gjør det mulig for nybegynnere å raskt legge til trådløs kommunikasjon til enhetene sine. Basert på Arm® Cortex®-M33-kjernen med en 100 megahertz (MHz) klokke og TrustZone-teknologi, gir disse mikrokontrollerne et høyt sikkerhetsnivå, beskytter data og immaterielle rettigheter (IP), og forhindrer hacking og enhetskloning.
Mens den trådløse MCU-en STM32WBA52CEU6 har 512 kilobyte (Kbyte) flashminne og 96 Kbyte statisk RAM (SRAM), tilbyr STM32WBA52CGU6-varianten 1 megabyte (Mbyte) flashminne og 128 Kbyte SRAM. Figur 1 viser funksjonsomfanget til IC-en i en 48 UFQFN-kapsling. I tillegg muliggjør opptil 20 kapasitive berøringskanaler drift av hermetisk forseglede enheter (ingen mekaniske nøkler er nødvendig).
Figur 1: Skjema for blokkobling av STM32WBA52 viser den integrerte BLE 5.3-radioen, flash og SRAM, og sikkerhetsstøtte. (Bildekilde: STMicroelectronics)
Et funksjonsrikt STM32Cube-økosystem støtter implementeringen og programmeringen av BLE-applikasjonen. Den inkluderer STM32CubeIDE-utviklingsmiljøet, samt verktøy som STM32CubeMX perifer konfigurator og kodegenerator, STM32CubeMonitorRF-ytelsestesteren og STM32Cube.AI-skrivebords- og skyversjoner for kunstig intelligens (AI). Et matchende evalueringskort, NUCLEO-WBA52CG, forenkler prototyping og akselererer validering med mange BLE-eksempleapplikasjoner og fritt tilgjengelig kildekode.
Enhets- og datasikkerhet
Produktserien STM32WBA52 er i samsvar med IoT-sikkerhetsstandardene Platform Security Arm (PSA) Certified Level 3 og Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). Cyberbeskyttelse forbedres av PSA-sikkerhetsprogrammet basert på sikkerhetsisolasjon, minnebeskyttelse, sabotasjebeskyttelse og MCU-enes Cortex-M33 med Arm TrustZone-arkitektur. Trusted Firmware for Arm Cortex-M (TF-M) er i samsvar med bransjestandarden PSA Certified Security Framework med PSA immutable Root of Trust (RoT), inkludert sikker oppstart og sikker firmwareoppdatering (X-CUBE-SBSFU), kryptografi, sikker lagring og kjøretidssertifisering.
Integrert radio minimerer bom
Den integrerte radiomodulen med ultralavt energiforbruk (ultralav effekt) leverer +10 desibel referert til 1 milliwatt (mW) (dBm) RF-utgangseffekt. Den muliggjør pålitelig kommunikasjon over korte avstander (BLE 5.3) og lange avstander (Long Range) med datahastigheter på opptil 2 megabit per sekund (Mbps). En dyp hvilemodus med lavt strømforbruk reduserer den totale elektriske strømmen når radiokommunikasjonen er aktiv. STM32WBA MCU-er kan støtte opptil 20 samtidige tilkoblinger.
Elektriske ytelsesegenskaper til radiomodulen:
- 2,4 gigahertz (GHz) RF-transceiver som støtter BLE 5.3
- RX-følsomhet: -96 dBm (BLE ved 1 Mbps)
- Programmerbar utgangseffekt opp til +10 dBm, i trinn på 1 dB
- Integrert balun
Mindre batteri på grunn av svært virkningsfull energistyring
STM32WBA52 MCU-er har mange energibesparende teknologier, inkludert STMicroelectronics LPDMA (Low Power Direct Memory Access) og fleksible energibesparende tilstander med raske oppvåkningstider. Til sammen kan disse funksjonene redusere MCU-strømforbruket med opptil 90 %, noe som betyr et betydelig mindre batteri eller lengre batterilevetid.
Elektriske ytelsesfunksjoner i FlexPowerControl:
- 1,71 til 3,6 volt strømforsyning
- 140 nanoampere (nA) standby-modus (16 vekkepinner)
- 200 nA standby-modus med sanntidsklokke (RTC)
- 2,4 mikroampere (μA) standby-modus med 64 Kbyte SRAM
- 16,3 μA stoppmodus med 64 Kbyte SRAM
- 45 μA/MHz driftsmodus ved 3,3 volt
- Radio: Rx 7,4 milliampere (mA) / Tx @ 0 dBm 10,6 mA
I tillegg tilbyr Bluetooth 5.3 raskere veksling mellom lav og høy driftssyklus, noe som gjør den mer energieffektiv enn tidligere versjoner.
Arkitektur av Bluetooth-stakken og datapakker
Arm Cortex-M33 MCU-er med én kjerne i STM32WBA52 er utformet for utvikling av firmware for applikasjonen, inkludert profiler og tjenester på ble -stakken (kontroller og vert). MCU-ene behandler datastrømmen fra den integrerte RF-modulen ved det laveste fysiske laget (PHY) til den generiske attributtprofilen (GATT) og den generiske tilgangsprofilen (GAP) (figur 2). GAP definerer og administrerer reklame og tilkobling, mens GATT definerer og administrerer inn/ut datautveksling.
Figur 2: MCU-ene behandler datastrømmen fra radioen PHY til GATT og GAP. (Bildekilde: STMicroelectronics)
BLE sender datapakker som er definert som en fast rammestruktur av en bitsekvens. Lengden på brukerdataområdet kan variere dynamisk fra 27 til 251 byte.
BLE-applikasjonseksempler
Nettleksikonet,STMicro-Wiki for STM32WBA MCUer, inneholder flere applikasjonseksempler for forskjellige Bluetooth-roller, inkludert:
- Annonse: BLE_Beacon
- Sensor: BLE_HealthThermometer,BLE_HeartRate
- Bro: BLE_SerialCom
- Ruter: BLE_p2pRouter
- Data: BLE_DataThroughput, BLE_p2pServer & Multi Slave BLE_p2pClient
- RF-monitor: BLE_TransparentMode,
- Firmwareoppdateringer over luften: BLE_Fuota
Ved å matche sitt eget BLE-prosjekt kan enhetsdesignere og programmerere flashe den kompilerte binære filen fra den tilsvarende GitHub-prosjektkatalogen TIL Nucleo-kortet og starte Bluetooth-tilkoblingen til en smarttelefon eller stasjonær PC. Den nødvendige programmeringsprogramvaren, STM32CubeProg, gir lesing, skriving og verifisering av enhetsminne gjennom både feilsøkingsgrensesnittet og oppstartslastergrensesnittet.
Kjøre BLE-eksempel «Tilstand-termometersensor»
Helsetermometerprofilen (HTP) er en GAP-basert lavenergiprofil som er definert av Bluetooth-SIG (Special Interest Group). Den kombinerer en helsetermometersamler og en helsetermometersensor for å koble til og utveksle data i forskjellige applikasjoner (figur 3).
Figur 3: BLE-kommunikasjon mellom Nucleo-kortet SOM sensor/server og en smarttelefon som samler/klient. (Bildekilde: STMicroelectronics)
Sensoren for tilstandstermometer:
- Måler temperaturen og eksponerer den via helsetermometertjenesten
- Inneholder enhetsinformasjonstjenesten som skal identifiseres av den eksterne enheten
- Er GATT-serveren
Helsetermometersamleren:
- Får tilgang til informasjonen som eksponeres av helsetermometersensoren og kan vise den til sluttbrukeren eller lagre den i ikke-flyktig minne for senere analyse
- Er GATT-klienten
Etter at den binære filen Health Thermometer er flashet inn i Nucleos MCU, må utvikleren følge de neste trinnene for å kjøre BLE-applikasjonseksemplet:
Bruke smarttelefon-appen
- InstallereST BLE-verktøykasse på en smarttelefon. Appen brukes til å samhandle med og feilsøke ST BLE-enheter.
- Slå på STM32WBA NUCLEO-kortet med Health Thermometer-applikasjonen flashet inn.
- Slå på smarttelefonens Bluetooth (BT) og skann BT-enheter som er tilgjengelige i appen. Velg Helsetermometer og koble til.
Bruke nettlesergrensesnittet
- Sørg for nettleserkompatibilitet:
- på en stasjonær datamaskin: Chrome, Edge eller Opera
- på en smarttelefonenhet: Chrome Android
- Slå på STM32WBA NUCLEO-kortet med Health Thermometer-applikasjonen flashet inn.
- Aktiver Bluetooth på datamaskinen.
- Åpne nettsidenhttps://applible.github.io/Web_Bluetooth_App_WBA/ i nettleseren.
- Klikk på koble til-knappen øverst på nettsiden, velg deretter HT_xx i enhetslisten og klikk på par. Enheten er nå koblet til.
- Klikk på Helsetermometer for å vise grensesnittet.
Tabell 1 beskriver strukturen til tjenestene til Helsetermometersensoren. Den 128-bit lange Universally Unique Identifier (UUID) skiller de individuelle egenskapene og tjenestene.
|
Tabell 1: GATT-tjenester og deres UUID for "Health Thermometer Sensor" GAP. (Bildekilde: STMicroelectronics)
Følgende JavaScript-sekvens fraGitHub viser hvordan nettlesergrensesnittet filtrerer de forskjellige GATT-datagjennomstrømningskarakteristikkene (oppføring 1).
Kopiere
[...]
// 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..");
}
});
[...]
Oppføring 1: Denne JavaScript-sekvensen filtrerer de forskjellige GATT-datagjennomstrømningskarakteristikkene fra tabell 1. (Oppføringskilde: GitHub, STMicroelectronics)
Sporing av BLE-stakkprosessene
NUCLEO-WBA52CG bygger inn ST-LINK/V3 in-circuit debugger og programmerer, og støtter den virtuelle COM-portdriveren STM32 for kommunikasjon med en PC via et serielt grensesnitt. Enhver programvareterminal kan åpne denne serielle kommunikasjonsporten for å vise de korte tekstmeldingene generert i koden av funksjonen APP_DBG_MSG.
Sporene i prosjektet må aktiveres i filen app_conf.h
#define CFG_DEBUG_APP_TRACE (1)
Alternativt tilbyr smarttelefonappen «SE ble Toolbox» en sporingsfunksjon på fanen<Application Log>.
Programmering av BLE 5.3-utrustninger
For programmering av STM32WBA52 MCU-er, har STM satt sammen STM32CubeWBA-pakken som består av et maskinvareabstraksjonslag (Hal), lavlags programmeringsgrensesnitt (API-er) og CMSIS, filsystem, RTOS, ble/802.15.4, tråd- og Zigbee-stakker, samt eksempler som kjører på STMicroelectronics-kort.
Prosjektstrukturoppsett for alle tre utviklingsmiljøer (ide), for eksempel IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM og STM32CubeIDE, er inkludert i hvert NUCLEO-WBA52CG BLE-applikasjonseksempel.
Når det gjelder helsetermometereksemplet, genererer bare spesifikke filer fra prosjektkatalogtreet (ramme i figur 4 til venstre) GATT-tjenestene. De to rutinene, "Health Thermometer Service" (hts) og "Device Information Service" (dis) fra Tabell 1, kjører parallelt (nederst til høyre i figur 4).
Figur 4: Programmerere kan legge til sitt eget GATT-innhold til de innrammede kodefilene (til venstre); disse filene genererer GATT-tjenestene (til høyre). (Bildekilde: STMicroelectronics)
Programmerere kan bruke kildekoden til sine egne prosjekter og utvide den med sitt GATT-innhold i områdene merket med BRUKERKODE BEGIN / BRUKERKODE SLUT (oppføring 2). Initialiseringssekvensen fra filen hts.c genererer GATT-karakteristisk temperaturmåling (TEMM) som bærer UUID 0x2A1C.
Kopiere
[...]
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 */
[...]
}
[...]
Oppføring 2: Initialiseringssekvensen fra filen hts.c genererer GATT-karakteristikken TEMM. (Bildekilde: GitHub, STMicroelectronics)
Krav til eksterne komponenter
STM32WBA52 trådløs MCU krever bare noen få eksterne komponenter for grunnleggende drift med Bluetooth-funksjonalitet. Disse inkluderer kondensatorer for spenningsforsyningen, en krystalloscillator, en trykt kretskortantenne (PCB) med impedansmatching og et harmonisk filter (figur 5).
Figur 5: For Bluetooth kobles RF-terminalen til STM32WBA52 til et impedanstilpassende nettverk, et harmonisk filter og en antenne. (Bildekilde: STMicroelectronics)
Konklusjon
Utviklere av trådløse IoT-enheter må forkorte designsykluser og senke kostnadene for å konkurrere i et raskt utviklende marked. Imidlertid er RF-design utfordrende. STM32WBA52 MCU, med sitt integrerte BLE 5.3-grensesnitt, lar utviklere komme raskt og kostnadseffektivt ut på markedet. Den forhåndsprogrammerte BLE-stakken og flere BLE-applikasjonseksempler danner en programmeringsmal for egendefinerte prosjekter der GATT-innhold enkelt kan settes inn.
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.




