Arducam Pico4ML TinyML – zestaw rozwojowy z mikrokontrolerem RP2040

Prezentacja możliwości zestawu rozwojowego Arducam Pico4ML TinyML z mikrokontrolerem RP2040 wyposażonym w dwa rdzenie ARM Cortex-M0+ o taktowaniu 133 MHz oraz pamięć RAM 264 kB. Na płytce znajdują się także kamera QVGA, wyświetlacz LCD oraz układ IMU i mikrofon. Zestaw oferuje duże możliwości implementacji algorytmów uczenia maszynowego i sztucznej inteligencji.

Mikrokontrolery Raspberry Pi RP2040 cieszą się coraz większą popularnością. Wynika to z niskiej ceny układu, dużych możliwości, a także marki producenta, który zapewnia wysoki poziom wsparcia technicznego. Premiera układów miała miejsce wraz z premierą płytki rozwojowej Raspberry Pi Pico umożliwiającej łatwe programowanie układów i tworzenie projektów wykorzystujących RP2040. Tym niemniej od jakiegoś czasu układy są już dostępne w sprzedaży detalicznej, co pozwala na zaprojektowanie własnej płytki stosownie do potrzeb aplikacji.

Zgodnie z przewidywaniami, po premierze Raspberry Pi Pico na rynku pojawiły się kolejne płytki rozwojowe z mikrokontrolerem RP2040. Jednym z najciekawszych produktów jest płytka Pico4ML, zaprojektowana i wyprodukowana przez firmę ArduCAM. W porównaniu do modułu Pico cechującego się raczej oszczędnym wyposażeniem, Pico4ML zawiera kilka interesujących układów peryferyjnych.

Mikrokontroler RP2040

Jak wspomniano, sercem modułu jest mikrokontroler RP2040. Układ zawiera dwa rdzenie ARM Cortex-M0+ o taktowaniu do 133 MHz. Wbudowana pamięć SRAM ma pojemność 264 kB. Dodatkowo układ obsługuje zewnętrzną pamięć Flash do 16 MB przez interfejs QSPI. Mikrokontroler oferuje 30 wyprowadzeń GPIO, z czego cztery mogą służyć jako wejście przetwornika analogowo-cyfrowego o rozdzielczości 12 bitów i częstotliwości próbkowania 0,5 MSa/s. Oprócz tego układ ma standardowe układy peryferyjne do komunikacji za pomocą I2C, SPI, UART, PWM itd. RP2040 oferuje także komunikację za pośrednictwem szyny USB 1.1 w trybie Host lub Device.

Płytka zawiera także miniaturowy moduł kamery HiMax HM01B0. Jest to energooszczędny, monochromatyczny czujnik obrazu CMOS przeznaczony do aplikacji wizji maszynowej, takich jak wykrywanie gestów, światła otoczenia, odległości oraz identyfikacji obiektów. Sensor oferuje rozdzielczość 320×320 pikseli, ale może też pracować z oknem 320×240 z odświeżaniem 60 FPS. Obsługuje również tryb binning w rozdzielczości 2×2 i z odświeżaniem 120 FPS. Dane są przesyłane do RP2040 przez interfejs 1-bitowy.

Kolejnym elementem płytki jest wyświetlacz LCD o przekątnej 0,96 cala. Rozdzielczość ekranu to 160 x 80 pikseli. Wyświetlacz działa pod kontrolą sterownika ST7735 i komunikuje się za pomocą interfejsu SPI. Ekran może służyć do podglądu obrazu z kamery lub wypisania rezultatów obliczeń w modelach uczenia maszynowego pracujących na RP2040.

Rys. 1. Wyświetlacz OLED na płytce ArduCAM Pico4ML

Pozostałe elementy

Na płytce zamontowano także sensor inercyjny (IMU) ICM-20948 oraz mikrofon MEMS ADAU7002. Czujnik ruchu zawiera 3-osiowy żyroskop, 3 osiowy akcelerometr oraz 3-osiowy kompas. Dodatkowo ma wbudowany procesor DMP (Digital Motion Processor) umożliwiający przetwarzanie danych dotyczących ruchu układu. Z kolei mikrofon komunikuje się z mikrokontrolerem za pomocą sygnału PDM. Wyjściowa częstotliwość próbkowania wynosi od 4 kHz do 96 kHz. Te elementy mogą służyć do zbudowania systemów rozpoznawania dźwięków/mowy oraz śledzenia ruchu.

Moduł Pico4ML zawiera także port microUSB do zasilania oraz programowania układu. Obecne są także diody LED oraz dwa przyciski: BOOT oraz RUN. Dostępne jest także złącze szpilkowe z wyprowadzonymi pinami mikrokontrolera. Złącze to jest w pełni zgodne ze złączem na płytce Raspberry Pi Pico. Także 3-pinowe złącze SWD jest takie samo jak na Pico. Płytka ma wymiary 51 x 21 mm – również takie same jak Raspberry Pi Pico. Jednym słowem moduł ArduCAM jest dokładnym zamiennikiem Pico z dodatkowymi elementami.

Rys. 2. Rozkład wyprowadzeń ArduCAM Pico4ML

Rys. 3. ArduCAM Pico 4ML oraz Raspberry Pi Pico

W zestawie z modułem znajduje się także przewód microUSB z przyciskiem włączającym lub wyłączającym zasilanie. Projekt jest w pełni otwarty i na stronie produktu dostępne są kody źródłowe, pliki projektowe oraz schematy. Pozwala to na zapoznanie się z projektem, użycie elementów projektu w innym układzie lub własne modyfikacje.

Przykłady producenta

Już sama nazwa modułu wskazuje, że jest on przeznaczony do aplikacji wykorzystujących uczenie maszynowe. Producent przygotował trzy przykłady demonstracyjne prezentujące możliwości Pico4ML w tym zakresie. Są to:

  • Wykrywanie słowa kluczowego za pomocą mikrofonu,
  • „Magiczna różczka” – wykrywanie gestów za pomocą modułu IMU,
  • Wykrywanie obecności człowieka w kamerze

Wszystkie trzy zawierają wytrenowany model uczenia maszynowego, który umożliwia interpretację danych z odpowiedniego czujnika oraz wykrycie odpowiedniego wzorca ruchu, dźwięku lub obrazu. Pliki z kodem oraz modelem w formacie uf2 są dostępne na stronie https://github.com/ArduCAM/pico-tflmicro/tree/main/bin. Aby wgrać je do pamięci mikrokontrolera należy podczas podłączania płytki do komputera przytrzymać wciśnięty przycisk BOOT, a następnie wgrać plik do pamięci modułu.

Programowanie modułu

Płytka ArduCAM Pico4ML jest programowana w dokładnie ten sam sposób, co Raspberry Pi Pico. Oznacza to, że można użyć pakietu Pico SDK przygotowanego przez Raspberry Pi. Do projektowania kodu służy środowisko Visual Studio Code. Jako debuggera SWD można użyć zewnętrznego programatora z tą opcją lub dzięki oprogramowaniu picoprobe drugiej płytki z RP2040. Moduł można programować z komputera PC z systemem Windows, MacOS lub Linux, a także minikomputera Raspberry Pi. Pakiet SDK umożliwia programowanie za pomocą języków C/C++ oraz Python.

Pełny opis instalacji oprogramowania oraz dokumentacja pakietu SDK znajduje się na stronie https://www.raspberrypi.org/documentation/rp2040/getting-started/. W skondensowanej formie umieściliśmy ją także w artykule Płytka Raspberry Pi Pico z mikrokontrolerem Raspberry Pi RP2040 na naszym portalu.

Wszystkie przykłady oraz modele przygotowano z użyciem biblioteki TensorFlow. Jest to bardzo popularna biblioteka powszechnie stosowana w aplikacjach wykorzystujących uczenie maszynowe i sztuczną inteligencję. Pakietu można używać na wielu różnych platformach: procesorach, mikrokontrolerach, GPU, a także na wyspecjalizowanych jednostkach TPU. W związku z tym każdy użytkownik modułu Pico4ML może bez problemu zbudować i wytrenować własny model oraz użyć go na mikrokontrolerze RP2040.

Biblioteka, kody przykładów oraz dokumentacja znajduje się na portalu github: https://github.com/ArduCAM/pico-tflmicro/

Podsumowanie

Moduł ArduCAM Pico4ML to płytka rozwojowa z mikrokontrolerem RP2040. Jest to produkt podobny do Raspberry Pi Pico, ale z dodanymi rozmaitymi peryferiami, takimi jak ekran OLED, moduł kamery oraz czujniki MEMS. Płytka jest przystosowana do aplikacji wykorzystujących algorytmy uczenia maszynowego, a producent przygotował oprogramowanie do tworzenia własnych modeli. Zachowuje także pełną kompatybilność z Raspberry Pi Pico.

Płytka ArduCAM Pico4ML jest dostępna w ofercie Kamami.pl

O autorze