Schnelles und kostengünstiges Hinzufügen von Bluetooth 5.3 zu Edge-IoT-Designs
Zur Verfügung gestellt von Europäische Fachredakteure von DigiKey
2023-11-29
Der unerbittliche Wettbewerb setzt Entwicklungsteams von Komponenten für das Internet der Dinge (IoT) unter Druck, rasch neue und innovative Produkte einzuführen und gleichzeitig die Kosten zu senken und eine robuste, energiesparende und sichere Kommunikation zu gewährleisten. Herkömmliche intelligente IoT-Endknoten bestehen aus einer Mikrocontroller-Einheit (MCU), die die Verarbeitung am Netzwerkrand (Edge) ermöglicht, und einem Wireless-IC für die Vernetzung. Probleme entstehen, wenn Entwicklungsteams nicht über die für eine effektive Lösung erforderlichen HF-Kenntnisse verfügen.
Um IoT-Funkdesigns rechtzeitig fertigzustellen, zu zertifizieren und in die Serienproduktion zu überführen, müssen Entwicklungsteams den Entwicklungsprozess effizienter gestalten. Eine Möglichkeit, die Effizienz des Entwicklungsprozesses zu steigern, ist die Verwendung einer stromsparenden MCU mit integrierter Funkschnittstelle für Bluetooth Low Energy (BLE).
Dieser Artikel stellt die MCU-Serie STM32WBA52 von STMicroelectronics vor und zeigt, wie ein BLE-Evaluierungsboard, Entwicklungswerkzeuge und Anwendungsbeispiele verwendet werden können, um ein BLE5.3-Funkdesign schnell zum Laufen zu bringen. Ein kurzer Einblick in die Programmierung und die Verdrahtung der MCU ist ebenfalls enthalten.
Stromsparende Wireless-MCU mit hoher Sicherheitsstufe
Die für BLE 5.3 zertifizierte MCU-Serie STM32WBA52 ist eine kosteneffiziente Lösung, die es auch unerfahrenen Entwicklungsteams ermöglicht, ihre Geräte schnell um drahtlose Kommunikation zu erweitern. Basierend auf dem Arm®-Cortex®-M33-Kern mit einer Taktfrequenz von 100 Megahertz (MHz) und der TrustZone-Technologie bieten diese Mikrocontroller ein hohes Maß an Sicherheit, schützen Daten und geistiges Eigentum (IP) und verhindern Hacks und das Klonen von Geräten.
Während die Wireless-MCU STM32WBA52CEU6 über 512 Kilobyte (KByte) Flash-Speicher und 96 KByte statischen RAM (SRAM) verfügt, bietet die Variante STM32WBA52CGU6 1 Megabyte (MByte) Flash-Speicher und 128 KByte SRAM. Abbildung 1 zeigt den Funktionsumfang des ICs in einem 48-UFQFN-Gehäuse. Bis zu 20 kapazitive Touch-Kanäle ermöglichen die Bedienung von hermetisch geschlossenen Geräten (keine mechanischen Tasten erforderlich).
Abbildung 1: Ein funktionales Blockdiagramm des STM32WBA52 zeigt die integrierte BLE5.3-Funkkomponente, Flash und SRAM sowie die Sicherheitsunterstützung. (Bildquelle: STMicroelectronics)
Ein umfangreiches STM32Cube-Ökosystem unterstützt die Implementierung und Programmierung der BLE-Anwendung. Es umfasst die Entwicklungsumgebung STM32CubeIDE sowie Tools wie den Peripheriekonfigurator und Codegenerator STM32CubeMX, den Performance-Tester STM32CubeMonitorRF und die Desktop- und Cloud-Versionen von STM32Cube.AI für künstliche Intelligenz (AI). Ein passendes Evaluierungsboard, das NUCLEO-WBA52CG, vereinfacht das Prototyping und beschleunigt die Validierung mit vielen BLE-Beispielanwendungen und frei verfügbarem Quellcode.
Geräte- und Datensicherheit
Die Produktlinie STM32WBA52 erfüllt die IoT-Sicherheitsstandards Platform Security Arm (PSA) Certified Level 3 und Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). Der Cyber-Schutz wird durch das PSA-Sicherheitsprogramm verbessert, das auf Sicherheitsisolierung, Speicherschutz, Manipulationsschutz und dem Cortex-M33 der MCUs mit Arm-TrustZone-Architektur basiert. Die Trusted Firmware für Arm Cortex-M (TF-M) entspricht dem Industriestandard PSA Certified Security Framework mit PSA-unveränderlicher Root of Trust (RoT), einschließlich sicherem Booten und sicherem Firmware-Update (X-CUBE-SBSFU), Kryptografie, sicherer Speicherung und Laufzeitbescheinigung.
Integrierte Funkkomponente minimiert die BOM
Das integrierte Funkmodul mit ultraniedriger Leistungsaufnahme liefert +10 Dezibel bezogen auf 1 Milliwatt (mW) (dBm) HF-Ausgangsleistung. Es ermöglicht eine zuverlässige Kommunikation über kurze Distanzen (BLE 5.3) und große Entfernungen (Long Range) mit Datenraten von bis zu 2 Megabit pro Sekunde (Mbit/s). Ein Low-Power-Modus im tiefen Standby-Modus reduziert den Stromverbrauch, wenn die Funkkommunikation aktiv ist. Die MCUs STM32WBA können bis zu 20 gleichzeitige Verbindungen unterstützen.
Elektrische Leistungsmerkmale des Funkmoduls:
- 2.4 Gigahertz (GHz) HF-Transceiver mit Unterstützung für BLE 5.3
- RX-Empfindlichkeit: -96 dBm (BLE mit 1 Mbit/s) 1 dBm
- Programmierbare Ausgangsleistung, bis zu +10 dBm in 1 dB Schritten
- Integriertes Symmetrierglied
Kleinere Batterie durch hocheffizientes Energiemanagement
Die STM32WBA52-MCUs verfügen über zahlreiche energiesparende Technologien, einschließlich des Low-Power-Direktspeicherzugriffs (LPDMA) von STMicroelectronics und flexibler Energiesparzustände mit schnellen Aufwachzeiten. Zusammen können diese Funktionen den Stromverbrauch der MCU um bis zu 90 % senken, was sich in einer deutlich kleineren Batterie oder einer längeren Batterielebensdauer niederschlägt.
Elektrische Leistungsmerkmale von FlexPowerControl:
- Versorgung mit 1,71 bis 3,6 V
- 140 Nanoampere (nA) Standby-Modus (16 Wakeup-Pins)
- 200 nA Standby-Modus mit Echtzeituhr (RTC)
- 2,4 Mikroampere (μA) Standby-Modus mit 64 KByte SRAM
- 16,3 μA Stoppmodus mit 64 Kbytes SRAM
- 45 μA/MHz Betriebsmodus bei 3,3 Volt
- Funk: Rx 7,4 Milliampere (mA) / Tx bei 0 dBm 10,6 mA
Darüber hinaus bietet Bluetooth 5.3 einen schnelleren Wechsel zwischen niedrigem und hohem Tastverhältnis und ist damit energieeffizienter als frühere Versionen.
Architektur des Bluetooth-Stacks und der Datenpakete
Die Single-Core Arm Cortex-M33 MCUs im STM32WBA52 sind für die Entwicklung von Anwendungs-Firmware, einschließlich Profilen und Diensten auf dem BLE-Stack (Controller und Host), konzipiert. Die MCUs verarbeiten den Datenfluss vom integrierten HF-Modul auf der untersten physikalischen Schicht (PHY) zum generischen Attributprofil (GATT) und generischen Zugangsprofil (GAP) (Abbildung 2). Das GAP definiert und verwaltet die Werbung und die Verbindung, während das GATT den ein- und ausgehenden Datenaustausch definiert und verwaltet.
Abbildung 2: Die MCUs verarbeiten den Datenfluss vom Funk-PHY zum GATT und GAP. (Bildquelle: STMicroelectronics)
BLE sendet Datenpakete, die als feste Rahmenstruktur einer Bitfolge definiert sind. Die Länge des Nutzdatenbereichs kann dynamisch von 27 bis 251 Byte variieren.
BLE-Anwendungsbeispiele
Die Online-Enzyklopädie STMicro-Wiki für STM32WBA-MCUs enthält mehrere Anwendungsbeispiele für verschiedene Bluetooth-Rollen, darunter:
- Anzeige: BLE_Beacon
- Sensor: BBLE_HealthThermometer, BLE_HeartRate
- Brücke: BLE_SerialCom
- Router: BLE_p2pRouter
- Daten: BLE_DataThroughput, BLE_p2pServer & Multi Slave BLE_p2pClient
- RF-Monitor: BLE_TransparentMode,
- Firmware Update Over The Air: BLE_Fuota
Passend zu ihrem eigenen BLE-Projekt können Entwicklungsteams und Programmierteams das kompilierte Binary aus dem entsprechenden GitHub-Projektverzeichnis auf das NUCLEO-Board flashen und die Bluetooth-Verbindung zu einem Smartphone oder Desktop-PC starten. Die erforderliche Programmiersoftware STM32CubeProg ermöglicht das Lesen, Schreiben und Verifizieren des Gerätespeichers sowohl über die Debug-Schnittstelle als auch über die Bootloader-Schnittstelle.
Ausführen des BLE-Beispiels „Health Thermometer Sensor“
Das Health Thermometer Profile (HTP) ist ein GAP-basiertes Niedrigenergieprofil, das von der Bluetooth Special Interest Group (SIG) definiert wurde. Es kombiniert einen Health Thermometer Collector und einen Health Thermometer Sensor zur Verbindung und zum Austausch von Daten in verschiedenen Anwendungen (Abbildung 3).
Abbildung 3: BLE-Kommunikation zwischen dem NUCLEO-Board als Sensor/Server und einem Smartphone als Collector/Client. (Bildquelle: STMicroelectronics)
Der Health Thermometer Sensor:
- Misst die Temperatur und gibt sie über den Health Thermometer Service aus
- Enthält den Device Information Service, der vom entfernten Gerät identifiziert werden soll
- Ist der GATT-Server
Der Health Thermometer Collector:
- Greift auf die vom Health Thermometer Sensor gelieferten Informationen zu und kann sie dem Endbenutzer anzeigen oder in einem nichtflüchtigen Speicher für eine spätere Analyse speichern
- Ist der GATT-Client
Nachdem die Binärdatei des Health Thermometer in die MCU des NUCLEO geflasht wurde, müssen die folgenden Schritte ausgeführt werden, um das BLE-Anwendungsbeispiel zu starten:
Verwendung der Smartphone-App
- Installieren der ST BLE Toolbox auf einem Smartphone. Die App dient der Interaktion mit ST-BLE-Geräten und der Fehlersuche.
- Einschalten des NUCLEO-Boards STM32WBA mit der geladenen Anwendung Health Thermometer.
- Einschalten von Bluetooth (BT) auf dem Smartphone ein und scannen der verfügbaren BT-Geräte. Wählen Sie Health Thermometer und stellen Sie eine Verbindung her.
Verwendung der Webbrowser-Schnittstelle
- Stellen Sie die Browser-Kompatibilität sicher:
- auf einem Desktop-Computer: Chrome, Edge oder Opera
- auf einem Smartphone-Gerät: Chrome Android
- Einschalten des NUCLEO-Boards STM32WBA mit der geladenen Anwendung Health Thermometer.
- Aktivieren Sie Bluetooth auf dem Computer.
- Öffnen Sie die Webseite https://applible.github.io/Web_Bluetooth_App_WBA/ im Browser.
- Klicken Sie auf die Schaltfläche „Verbinden“ oben auf der Webseite, wählen Sie dann HT_xx in der Geräteliste aus und klicken Sie auf „Paarung“. Das Gerät ist nun verbunden.
- Klicken Sie auf Health Thermometer, um die Schnittstelle anzuzeigen.
Tabelle 1 beschreibt die Struktur der Dienste des Health Thermometer Sensor. Der 128 Bit lange Universally Unique Identifier (UUID) unterscheidet die einzelnen Merkmale und Dienste.
|
Tabelle 1: GATT-Dienste und ihre UUID für das GAP „Health Thermometer Sensor“. (Bildquelle: STMicroelectronics)
Die folgende JavaScript-Sequenz von GitHub zeigt, wie die Webbrowser-Schnittstelle die verschiedenen GATT-Datendurchsatzmerkmale filtert (Listing 1).
Kopieren
[...]
// 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: Diese JavaScript-Sequenz filtert die verschiedenen GATT-Datendurchsatzmerkmale aus Tabelle 1. (Quelle: GitHub, STMicroelectronics)
Verfolgung der BLE-Stack-Prozesse
Das NUCLEO-WBA52CG enthält den In-Circuit-Debugger und Programmierer ST-LINK/V3 und unterstützt den STM32-Virtual-COM-Port-Treiber für die Kommunikation mit einem PC über eine serielle Schnittstelle. Jedes Software-Terminal kann diese serielle Kommunikationsschnittstelle öffnen, um die im Code durch die Funktion APP_DBG_MSG erzeugten kurzen Textmeldungen anzuzeigen.
Die Traces im Projekt müssen in der Datei app_conf.h aktiviert werden
#define CFG_DEBUG_APP_TRACE (1)
Alternativ bietet die Smartphone-App „SE BLE Toolbox“ auf dem Reiter <Application Log> eine Trace-Funktion.
Programmierung von BLE-5.3-Anwendungen
Für die Programmierung der STM32WBA52-MCUs hat STM das STM32CubeWBA-Paket zusammengestellt, das aus einer Hardware-Abstraktionsschicht (HAL), Low-Layer-Anwendungsprogrammierschnittstellen (APIs) und CMSIS-, Dateisystem-, RTOS-, BLE/802.15.4-, Thread- und Zigbee-Stacks sowie aus Beispielen besteht, die auf STMicroelectronics-Boards laufen.
Projektstruktur-Setups für alle drei Entwicklungsumgebungen (IDEs), wie IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM und STM32CubeIDE, sind in jedem NUCLEO-WBA52CG BLE Anwendungsbeispiel enthalten.
Im Fall des Beispiels Health Thermometer erzeugen nur bestimmte Dateien aus dem Projektverzeichnisbaum (Rahmen in Abbildung 4 links) die GATT-Dienste. Die beiden Routinen „Health Thermometer Service“ (hts) und „Device Information Service“ (dis) aus Tabelle 1 laufen parallel (unten rechts in Abbildung 4).
Abbildung 4: Programmierer können ihre eigenen GATT-Inhalte zu den gerahmten Codedateien hinzufügen (links); diese Dateien generieren die GATT-Dienste (rechts). (Bildquelle: STMicroelectronics)
Programmierer können den Quellcode für ihre eigenen Projekte verwenden und ihn in den mit USER CODE BEGIN / USER CODE END gekennzeichneten Bereichen um ihre GATT-Inhalte erweitern (Listing 2). Die Initialisierungssequenz aus der Datei hts.c erzeugt das GATT-Merkmal Temperaturmessung (TEMM) mit der UUID 0x2A1C.
Kopieren
[...]
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: Die Initialisierungssequenz aus der Datei hts.c erzeugt das GATT-Merkmal TEMM. (Bildquelle: GitHub, STMicroelectronics)
Anforderungen an externe Komponenten
Die Wireless-MCU STM32WBA52 benötigt nur wenige externe Komponenten für den Basisbetrieb mit Bluetooth-Funktionalität. Dazu gehören Kondensatoren für die Spannungsversorgung, ein Quarzoszillator, eine Leiterplattenantenne mit Impedanzanpassung und ein Oberwellenfilter (Abbildung 5).
Abbildung 5: Für Bluetooth wird der HF-Anschluss des STM32WBA52 mit einem Impedanzanpassungsnetzwerk, einem Oberwellenfilter und einer Antenne verbunden. (Bildquelle: STMicroelectronics)
Fazit
Bei der Entwicklung von drahtlosen IoT-Geräten müssen die Entwicklungszyklen verkürzt und die Kosten gesenkt werden, um auf einem sich schnell entwickelnden Markt wettbewerbsfähig zu sein. Das HF-Design ist jedoch eine Herausforderung. Die MCU STM32WBA52 mit integrierter BLE5.3-Schnittstelle ermöglicht es, schnell und kostengünstig auf den Markt zu kommen. Der vorprogrammierte BLE-Stack und mehrere BLE-Anwendungsbeispiele bilden eine Programmiervorlage für eigene Projekte, in die GATT-Inhalte einfach eingefügt werden können.

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.