Jste zde

Jak rychle a efektivně přidat Bluetooth 5.3 do Edge IoT

Jednou z možností jak přidat Bluetooth 5.3. do IoT zařízení je použít externí transceiver, ale to sebou nese řadu úskalí, které mohou celý vývoj prodloužit. Výhodnější je použít mikrokontroler, který již v sobě má integrován bezdrátový transceiver a využít všechny dostupné vývojové nástroje a příklady kódu, které lze jednoduše přizpůsobit k obrazu svému.

Inteligentní koncové uzly IoT obsahují výkonný mikrokontroler, který umožňuje zpracování náročných algoritmů pro analýzu sesbíraných dat. Výsledek analýzy se bezdrátově předá uživateli nebo do nadřazeného systému pomocí externího bezdrátového transceiveru. Toto řešení ale není příliš efektivní a tak existují mikrokontrolery, které již mají bezdrátový transceiver přímo integrovaný v sobě. Příkladem je nízkoenergetický mikrokontroler STM32WBA52 s Bluetooth 5.3 od STMicroelectronics. V článku se budeme věnovat programování a zapojení MCU, vývojové desce, příslušným vývojovým nástrojům a rychlému zprovoznění a spuštění celé aplikace.

Úsporný bezdrátový MCU s vysokou úrovní zabezpečení

Řada mikrokontrolerů STM32WBA52 je založena na jádru Arm Cortex-M33 s taktem 100 MHz a technologii TrustZone, která poskytuje vysokou úroveň zabezpečení, chrání data a duševní vlastnictví (IP) a zabraňuje hackování a klonování zařízení. Zatímco bezdrátový MCU STM32WBA52CEU6 má 512 Kbytů flash paměti a 96 Kbytů SRAM, varianta STM32WBA52CGU6 nabízí 1 Mbyte flash paměti a 128 Kbajtů SRAM. Na obrázku 1 je funkční blokové schéma MCU v pouzdře 48 UFQFN. Mikrokontroler je vybaven speciálním blokem pro kapacitní touch, který je schopen obsloužit až 20 dotykových kanálů.

Obrázek 1: Funkční blokové schéma STM32WBA52. (Zdroj obrázku: STMicroelectronics)

Bohatý ekosystém STM32Cube zahrnuje vývojové prostředí STM32CubeIDE, konfigurátor periferií a generátor kódu STM32CubeMX, testovací nástroj STM32CubeMonitorRF a STM32Cube.AI pro umělou inteligenci. K dispozici je vývojová deska NUCLEO-WBA52CG, která značně zjednodušuje vytvoření prototypu, na které lze jednoduše spustit ukázkové BLE aplikace včetně volně dostupného zdrojového kódu.

Zabezpečení zařízení a dat

Produktová řada STM32WBA52 vyhovuje bezpečnostním standardům IoT Platform Security Arm (PSA) Certified Level 3 a Security Evaluation Standard for IoT Platforms Assurance Level 3 (SESIP3). Kybernetická ochrana je vylepšena bezpečnostním programem PSA založeným na bezpečnostní izolaci dat, ochraně paměti, ochraně proti neoprávněné manipulaci a Cortex-M33 MCU s architekturou Arm TrustZone. Trusted Firmware for Arm Cortex-M (TF-M) je v souladu s průmyslovým standardem PSA Certified Security Framework s PSA RoT (Root of Trust), včetně zabezpečeného spouštění a zabezpečené aktualizace firmware X-CUBE-SBSFU, kryptografie, zabezpečení uložiště a atestace za běhu. Atestace je mechanismus, kterým software prokazuje svou identitu.

Integrovaná BLE konektivita

Integrovaný rádiový modul s velmi nízkou spotřebou poskytuje +10 dBm RF výstupní výkon. Umožňuje spolehlivou komunikaci na krátkou vzdálenost BLE 5.3 a na dlouhou vzdálenost (Long Range) s rychlostí přenosu dat až 2 Mbps. MCU STM32WBA podporuje až 20 připojení současně. Režim nízké spotřeby v hlubokém pohotovostním režimu snižuje celkovou elektrickou energii, i když je rádiová komunikace aktivní.

Vlastnosti rádiového modulu:

  • 2,4 GHz RF transceiver podporující BLE 5.3
  • Citlivost RX: -96 dBm (BLE při 1 Mbps)
  • Programovatelný výstupní výkon až +10 dBm v krocích po 1 dB
  • Integrovaný balun

