Szybkie i ekonomiczne dodawanie technologii Bluetooth 5.3 do projektów brzegowych Internetu rzeczy (IoT)

Przez: Jens Wallmann

Przekazane przez: DigiKey's European Editors

Presja konkurencyjna wymaga od deweloperów urządzeń Internetu rzeczy (IoT) szybkiego wprowadzania nowych i innowacyjnych produktów przy jednoczesnym obniżeniu kosztów i zapewnieniu niezawodnej, bezpiecznej komunikacji małej mocy. Tradycyjne inteligentne węzły końcowe Internetu rzeczy (IoT) składają się z mikrokontrolera (MCU) obsługującego przetwarzanie brzegowe oraz bezprzewodowego układu scalonego zapewniającego łączność. Problemy pojawiają się, gdy zespołom projektowym brakuje umiejętności w dziedzinie częstotliwości radiowych (RF), wymaganych dla opracowania skutecznego rozwiązania.

Aby ukończyć, certyfikować i terminowo wdrożyć projekty bezprzewodowego Internetu rzeczy (IoT) do produkcji seryjnej, deweloperzy muszą usprawnić procesy rozwojowe. Jednym ze sposobów na zwiększenie sprawności procesu rozwojowego jest użycie mikrokontrolera MCU niskiej mocy ze zintegrowanym interfejsem bezprzewodowym Bluetooth Low Energy (BLE).

W niniejszym artykule przedstawiono serię mikrokontrolerów MCU ultraniskiej mocy STM32WBA52 firmy STMicroelectronics i sposób, w jaki deweloperzy mogą wykorzystać płytkę ewaluacyjną BLE, narzędzia rozwojowe i przykłady aplikacji, aby szybko wdrożyć projekt bezprzewodowy BLE 5.3. Artykuł pokrótce przedstawia programowanie i oprzewodowanie mikrokontrolera MCU.

Energooszczędny bezprzewodowy mikrokontroler MCU o wysokim poziomie zabezpieczeń

Mikrokontrolery MCU z serii STM32WBA52 posiadają certyfikat BLE 5.3 i stanowią ekonomiczne rozwiązanie, które umożliwia początkującym deweloperom szybkie dodawanie komunikacji bezprzewodowej do urządzeń. Wspomniane mikrokontrolery bazują na rdzeniu Arm® Cortex®-M33 z zegarem 100MHz i technologią TrustZone, zapewniają wysoki poziom bezpieczeństwa, chronią dane i własność intelektualną (IP), a także zapobiegają atakom hakerskim i klonowaniu urządzeń.

Bezprzewodowy mikrokontroler MCU STM32WBA52CEU6 zawiera 512kB pamięci flash i 96kB statycznej pamięci RAM (SRAM), natomiast jego wariant STM32WBA52CGU6 oferuje 1MB pamięci flash i 128kB pamięci SRAM. Ilustracja 1 przedstawia zakres funkcjonalny układu scalonego w obudowie 48 UFQFN. Maksymalna liczba 20 pojemnościowych kanałów dotykowych umożliwia działanie hermetycznie zamkniętych urządzeń (nie są wymagane żadne klucze mechaniczne).

Schemat blokowo-funkcjonalny mikrokontrolera STM32WBA52 firmy STMicroelectronicsIlustracja 1: schemat blokowo-funkcjonalny układu STM32WBA52 przedstawia zintegrowane radio BLE 5.3, pamięci Flash i SRAM oraz obsługę zabezpieczeń. (Źródło ilustracji: STMicroelectronics)

Rozbudowany ekosystem STM32Cube umożliwia wdrażanie i programowanie aplikacji BLE. Zawiera on środowisko rozwojowe STM32CubeIDE, a także takie narzędzia, jak generator kodu i konfigurator urządzeń peryferyjnych STM32CubeMX, tester działania STM32CubeMonitorRF oraz desktopowe i chmurowe wersje STM32Cube.AI przygotowane pod kątem sztucznej inteligencji (AI). Pasująca płytka ewaluacyjna NUCLEO-WBA52CG upraszcza prototypowanie i przyspiesza walidację z użyciem wielu przykładowych aplikacji BLE i dostępnego bezpłatnie kodu źródłowego.

Bezpieczeństwo urządzeń i danych

Linia produktów STM32WBA52 jest zgodna z normami zabezpieczeń Internetu rzeczy (IoT) i spełnia wymagania poziomu 3 architektury zabezpieczeń platformy (PSA) Arm® oraz poziomu 3 wg normy oceny zabezpieczeń platformy Internetu rzeczy (SESIP3). Cyberochronę uzupełnia program zabezpieczeń PSA oparty na izolacji zabezpieczeń, ochronie pamięci, ochronie przed nieautoryzowaną ingerencją oraz rdzeniu Cortex-M33 mikrokontrolerów MCU z architekturą TrustZone Arm. Zaufane oprogramowanie układowe dla procesora Arm Cortex-M (TF-M) jest zgodne ze stanowiącą normę branżową strukturą zabezpieczeń z certyfikacją architektury zabezpieczeń platformy (PSA), z niezmienialnym systemem Root of Trust w architekturze zabezpieczeń platformy (PSA), a także zapewnia funkcję bezpiecznego uruchamiania i bezpiecznej aktualizacji oprogramowania układowego (X-CUBE-SBSFU), kryptografii, bezpiecznego przechowywania danych oraz atestacji czasu wykonywania.

Zintegrowane radio skraca do minimum wykaz materiałów (BOM)

Zintegrowany moduł radiowy ultraniskiej mocy posiada moc wyjściową RF +10dBm. Umożliwia niezawodną komunikację na bliskie odległości (BLE 5.3) i duże odległości (Long Range) z szybkością przesyłu danych do 2Mbps. Tryb niskiej mocy z głębokim czuwaniem zmniejsza ogólną moc elektryczną, gdy komunikacja radiowa jest aktywna. Mikrokontrolery MCU STM32WBA mogą obsługiwać maksymalnie 20 jednoczesnych połączeń.

Charakterystyka elektryczna modułu radiowego:

  • Nadajniko-odbiornik częstotliwości radiowych (RF) 2,4GHz obsługujący BLE 5,3
  • Czułość odbioru (RX): -96dBm (BLE przy 1Mbps)
  • Programowana moc wyjściowa do +10dBm z krokiem co 1dB
  • Zintegrowany symetryzator

Mniejsza bateria dzięki wysokosprawnemu zarządzaniu energią

Mikrokontrolery MCU STM32WBA52 wykorzystują wiele energooszczędnych technologii, takich jak opracowany przez firmę STMicroelectronics bezpośredni dostęp do pamięci o niskim poborze mocy (LPDMA) i elastyczne tryby oszczędzania energii z krótkimi czasami wybudzania. Wszystkie te funkcje mogą łącznie zmniejszyć pobór mocy mikrokontrolera MCU nawet o 90%, co przekłada się na znacznie mniejszą baterię lub dłuższy czas jej pracy.

Parametry elektryczne funkcji FlexPowerControl:

  • Zasilanie od 1,71 do 3,6V
  • Tryb czuwania 140nA (16 wtyków wybudzania)
  • Tryb czuwania 200nA z zegarem czasu rzeczywistego (RTC)
  • Tryb czuwania 2,4μA z 64kB pamięci SRAM
  • Tryb zatrzymania 16,3μA z 64kB pamięci SRAM
  • Tryb pracy 45μA/MHz przy 3,3V
  • Urządzenie radiowe: odbiór (Rx) 7,4mA i nadawanie (Tx) przy 0dBm 10,6mA

Ponadto technologia Bluetooth 5.3 oferuje szybsze przełączanie między cyklami pracy z niskim i wysokim obciążeniem, dzięki czemu jest bardziej energooszczędna w porównaniu z poprzednimi wersjami.

Architektura stosu Bluetooth i pakietów danych

