Feather nRF52840 Sense – zestaw rozwojowy z mikrokontrolerem nRF52840 oraz czujnikami środowiskowymi

Moduły SoC nRF52 norweskiej firmy Nordic Semiconductor to bardzo częsty wybór w projektach wymagających komunikacji bezprzewodowej i niewielkiego poboru energii. Układy z tej rodziny zawierają dość wydajny rdzeń obliczeniowy ARM Cortex-M4F o taktowaniu 64 MHz, pamięć Flash do 1 MB oraz pamięć RAM do 256 KB. Mają także moduł komunikacji bezprzewodowej w paśmie 2,4 GHz z możliwością obsługi standardów Bluetooth 5.3, BLE, Thread, Zigbee, IEEE 802.15.4 oraz własnych protokołów. Ważne cechy to także szerokie możliwości w zakresie oszczędności energii oraz jednostka kryptograficzna ARM TrustZone CryptoCell. Dobrze więc komponuje się z wymaganiami niewielkich aplikacji IoT w sieciach Bluetooth lub innych w 2,4 GHz, chociaż układy stosowane są w wielu różnych zastosowaniach, np. w myszkach komputerowych.

Na rynku znajduje się dość duża liczba płytek rozwojowych dla układów z rodziny nRF52840. Oczywiście można je znaleźć w ofercie Nordic Semiconductor, ale również firm specjalizujących się w produkcji i sprzedaży różnego rodzaju płytek rozwojowych i modułów rozszerzeniowych. Ja zdecydowałem się opisać jedną z nich – Feather nRF52840 Sense z oferty Adafruit, wyposażoną również w zestaw czujników i innych elementów rozszerzeniowych. Wydaje się być to więc dość wygodne rozwiązanie pod kątem tworzenia prototypów urządzeń brzegowych IoT wykorzystujących sensory środowiskowe.

Rys. 1. Zestaw rozwojowy Feather nRF52840 Sense

Zestaw Feather nRF52840 Sense

Głównym elementem zestawu jest układ SoC Nordic nRF52840. Jest to najwyższy model z serii nRF52. Zawiera pamięci o najwyższych pojemnościach w rodzinie – 1 MB Flash oraz 256 KB RAM. Zawiera także omawiany już zaawansowany moduł radiowy 2,4 GHz z komunikacją Bluetooth w wersji 5.3. Wśród dostępnych interfejsów przewodowych znajdziemy UART, SPI, TWI, PDM, I2S, QSPI, PWM oraz USB 2.0. Moduł zawiera także 12-bitowy przetwornik analogowo-cyfrowy.

Więcej informacji o układzie nRF52840 znajdziesz na stronie producenta.

Układ Nordic nRF52840 zamontowano na płytce jako część modułu radiowego firmy Raytac. Moduł, oprócz samego układu scalonego zawiera także shield ekranujący, antenę w wersji ceramicznej, a także kilka komponentów zewnętrznych m.in. oscyla Ważną zaletą modułu jest fakt, że posiada on certyfikację kilku regionalnych jednostek, m.in. FCC, CE i IC. Interfejsy nRF52840 wyprowadzono na złącze SMD znajdujące się na spodzie modułu i przylutowane do płytki ewaluacyjnej.

Oprócz pamięci wbudowanych w układ scalony, Feather zawiera także pamięć Flash o pojemności komunikującą się przez magistralę QSPI. Tą pamięć można wykorzystać do przechowywania dodatkowych danych lub np. kodu CircuitPython.

Czujniki na płytce Feather nRF52840 Sense

Zestaw rozwojowy zawiera szereg czujników środowiskowych, co oznacza szerokie możliwości w zakresie prototypowania bez konieczności stosowania zewnętrznych peryferiów. Na płytce zamontowano m.in. układ IMU LSM6DS33 zawierający akcelerometr i żyroskop pracujące w trzech osiach. Akcelerometr w każdej osi może wykrywać przyspieszenie w zakresie do ±16 g, natomiast żyroskop mierzy przyspieszenie maksymalnie do ±2000 dps. Ważne cechy układu to bardzo niska konsumpcja prądu, komunikacja za pomocą magistral SPI i I2C, a także wbudowany sensor temperatury.

Płytka zawiera także trójosiowy magnetometr LIS3MDL. On również cechuje się bardzo małym poborem prądu, a zakres pomiarowy (w każdej osi) wynosi maksymalnie 16 gaussów. Pozwala na stosowanie pojedynczych lub ciągłych pomiarów. Dane wychodzące z czujnika mają 16-bitową rozdzielczość. Pozostałe możliwości układu to m.in. generowanie przerwań i funkcja samotestowania.

Kolejnym sensorem jest czujnik temperatury i wilgotności BMP280 firmy Bosch Sensortec. Jest to dość dobry i popularny sensor, np. w zastosowaniach w stacjach pogodowych. Zakresy pomiarowe wynoszą 300…1100 hPa oraz -40…85°C. Czujnik atmosferyczny zachowuje dokładność ok. 1 hPa w najczęściej spotykanych warunkach środowiskowych (950…1050 hPa, 0…+40°C). Pobór prądu wynosi typowo pojedyncze mikroampery, a w trybie uśpienia – jedynie 0,1 µA. Czas pomiaru wynosi 5,5 ms.