Menší baterie díky vysoce efektivnímu hospodaření s energií

Jednotky MCU STM32WBA52 mají mnoho funkcí pro úsporu energie jako je nízkoenergetický přímí přístup do paměti (LPDMA) a několik flexibilních úsporných režimů s rychlou dobou probuzení. Tyto funkce umožňují snížit spotřebu energie MCU až o 90 %, a to znamená použití výrazně menší baterii nebo její delší výdrž.

Spotřeba MCU při využití FlexPowerControlu:

  • Napájení 1,71 až 3,6 V
  • 140 nA ve standby mode (16 wakeup pinů)
  • Pohotovostní režim 200 nA s hodinami reálného času (RTC)
  • Pohotovostní režim 2,4 μA s 64 Kbytes SRAM
  • Režim zastavení 16,3 μA s 64 Kbytes SRAM
  • Provozní režim 45 μA/MHz při 3,3 V
  • Rádio: Rx 7,4 mA, Tx @ 0 dBm 10,6 mA

Bluetooth 5.3 navíc nabízí rychlejší přepínání mezi nízkým a vysokým zatížením, díky čemuž je energeticky účinnější než předchozí verze.

Architektura stacku Bluetooth a datových paketů

Jádro Arm Cortex-M33 uvnitř STM32WBA52 zpracovává datový tok z integrovaného RF modulu na nejnižší fyzické vrstvě (PHY) do profilu generických atributů (GATT) a generického přístupového profilu (GAP) (obrázek 2). GAP definuje a spravuje Bluetooth advertising a připojení, zatímco GATT definuje a spravuje výměnu dat.

Obrázek 2: MCU zpracovává datový tok z rádiového PHY do GATT a GAP. (Zdroj obrázku: STMicroelectronics)

BLE odesílá datové pakety, které jsou definovány jako pevná rámcová struktura bitové sekvence. Délka oblasti uživatelských dat se může dynamicky měnit od 27 do 251 bajtů.

Příklady aplikací BLE

Online encyklopedie STMicro-Wiki pro MCU STM32WBA obsahuje několik příkladů aplikací pro různé role Bluetooth:

  • 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,
  • Aktualizace firmwaru přes vzduch: BLE_Fuota

Programátoři mohou v souladu se svým projektem BLE nahrát zkompilovaný binární soubor z odpovídajícího adresáře projektu GitHub na desku NUCLEO a zprovoznit připojení Bluetooth k chytrému telefonu nebo stolnímu počítači. Programátorský software STM32CubeProg poskytuje čtení, zápis a ověřování paměti zařízení prostřednictvím rozhraní debug i rozhraní bootloaderu.

Spuštění příkladu BLE „Health Thermometer Sensor“

Nízkoenergetický profil zdravotního teploměru (HTP) je založený na GAP definovaný skupinou Bluetooth Special Interest Group (SIG). Kombinuje Health Thermometer Collector a Health Thermometer Sensor pro připojení a výměnu dat v různých aplikacích (obrázek 3).

Obrázek 3: BLE komunikace mezi deskou NUCLEO jako senzor/server a smartphonem jako kolektor/klient. (Zdroj obrázku: STMicroelectronics)

Health Thermometer Sensor:

  • Měří teplotu a předává ji prostřednictvím služby Health Thermometer Service
  • Obsahuje službu Device Information Service, která má být identifikována vzdáleným zařízením
  • Jedná se o GATT server

Health Thermometer Collector:

  • Přistupuje k informacím odeslaných ze senzoru zdravotního teploměru a může je zobrazit koncovému uživateli nebo je uložit do energeticky nezávislé paměti pro pozdější analýzu
  • Je GATT klientem

Poté, co je binární soubor Health Thermometer nahrán do MCU NUCLEO musí vývojář pro spuštění příkladu aplikace BLE provést následující kroky:

V mobilní aplikaci

  1. Nainstalovat si ST BLE Toolbox do chytrého telefonu. Aplikace se používá k interakci a ladění zařízení ST BLE
  2. Zapnout desku STM32WBA NUCLEO se spuštěnou aplikací Health Thermometer
  3. Zapnout Bluetooth na smartphonu a prohledat BLE zařízení dostupná v aplikaci. Vyberte Health Thermometer a připojit se