Jednordzeniowe mikrokontrolery MCU Arm Cortex-M33 w urządzeniach STM32WBA52 zaprojektowano z myślą o tworzeniu oprogramowania układowego aplikacji, w tym profili i usług na stosie BLE (kontroler i host). Mikrokontrolery MCU przetwarzają przepływ danych ze zintegrowanego modułu radiowego w najniższej warstwie fizycznej (PHY) do ogólnego profilu atrybutów (GATT) i ogólnego profilu dostępu (GAP) (ilustracja 2). Ogólny profil dostępu (GAP) definiuje anonsowanie i połączenia oraz zarządza nimi, podczas gdy ogólny profil atrybutów (GATT) definiuje wymianę danych wejścia-wyjścia oraz zarządza nią.

Ilustracja przedstawiająca mikrokontrolery MCU przetwarzające przepływ danych z warstwy fizycznej (PHY) radia do ogólnego profilu atrybutów (GATT) i ogólnego profilu dostępu (GAP)Ilustracja 2: mikrokontrolery MCU przetwarzające przepływ danych z warstwy fizycznej (PHY) radia do ogólnego profilu atrybutów (GATT) i ogólnego profilu dostępu (GAP). (Źródło ilustracji: STMicroelectronics)

BLE wysyła pakiety danych, które są zdefiniowane jako stała struktura ramki sekwencji bitowej. Długość obszaru danych użytkownika może zmieniać się dynamicznie w przedziale od 27 do 251 bajtów.

Przykłady aplikacji BLE

Encyklopedia internetowa STMicro-Wiki dla mikrokontrolerów MCU STM32WBA zawiera kilka przykładowych aplikacji dla różnych ról Bluetooth, w tym:

  • Rozgłaszanie: BLE_Beacon
  • Czujnik: BLE_HealthThermometer,BLE_HeartRate
  • Mostek: BLE_SerialCom
  • Router: BLE_p2pRouter
  • Dane: BLE_DataThroughput, BLE_p2pServer & Multi Slave BLE_p2pClient
  • Monitor RF: BLE_TransparentMode,
  • Bezprzewodowa aktualizacja oprogramowania układowego: BLE_Fuota

Dopasowując własny projekt BLE, projektanci urządzeń i programiści mogą flashować skompilowane pliki binarne z odpowiedniego katalogu projektu GitHub na płytkę NUCLEO i nawiązać połączenie Bluetooth ze smartfonem lub komputerem stacjonarnym. Wymagane oprogramowanie programatora, STM32CubeProg, umożliwia odczyt, zapis i weryfikację pamięci urządzenia zarówno za pośrednictwem interfejsu debugowania, jak i interfejsu programu ładującego.

Uruchamianie przykładowej aplikacji BLE „Health Thermometer Sensor”

„Health Thermometer Profile” (HTP) to profil o niskim zużyciu energii oparty na ogólnym profilu dostępu (GAP), zdefiniowany przez organizację Bluetooth Special Interest Group (SIG). Łączy on składniki „Health Thermometer Collector” oraz „Health Thermometer Sensor”, umożliwiając łączenie i wymianę danych w różnych aplikacjach (ilustracja 3).

Ilustracja przedstawiająca komunikację BLE między płytką NUCLEO a smartfonem (kliknij, aby powiększyć)Ilustracja 3: komunikacja BLE pomiędzy płytką NUCLEO działającą jako czujnik/serwer i smartfonem działającym jako kolektor/klient. (Źródło ilustracji: STMicroelectronics)

Health Thermometer Sensor:

  • Mierzy temperaturę i prezentuje ją za pośrednictwem składnika „Health Thermometer Service”
  • Zawiera składnik „Device Information Service”, identyfikowany przez zdalne urządzenie
  • Jest serwerem ogólnego profilu atrybutów (GATT)

Health Thermometer Collector:

  • Uzyskuje dostęp do informacji ujawnianych przez składnik „Health Thermometer Sensor” i ma możliwość ich wyświetlenia użytkownikowi końcowemu lub zapisania w pamięci nieulotnej do późniejszej analizy
  • Jest klientem ogólnego profilu atrybutów (GATT)

Po sflashowaniu pliku binarnego Health Thermometer do mikrokontrolera MCU firmy NUCLEO, deweloper musi wykonać następujące czynności, aby uruchomić przykładową aplikację BLE:

Korzystanie z aplikacji na smartfony

  1. Zainstaluj ST BLE Toolbox na smartfonie. Aplikacja służy do interakcji z urządzeniami ST BLE oraz ich debugowania.
  2. Włącz zasilanie płytki STM32WBA NUCLEO z sflashowaną aplikacją „Health Thermometer”.
  3. Włącz Bluetooth (BT) w smartfonie i przeprowadź skanowanie w poszukiwaniu urządzeń BT dostępnych w aplikacji. Wybierz „Health Thermometer” i nawiąż połączenie.

Przy użyciu interfejsu przeglądarki sieci Web

  1. Zapewnij kompatybilność z przeglądarkami:
    • na komputerze stacjonarnym: Chrome, Edge lub Opera
    • na smartfonie: Chrome na Androida
  2. Włącz zasilanie płytki STM32WBA NUCLEO z sflashowaną aplikacją „Health Thermometer”.
  3. Aktywuj Bluetooth w komputerze.
  4. Otwórz stronę internetową https://applible.github.io/Web_Bluetooth_App_WBA/ w przeglądarce.
  5. Kliknij przycisk nawiązywania połączenia u góry strony internetowej, a następnie wybierz HT_xx z listy urządzeń i kliknij przycisk parowania. Urządzenie jest teraz podłączone.
  6. Kliknij „Health Thermometer”, aby wyświetlić interfejs.

Tabela 1 opisuje strukturę usług składnika „Health Thermometer Sensor”. Poszczególne cechy i usługi odróżnia uniwersalny unikalny identyfikator (UUID) o długości 128 bitów.

Usługa Charakterystyka Właściwość UUID Rozmiar
Health Thermometer Service 0x1809
Pomiar temperatury Wskazanie 0x2A1C 13
Typ temperatury Odczyt 0x2A1D 1
Temperatura pośrednia Powiadomienie 0x2A1E 13
Interwał pomiarowy Odczyt, zapis, wskazanie 0x2A21 2
Device Information Service 0x180A
Ciąg znaków z nazwą producenta Odczyt 0x2A29 32
Ciąg znaków z numerem modelu Odczyt 0x2A24 32
Identyfikator systemu Odczyt 0x2A23 8

Tabela 1: usługi ogólnego profilu atrybutów (GATT) i ich identyfikatory UUID dla ogólnego profilu dostępu (GAP) składnika „Health Thermometer Sensor”. (Źródło ilustracji: STMicroelectronics)

Poniższa sekwencja JavaScript z: GitHub pokazuje, w jaki sposób interfejs przeglądarki internetowej filtruje różne charakterystyki przepustowości danych ogólnego profilu atrybutów (GATT) (listing 1).


Skopiuj
[...]

// 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: sekwencja JavaScript filtrująca różne charakterystyki przepustowości ogólnego profilu atrybutów (GATT) z tabeli 1. (Źródło listingu: GitHub, STMicroelectronics)

Śledzenie procesów stosu BLE

Urządzenie NUCLEO-WBA52CG zawiera wewnątrzukładowy debugger i programator ST-LINK/V3 obsługujący sterownik wirtualnego portu COM STM32 do komunikacji z komputerem PC za pośrednictwem interfejsu szeregowego. Każdy terminal programowy może otworzyć ten port komunikacji szeregowej, aby wyświetlić krótkie komunikaty tekstowe, generowane w kodzie przez funkcję APP_DBG_MSG.

Śledzenie w projekcie musi być włączone w pliku app_conf.h

#define CFG_DEBUG_APP_TRACE   (1)

Funkcja śledzenia jest również dostępna w aplikacji na smartfony „SE BLE Toolbox” na karcie <Application Log>.

Programowanie aplikacji BLE 5.3

