STM32 w zestawie IoT DISCOVERY

W rodzinie STM32 dostępne są mikrokontrolery o obniżonym poborze mocy, doskonale nadające się do aplikacji mobilnych oraz IoT. Jeden z takich mikrokontrolerów – STM32L475 – został użyty w zestawie ewaluacyjnym B-L475E-IOT01A, który doskonale nadaje się do spełnienia roli węzła komunikacji bezprzewodowej lub terminala IoT.

Prezentację zestawu B-L475E-IOT01A (jego widok przedstawiono na fotografii 1) zaczniemy od omówienia jego wyposażenia sprzętowego. Oprócz niebanalnego mikrokontrolera (niskomocowy Cortex-M4F z 1 MB Flash i 128 kB RAM), zestaw wyposażono w 64 Mb pamięci Flash QSPI, mikrofony MEMS MP34DT01 oraz sensory:

  • wilgotności i temperatury HTS221,
  • 3-osiowy kompas LIS3MDL,
  • sensor MEMS 6DoF LSM6DSL – zintegrowany żyroskop i akcelerometr,
  • sensor ciśnienia LPS22HB,
  • optyczny sensor VL53L0X (laserowa wersja ToF z możliwością optycznej detekcji gestów 3D).
Fot. 1. Wygląd zestawu B-L475E-IOT01A

Duża liczba zintegrowanych sensorów zapewnia użytkownikowi duża liczbę danych, które można wysyłać do chmury, przy czym liczba dostępnych dla użytkownika kanałów komunikacyjnych jest także spora. Zestaw wyposażono bowiem w:

  • interfejs Bluetooth V4.1 (SPBTLE-RF),
  • interfejs Wi-Fi (ISM43362-M3G-L44) przystosowany do pracy w sieciach 802.11 b/g/n,
  • transceiver radiowy na pasmo 868 MHz (SPSGRF-868).

Dodatkowym elementem wyposażonym w komunikację radiową jest pamięć NFC z rodziny M24SR, do której zawartości użytkownik ma dostęp poprzez interfejs I2C lub drogą radiową – za pomocą zintegrowanej z PCB anteny.

Swoją budową zestaw B-L475E-IOT01A przypomina zestawy DISCOVERY z STM32, dlatego nie budzą zdziwienia dwa przyciski (reset i dla aplikacji użytkownika), zintegrowany programator-debugger ST-Link/V2-1 (zgodny z mbed.org, wyposażony także funkcjonalność vCOM), a także złącza dla shieldów Arduino Uno v3. Nowością wdrażaną przez STMicoroelectronics od pewnego czasu są złącza dla modułów Digilent Pmod, za pomocą których można wygodnie dołączać do zestawu ekspandery zgodne z tym standardem.

Rozmieszczenie najważniejszych elementów zestawu B-L475E-IOT01A pokazano na rysunku 2.

Rys. 2. Rozmieszczenie elementów zestawu B-L475E-IOT01A

Ważnym elementem prezentowanego zestawu jest oprogramowanie, które w przypadku aplikacji IoT bazuje na obsłudze protokołów sieciowych, umożliwiających wymianę danych z aplikacjami „chmurowymi”. Oprogramowanie dla prezentowanego zestawu (X-CUBE-AWS) zostało zoptymalizowane dla usług chmurowych firmy Amazon (AWS – Amazon Web Services), budowa tego oprogramowania została pokazana na rysunku 3. Oprogramowanie w wersji oryginalnej zajmuje 200 kB pamięci Flash i 41 kB RAM, dzięki czemu – przy dostępnych zasobach mikrokontrolera STM32L475 – użytkownik ma bardzo komfortowe środowisko sprzętowe do implementowania własnych rozwiązań IoT.

Rys. 3. Budowa firmware X-CUBE-AWS

Oprogramowanie udostępnione przez firmę STMicroelectronics jest zgodne z STM32CUBE i bazuje na HAL dla STM32, popularnym stosie LwIP, protokole bezpieczeństwa mbedTLS, a całość „spina” system operacyjny FreeRTOS. W zależności od upodobań, użytkownik może do przygotowania własnej aplikacji IoT użyć jednego z następujących środowisk: IAR Embedded Workbench for ARM (EWARM) w wersji >7.80.4, Keil Microcontroller Development Kit (MDK-ARM) lub dostępnego bezpłatnie środowiska System Workbench for STM32 (wersja >1.14.0).

Zestaw prezentowany w artykule charakteryzuje się dużymi możliwościami i dobrym wyposażeniem, w praktyce jedynym ograniczeniem funkcjonalnym jest „przywiązanie” poprzez oprogramowanie go do chmury firmy Amazon. Podczas prób laboratoryjnych z zestawem okazało się, że pewne ilości danych można transferować do chmury AWS bezpłatnie, ale wymóg podawania w chwili rejestracji danych karty kredytowej może podziałać – i działa! – zniechęcająco. Miejmy nadzieję, że producent zestawu przygotuje wersję oprogramowania umożliwiająca korzystanie z jednej z kilku chmur dostępnych bezpłatnie, zwłaszcza na początek praktycznych zabaw z IoT ma to dla większości użytkowników znaczenie.

Andrzej Gawryluk