Feather nRF52840 Sense zawiera także czujnik wilgotności i temperatury SHT30 firmy Sensirion. Sensor mierzy wilgotność względną w zakresie 0-100% RH oraz temperaturę w zakresie od -40°C do +125°C. Dokładność pomiaru wynosi 3% RH dla wilgotności oraz 0,3°C dla temperatury.

Dość ciekawym elementem platformy jest sensor APDS-9960 z oferty Avago Technologies. Jest to czujnik światła, który może służyć jako detektor gestów, czujnik światła otoczenia, a także czujnik koloru. Zawiera cztery kierunkowe fotodiody, które odczytują odbitą energię światła podczerwonego. Detektory i układy przetwarzania danych są w stanie skonwertować dane o ruchu (prędkość, kierunek, odległość od czujnika) na dane cyfrowe. Pozwala to na odczyt prostych gestów typu góra-dół, ale też bardziej skomplikowanych ruchów. APDS-9960 oferuje także bardzo dużą czułość i bez problemu pracuje w aplikacjach za ciemnymi szybkami.

Ostatnim sensorem na płytce jest mikrofon MEMS MP34DT01-M firmy STMicroelectronics. Mikrofon jest wszechkierunkowy, cechuje się czułością -26 dBFS, maksymalnym ciśnieniem akustycznym 120 dBSPL, a także odstępem sygnału od szumu rzędu 61 dB. Przesyła dane przez standard PDM.

Pozostałe elementy płytki

Do zasilania, programowania układu oraz komunikacji z komputerem służy złącze microUSB. Na złącze szpilkowe wyprowadzono także port SWD umożliwiający debugowanie kodu. Podobnie jak większość płytek rozwojowych z serii Feather, zawiera złącze na baterię LiPo, a także układ pozwalający na ładowanie ogniw (MCP73831). Ostatnim ciekawym elementem płytki jest dioda LED RGB NeoPixel, umożliwiająca cyfrowe ustawienie koloru i jasności świecenia.

Na dłuższych bokach płytki znajduje się złącze rozszerzeniowe do podłączenia dodatkowych modułów. Dodatkowo każde wyprowadzenie czytelnie opisano na płytce. Po przylutowaniu złączy goldpin, moduł można umieścić w płytce stykowej.

Rys. 2. Płytka z widocznym złączem i opisem wyprowadzeń

Programowanie płytki

Pierwszą metodą programowania płytki jest popularne środowisko Arduino. Adafruit dostarcza pakiety obsługi płytek (BSP) dla rodziny Feather z układami nRF52. Instalacja pakietu przebiega w sposób standardowy – należy dodać do źródeł pakietów płytek adres https://www.adafruit.com/package_adafruit_index.json oraz odnaleźć i zainstalować pakiet Adafruit nRF52 by Adafruit.

Moduł można programować również dzięki pakietowi nRF5 SDK przygotowanemu przez inżynierów z Nordic Semiconductor. Jest to pakiet zawierający biblioteki do obsługi wszystkich funkcji i peryferiów układu nRF52840. Pozwala na projektowanie kodu w języku C oraz pracę w środowiskach programistycznych Segger Embedded Studio (SES), Keil µVision, IAR Embedded Workbench, a także środowiskach wykorzystujących kompilator GCC.

Jeszcze jedną opcją jest wykorzystanie języka CircuitPython. Jest on przeznaczony do nauki i prostego programowania mikrokontrolerów. Jest oparty o język Python. Idealnie nadaje się do szybkiego prototypowania urządzeń. Więcej informacji o CircuitPython znajdziesz na stronie: https://learn.adafruit.com/welcome-to-circuitpython

Tradycyjnie Adafruit udostępnia także obszerną dokumentację zawierającą m.in. wyczerpujący opis wszystkich elementów płytki, opis instalacji bibliotek, przykłady aplikacji, opis interfejsów API oraz wiele innych informacji cennych podczas pracy z płytką.

Podsumowanie

Płytka rozwojowa Feather nRF52840 Sense to w mojej opinii dobry wybór do prototypowania aplikacji IoT z komunikacją Bluetooth. Wysokiej klasy układ SoC nRF52840 zapewnia komunikację bezprzewodową, a także moc obliczeniową wystarczającą do obsługi nawet zaawansowanych aplikacji. Szeroki zestaw czujników i elementów dodatkowych pozwala na swobodne projektowanie aplikacji, nawet bez dodawania dodatkowych układów. Z kolei kilka opcji programowania pozwala na tworzenie projektów w różny sposób w zależności od potrzeb i umiejętności.

Płytka Feather nRF52840 Sense jest dostępna w ofercie sklepu internetowego Kamami.pl

O autorze