Na potrzeby programowania mikrokontrolerów MCU STM32WBA52 firma STM przygotowała pakiet STM32CubeWBA-Package, składający się z warstwy abstrakcji sprzętowej (HAL), interfejsów programowania aplikacji (API) niskiej warstwy oraz stosów CMSIS, systemu plików, systemu operacyjnego czasu rzeczywistego (RTOS), stosów BLE/802.15.4, Thread i Zigbee, a także przykładów działających na płytkach STMicroelectronics.

Każda przykładowa aplikacja NUCLEO-WBA52CG BLE obejmuje konfiguracje struktury projektu dla wszystkich trzech środowisk rozwojowych (IDE), takich jak IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM oraz STM32CubeIDE.

W przypadku przykładu „Health Thermometer" tylko określone pliki z drzewa katalogowego projektu generują usługi ogólnego profilu atrybutów (GATT) (ramka na ilustracji 4 po lewej). Obie procedury, „Health Thermometer Service” (hts) oraz „Device Information Service” (dis) z tabeli 1 działają równolegle (u dołu po prawej ilustracji 4).

Diagram przedstawiający, możliwość dodawania przez programistów własnych treści ogólnego profilu atrybutów (GATT) do plików z kodem ramkowym (kliknij, aby powiększyć)Ilustracja 4: programiści mogą dodawać własne treści ogólnego profilu atrybutów (GATT) do plików z kodem ramkowym (po lewej). Wspomniane pliki generują usługi ogólnego profilu atrybutów (GATT) (po prawej). (Źródło ilustracji: STMicroelectronics)

Programiści mogą używać kodu źródłowego do własnych projektów i rozszerzać go o treści ogólnego profilu atrybutów (GATT) w miejscu oznaczonym ciągami USER CODE BEGIN (POCZĄTEK KODU UŻYTKOWNIKA) / USER CODE END (KONIEC KODU UŻYTKOWNIKA) (listing 2). Sekwencja inicjalizacji z pliku hts.c generuje charakterystykę ogólnego profilu atrybutów (GATT) pomiaru temperatury (TEMM), noszącą identyfikator UUID 0x2A1C.

Skopiuj
[...]
 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: sekwencja inicjalizacji z pliku hts.c generuje charakterystykę pomiaru temperatury (TEMM) ogólnego profilu atrybutów (GATT). (Źródło ilustracji: GitHub, STMicroelectronics)

Wymagania dotyczące komponentów zewnętrznych

Bezprzewodowy mikrokontroler MCU STM32WBA52 do podstawowej pracy z funkcją Bluetooth wymaga tylko kilku komponentów zewnętrznych. Należą do nich kondensatory napięcia zasilającego, oscylator krystaliczny, antena z dopasowaniem impedancji i filtr harmonicznych (ilustracja 5).

Diagram przedstawiający terminal RF STM32WBA52 firmy STMicroelectronics (kliknij, aby powiększyć)Ilustracja 5: w przypadku technologii Bluetooth terminal STM32WBA52 łączy się z siecią dopasowania impedancji, filtrem harmonicznych i anteną. (Źródło ilustracji: STMicroelectronics)

Podsumowanie

Aby utrzymać konkurencyjność na szybko rozwijającym się rynku, deweloperzy bezprzewodowych urządzeń Internetu rzeczy (IoT) muszą skrócić cykle projektowania i obniżyć koszty. Jednak projektowanie urządzeń na częstotliwości radiowe (RF) jest trudne. Mikrokontroler MCU STM32WBA52 ze zintegrowanym interfejsem BLE 5.3 pozwala deweloperom na szybkie i ekonomiczne wprowadzanie produktów na rynek. Wstępnie zaprogramowany stos BLE i kilka przykładowych aplikacji BLE tworzą szablon programowania dla niestandardowych projektów, do którego można łatwo wprowadzać własne treści ogólnego profilu atrybutów (GATT).

DigiKey logo

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.

Informacje o autorze

Jens Wallmann

Jens Wallmann

Jens Wallmann is a freelancing editor and contributes to electronics publications, both print and online. As an electrical engineer (communications engineering) and a trained industrial electronic engineer he has more than 25 years in electronics development with a focus on measuring technology, automotive electronics, process industry and Radio Frequency.

Informacje o wydawcy

DigiKey's European Editors