Ve webovém prohlížeči

  1. Zajistit kompatibilitu prohlížeče na stolním počítači: Chrome, Edge nebo Opera, na chytrém zařízení: Chrome Android
  2. Zapnout desku STM32WBA NUCLEO se spuštěnou aplikací Health Thermometer
  3. Aktivovat Bluetooth v počítači
  4. Otevřít v prohlížeči webovou stránku https://applible.github.io/Web_Bluetooth_App_WBA/
  5. Kliknout na tlačítko připojit v horní části webové stránky a poté v seznamu zařízení vyberte HT_xx a kliknout na spárovat. Zařízení je nyní připojeno
  6. Kliknout na Health Thermometer a zobrazit rozhraní.

Tabulka 1 popisuje strukturu služeb Health Thermometer Sensor. 128bitový Universally Unique Identifier (UUID) rozlišuje jednotlivé vlastnosti a služby.

Tabulka 1: Služby GATT a jejich UUID pro GAP „Health Thermometer Sensor“. (Zdroj obrázku: STMicroelectronics)

Následující sekvence JavaScriptu z GitHubu ukazuje, jak rozhraní webového prohlížeče filtruje různé charakteristiky datové propustnosti GATT (výpis 1).

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

Výpis 1: Tato sekvence JavaScriptu filtruje různé charakteristiky datové propustnosti GATT z tabulky 1. (Zdroj výpisu: GitHub, STMicroelectronics)

Sledování procesů stacku BLE

NUCLEO-WBA52CG obsahuje in-circuit debugger a programátor ST-LINK/V3, který obsahuje driver virtuálního COM portu STM32 pro komunikaci s PC přes sériové rozhraní. Jakýkoli softwarový terminál může otevřít tento sériový komunikační port a zobrazit krátké textové zprávy generované v kódu funkcí APP_DBG_MSG. Trasování v rámci projektu musí být povoleno v souboru app_conf.h

#define CFG_DEBUG_APP_TRACE

Alternativně nabízí aplikace pro chytré telefony „SE BLE Toolbox“ funkci sledování na kartě <Application Log>.

Programování aplikací BLE 5.3

Pro programování aplikací MCU STM32WBA52 je k dispozici balíček STM32CubeWBA sestávající z vrstvy hardwarové abstrakce (HAL), API rozhraní, CMSIS souborového systému, RTOS, BLE/802.15.4, Thread a Zigbee stacku. Nastavení struktury projektu pro všechna tři vývojová prostředí (IDE) jako je IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM a STM32CubeIDE, jsou součástí každého příkladu aplikace NUCLEO-WBA52CG BLE.

V příkladu Health Thermometer generují služby GATT pouze specifické soubory ze stromu adresářů projektu (frame na obrázku 4 vlevo). Dvě rutiny, "Health Thermometer Service" (hts) a "Device Information Service" (dis) z tabulky 1, běží paralelně (vpravo dole na obrázku 4).

Obrázek 4: Programátoři mohou přidat svůj vlastní obsah GATT do souborů s rámovaným kódem (vlevo); tyto soubory generují služby GATT (vpravo). (Zdroj obrázku: STMicroelectronics)

Programátoři mohou použít zdrojový kód pro své vlastní projekty a rozšířit jej o svůj obsah GATT v oblastech označených USER CODE BEGIN / USER CODE END (Výpis 2). Inicializační sekvence ze souboru hts.c generuje GATT charakteristiku měření teploty (TEMM) nesoucí UUID 0x2A1C.
[...]
 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 */
 [...]
 }
[...]

Výpis 2: Inicializační sekvence ze souboru hts.c generuje GATT charakteristiku TEMM. (Zdroj obrázku: GitHub, STMicroelectronics)

Požadavky na externí komponenty

Bezdrátový MCU STM32WBA52 vyžaduje pouze několik externích komponent. Patří mezi ně kondenzátory, krystalový oscilátor, anténa integrovanou přímo na desce a impedanční přizpůsobení s harmonickým filtrem (obrázek 5).

Obrázek 5: Pro Bluetooth se RF terminál STM32WBA52 připojuje pomocí přizpůsobovacímu obvodu, harmonickému filtru a anténě. (Zdroj obrázku: STMicroelectronics)

Závěr

Vývoj bezdrátového zařízení lze provést pomocí externího transceiveru nebo si zkrátit dobu vývoje mikrokontrolerem STM32WBA52 s integrovaným rozhraním BLE 5.3. Předprogramovaný stack a několik příkladů aplikací BLE tvoří šablonu kódu, který lze jednoduše upravit k obrazu svému.

Článek vyšel v originále na webu DigiKey.com

Hodnocení článku: