Płytka Raspberry Pi Pico z mikrokontrolerem Raspberry Pi RP2040

Fundacja Raspberry Pi jest dobrze znana wszystkim elektronikom dzięki produkcji minikomputerów z rodziny Raspberry Pi. Komputery te powstały głównie w celu edukacji młodych inżynierów, którzy dzięki płytce mogą nauczyć się zasad działania komputerów, obsługi peryferiów, a także współpracy z interfejsami komunikacyjnymi. Duża popularność rozwiązania spowodowała jednak, że komputery te zaczęły być z powodzeniem stosowane także w różnych praktycznych urządzeniach, jak np. biletomaty. Projekt zgromadził również dużą społeczność, co z kolei poskutkowało powstawaniem rozlicznych projektów i bibliotek przeznaczonych na Raspberry Pi.

W dniu dzisiejszym debiutuje produkt, który pozwoli Fundacji Raspberry Pi zaistnieć na zupełnie nowym rynku. Jest to płytka rozwojowa Raspberry Pi Pico z mikrokontrolerem RP2040, również zaprojektowanym i wyprodukowanym przez Raspberry Pi. Moduł ma wymiary 21 x 51 mm i jest skonstruowany w stylu obudowy DIP – przypomina więc płytki Arduino Nano czy STM32 Nucelo-32. Jest od nich jednak nieco dłuższa, a złącze wyprowadzeń zawiera dwa rzędy po 20 pinów.

Płytka Raspberry Pi PicoRys. 1. Płytka Raspberry Pi Pico

Mikrokontroler RP2040

Jak wspomniano, sercem modułu jest mikrokontroler RP2040 produkowany przez Fundację Raspberry Pi. Jest to zarazem pierwszy układ scalony sygnowany przez tą markę. RP2040 zawiera dwa rdzenie ARM Cortex-M0+ o taktowaniu do 133 MHz. Wbudowana pamięć SRAM ma pojemność 264 kB w sześciu niezależnych bankach. Dodatkowo układ oferuje obsługę zewnętrznej pamięci 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 zawiera 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. Mikrokontroler jest umieszczony w obudowie QFN-56 o wymiarach 7×7 mm.

Układ RP2040 zamontowany na Raspberry Pi PicoRys. 2. Układ RP2040 zamontowany na Raspberry Pi Pico

Raspberry Pi Pico, oprócz mikrokontrolera RP2040, zawiera także pamięć Flash o pojemności 2 MB. Złącze microUSB może służyć do zasilania modułu, transmisji danych, a także do programowania pamięci Flash. Dodatkowo, płytkę wyposażono w 3-pinowy port ARM Serial Wire Debug (SWD) służący do programowania i debugowania kodu na mikrokontroler. Na złącze rozszerzeniowe wyprowadzono 26 wielofunkcyjnych pinów GPIO pracujących z poziomem logicznym 3,3 V. Wśród nich 23 może działać tylko cyfrowo, natomiast 3 pozostałe można skonfigurować jako wejścia przetwornika ADC.

Poniżej można obejrzeć rozkład wyprowadzeń płytki Raspberry Pi Pico.

Rozkład wyprowadzeń Raspberry Pi PicoRys. 3. Rozkład wyprowadzeń Raspberry Pi Pico

Wyprowadzenia skonstruowano w taki sposób, że oprócz tradycyjnych otworów umożliwiających montaż złączy szpilkowych, można je też użyć jako złącze krawędziowe SMD. Pozwala to na montaż modułu jako układ sterujący większym systemem.

Raspberry Pi Pico – widok od spodu z widocznymi złączamiRys. 4. Raspberry Pi Pico – widok od spodu z widocznymi złączami

Płytka oferuje także elastyczną architekturę zasilania. Można ją zasilać zarówno ze złącza USB, jak i z zewnętrznych zasilaczy lub baterii.

Programowanie płytki Raspberry Pi Pico

Wraz z płytką Raspberry Pi Pico producent wydał także zestaw narzędzi Pico SDK umożliwiający programowanie mikrokontrolera RP2040. Pakiet zawiera funkcje wysokiego poziomu umożliwiające łatwą obsługę funkcji sprzętowych mikrokontrolera, takich jak wyprowadzenia GPIO, interfejsy UART, SPI czy I2C, przerwania, interfejs USB oraz wiele innych. Zestaw funkcji jest dostępny w języku C/C++ oraz MicroPython – specjalnej implementacji Pythona służącej do programowania mikrokontrolerów.

Oprócz samej biblioteki i pakietu narzędzi Fundacja Raspberry Pi opublikowała także zestaw przykładów prezentujących sposób użycia najważniejszych funkcji układu takich, jak interfejsów układu, timerów, a także podziału pracy pomiędzy dwa rdzenie. Zarówno pakiet Pico SDK, jak i zestaw przykładów są dostępne na portalu github.

Aby rozpocząć pracę z płytką należy wyposażyć się jeszcze w kilka narzędzi. W dalszej części artykułu zaprezentuję sposób instalacji środowiska na komputerze z systemem Windows oraz na Raspberry Pi 4.

Instalacja oprogramowania na systemie Windows

Pakiet Pico SDK wymaga instalacji w systemie Windows zestawu narzędzi do kompilacji projektu, tzw. toolchaina. W jego skład wchodzą:

Instalacja tego ostatniego jest opcjonalna, tym niemniej zalecamy instalację programu. Jak zwykle na systemie Windows, instalator można ściągnąć w postaci pliku wykonywalnego i w prosty sposób zainstalować. Warto podczas instalacji ustawić dołączanie folderu z programem do zmiennej środowiskowej PATH, aby inne programy były w stanie go automatycznie odnaleźć.

Oznaczanie zmiennej PATH podczas instalacji ARM GCCRys. 5. Oznaczanie zmiennej PATH podczas instalacji ARM GCC

Oznaczanie zmiennej PATH podczas instalacji CMakeRys. 6. Oznaczanie zmiennej PATH podczas instalacji CMake

Oznaczanie zmiennej PATH podczas instalacji pakietu PythonRys. 7. Oznaczanie zmiennej PATH podczas instalacji pakietu Python

Następnie należy na stronie Microsoft w zakładce Tools for Visual Studio 2022 pobrać Build Tools for Visual Studio 2022. Po otwarciu instalatora należy zaznaczyć tylko Programowanie aplikacji klasycznych w języku C++.

Rys. 8. Instalacja Build Tools for Visual Studio 2022

Natomiast podczas instalacji pakietu Git polecamy zaznaczyć opcje Use Notepad++ as Git’s default editor, allow Git to be used from third-party tools, Checkout as is, commit as-is, Use Windows’ default console window, a także Enable experimental support for pseudo consoles.

Pobieranie pakietów SDK

Po instalacji wszystkich programów należy pobrać pakiety Pico SDK oraz Pico Examples. Gorąco rekomendujemy użycie w tym celu pakietu Git. Aby to zrobić należy uruchomić konsolę Windowsa – z menu Start należy uruchomić z folderu Visual Studio 2022 program Developer Command Prompt.

W konsoli za pomocą polecenia cd należy przejść do folderu, w którym chcemy umieścić pakiety. Aby pobrać pakiet pico-sdk, należy wykonać polecenie:

Następnie należy wejść do folderu i zainstalować pakiet TinyUSB. Umożliwia on obsługę na RP2040 interfejsu USB. Aby go zainstalować należy wykonać polecenia:

Następnie trzeba pobrać pakiet pico-examples z przykładami na Raspberry Pi Pico. Aby to zrobić, należy wykonać polecenia:

Konfiguracja środowiska Visual Studio Code

Jako środowisko programistyczne dla Raspberry Pi Pico można wykorzystać darmowy program Visual Studio Code. Oprócz wygodnego projektowania kodu umożliwia on także kompilację programu wewnątrz środowiska. Przed użyciem programu należy jednak wykonać kilka kroków konfiguracyjnych.

Przede wszystkim należy zdefiniować zmienną środowiskową PICO_SDK_PATH. W tej zmiennej przechowywana jest ścieżka do pakietu Pico SDK. Aby zdefiniować ścieżkę należy wykonać komendę:

Następnie należy wyłączyć konsolę Windows i ponownie włączyć ją w ten sam sposób (Windows > Visual Studio 2022 > Developer Command Prompt). Pozwoli to na poprawne ustawienie zmiennej środowiskowej.

Aby uruchomić Visual Studio Code należy uruchomić polecenie konsoli

Bardzo ważne, aby uruchomić środowisko właśnie w ten sposób. Jeśli włączymy program z menu start lub ze skrótu na pulpicie, nie zostaną załadowane zmienne środowiskowe, skutkiem czego Visual Studio Code może nie być zdolne do odnalezienia pakietu SDK.

Po uruchomieniu środowiska należy zainstalować rozszerzenie CMake Tools. Należy w tym celu uruchomić menu Extensions (np. za pomocą kombinacji Ctrl + Shift + X), w wyszukiwarce odnaleźć „CMake Tools”, kliknąć na rozszerzenie i nacisnąć przycisk Install.

Ostatnią czynnością jest konfiguracja rozszerzenia CMake Tools. W tym celu trzeba nacisnąć zębatkę w lewym dolnym rogu i wejść w opcję Settings. Następnie należy w zakładce Extensions wejść w Cmake Tools configuration. Tam należy odnaleźć opcję Configure Environment i dodać zmienną PICO_SDK_PATH o wartości ..\..\pico-sdk. Następnie należy odnaleźć opcję Generator i ustawić na NMake Makefiles. Ustawienia są zapisywane automatycznie.

Ustawienie zmiennej PICO_SDK_PATH w opcjach CMake ToolsRys. 9. Ustawienie zmiennej PICO_SDK_PATH w opcjach CMake Tools

Ustawienie generatora koduRys. 10. Ustawienie generatora kodu

Następnie należy otworzyć folder z przykładami pico-examples w Visual Studio Code. Po otwarciu folderu zostaniemy poproszeni o konfigurację projektu. W tym miejscu należy wybrać jako kompilator GCC for arm-none-eabi. Po konfiguracji należy przycisnąć zębatkę z napisem Build na dolnym (niebieskim) panelu. Pozwoli to skompilować wszystkie przykłady i utworzyć pliki binarne w folderze pico-examples/build.

Wgrywanie kodu

Aby wgrać skompilowany kod na płytkę Raspberry Pi Pico należy podłączyć ją do komputera PC przez USB. Podczas podłączania należy przytrzymać przycisk BOOTSEL. Wtedy płytka zostanie zainstalowana jako pamięć przenośna. Na tą pamięć Należy skopiować na nią odpowiedni plik binarny z rozszerzeniem .uf2. Płytka od razu sama restartuje się do trybu normalnej pracy i rozpocznie wykonywanie kodu. Przykładowo kod blink bezpośrednio po skopiowaniu pliku blink.uf2 wyjdzie z trybu programowania i rozpocznie mruganie diodą LED.

Instalacja środowiska na Raspberry Pi

Płytkę rozwojową Raspberry Pi Pico można także programować z minikomputera Raspberry Pi. Aby tego dokonać należy zainstalować wszystkie pakiety i wykonać wszystkie kroki, które opisano powyżej w instrukcji dla systemu Windows. Tym razem jednak mamy do dyspozycji skrypt instalacyjny pico-setup, który wykona automatycznie wszystkie niezbędne kroki. Konkretnie skrypt ten ma za zadanie:

  • Utworzyć katalog pico,
  • Zainstalować wszystkie niezbędne programy i biblioteki (m.in. zestaw narzędzi do kompilacji, a także pakiet tinyUSB),
  • Pobrać pakiety pico-sdk oraz pico-examples,
  • Ustawić zmienną środowiskową PICO_SDK_PATH,
  • Zainstalować i skompilować debugger OpenOCD,
  • Pobrać i zainstalować środowisko Visual Studio Code,
  • Zainstalować wymagane rozszerzenia VS Code,
  • Skonfigurować port UART Raspberry Pi,

Oczywiście wszystkie te kroki można wykonać samodzielnie, po kolei. Wydaje się jednak, że skrypt instalacyjny jest o wiele wygodniejszą opcją.

Instalacja za pomocą skryptu pico-setup

Aby uruchomić skrypt należy go pobrać z serwisu github. Można tego dokonać przy pomocy polecenia:

Następnie należy uruchomić skrypt poleceniem

Gdy skrypt się wykona należy zrestartować komputer, co pozwoli m.in. uruchomić port UART.

Po restarcie można już uruchomić środowisko Visual Studio Code. Skrót do uruchomienia programu znajduje się w menu, w folderze Programowanie.

Po uruchomieniu środowiska można otworzyć folder z przykładami, który znajduje się w katalogu /home/pi/pico/pico-examples. Po kilku sekundach od otwarcia folderu w lewym dolnym rogu powinno pokazać się okienko pop-up z pytaniem czy skonfigurować projekt. Klikamy „Yes” i w górnym menu wybieramy kompilator GCC for arm-none-eabi.

Kompilacja może nie powieść się na Raspberry Pi z pamięcią RAM o pojemności 2 GB lub mniejszej. Zalecamy więc użycie malinki z pamięcią RAM co najmniej 4 GB.

Wybór kompilatora GCC for arm-none-eabiRys. 11. Wybór kompilatora GCC for arm-none-eabi

Aby skompilować wszystkie przykłady należy przycisnąć przycisk Build na dolnym, niebieskim panelu. Kompilator utworzy pliki binarne z programem na mikrokontroler RP2040. Można je załadować do pamięci układu podłączając płytkę do malinki przez USB (z wciśniętym przyciskiem BOOTSEL), a następnie kopiując odpowiedni plik z rozszerzeniem .uf2 do pamięci, podobnie jak dla systemu Windows.

Przykłady pozwalają zrozumieć w jaki sposób pisać kod na mikrokontroler RP2040, od podstawowej obsługi GPIO, poprzez komunikację za pomocą interfejsów I2C, UART czy SPI, aż po bardziej zaawansowane funkcje – obsługę USB czy podział pracy pomiędzy dwa rdzenie. Szczegółowa dokumentacja pakietu SDK dla języków C/C++ oraz MicroPython znajduje się na stronie fundacji.

Ponadto na rynek trafiła także książka Get started with MicroPython on Raspberry Pi Pico stanowiąca kompendium programowania Raspberry Pi Pico w języku MicroPython.

Podsumowanie

Raspberry Pi Pico to pierwsza na rynku płytka z mikrokontrolerem RP2040 spod znaku malinki. Sam mikrokontroler również jest nową konstrukcją, oraz pierwszym na rynku układem zaprojektowanym przez inżynierów z Fundacji Raspberry Pi. Płytka ma znaną już na rynku formę „DIP-Style”, w której wyprowadzenia układu oraz piny zasilania znajdują się na dwóch złączach szpilkowych od spodu płytki. Raspberry Pi Pico można programować w języku C/C++ oraz MicroPython dzięki udostępnionemu przez producenta pakietowi SDK. Fundacja udostępnia także komplet materiałów i tutoriali na swojej stronie https://pico.raspberrypi.org/getting-started/.

Płytki Raspberry Pi Pico kupisz w sklepie Kamami.pl, który jest oficjalnym dystrybutorem produktów Raspberry Pi.

O autorze