STM32Duino: Arduino dla STM32 (cz.1)
Społeczność Arduino
Istotnym filarem uzupełniającym warstwę sprzętową i programową Arduino jest prężnie działająca społeczność, która skupia się wokół tej platformy. Pierwszym elementem aktywności społeczności jest forum dyskusyjne, na którym doświadczeni użytkownicy dzielą się wiedzą.
Kolejnym elementem społeczności jest blog, na którym są publikowane artykuły tematycznie związane z Arduino. Jeszcze innym miejscem aktywności społeczności jest tak zwany Project Hub. Jest to repozytorium projektów, z którymi użytkownicy mogą nie tylko zapoznać się czytając opis lub oglądając film. Mogą się oni także podjąć się samodzielnego wykonania projektu, gdyż opis niejednokrotnie zawiera instrukcję realizacji krok po kroku. Ostatnim elementem należącym do społeczności jest Arduino Playground, które traktować należy jako kompendium wiedzy o Arduino.
STM32duino: Arduino i STM32
Rok 2017 zmienił oblicze Arduino. Twórcy platformy zawarli porozumienie z firmą ARM, na mocy którego obie instytucje zadeklarowały chęć współpracy. Jak wiadomo firma ARM nie produkuje układów półprzewodnikowych, jednakże projektuje rdzenie mikrokontrolerowe oraz gromadzi wokół siebie wielu partnerów, w tym firmy produkujące mikrokontrolery wykorzystujące architekturę ARM (jak STM32).
Dzięki porozumieniu zawartemu z firmą ARM Arduino zachowało pełną niezależność i jednocześnie otworzyło sobie drzwi do współpracy znacznie szerszej niż historyczne partnerstwo z firmą Atmel. I tak właśnie dzięki wspólnym wysiłkom i zaangażowaniu twórców Arduino, społeczności Arduino oraz firmy STMicroelectronics możliwe stało się pracowanie z mikrokontrolerami STM32 korzystając z platformy Arduino.
Ekosystem STM32duino
Schemat blokowy pokazujący w jaki sposób mikrokontrolery STM32 wraz z ekosystemem zostały zespolone z platformą Arduino (STM32duino) pokazano na rysunku 4.
Rys. 4. Schemat prezentujący sposób wkomponowania układów STM32 i ekosystemu w platformę Arduino (STM32duino)
Zestawy z STM32
Aby zachować przyjętą wcześniej konwencję zacznijmy od warstwy sprzętowej. Dla mikrokontrolerów STM32 firma STMicroelectronics oferuje trzy rodzaje płytek uruchomieniowych:
• płytki Nucleo dysponujące głównie mikrokontrolerem i programatorem/debuggerem. Występują one w trzech formatach mechanicznych: Nucleo-32, Nucleo-64 oraz Nucleo-144 (liczba informuje ile wyprowadzeń ma obudowa użytego na płytce mikrokontrolera).
• płytki Discovery będące lepiej wyposażone od płytek Nucleo i dysponujące nie tylko mikrokontrolerem i programatorem/debuggerem, ale w zależności od modelu również dodatkowymi podzespołami takimi jak wyświetlacz, czujniki, gniazda komunikacyjne itp.
• płytkami eval board, które dysponują najbogatszym wyposażeniem.
Kompatybilność
Wszystkie płytki z serii Nucleo są kompatybilne ze standardem Arduino. Grupa ta liczy obecnie 42 sztuki i pozwala na pracę z każdą rodziną mikrokontrolerów STM32. Modele Nucleo-64 oraz Nucleo-144 dysponują listwami sygnałowymi zgodnymi z typowym systemem połączeń Arduino. Z kolei modele Nucleo-32 wyposażone są w listwy sygnałowe zgodne z systemem połączeń Arduino Nano.
Seria płytek Discovery w pewnej części jest zgodna ze standardem Arduino. Starsze płytki z tej grupy nie dysponują listwami kompatybilnymi z Arduino. Sytuacja zmieniła się diametralnie około dwóch lat temu, od kiedy to każda nowa płytka Discovery dysponuje listwami zgodnymi z typowym systemem połączeń Arduino. Takich platform jest obecnie kilkanaście. Ostatni rodzaj płytek, a więc eval board, nie wspiera Arduino. Przykładowe zdjęcie płytek uruchomieniowych STM32 Nucleo i STM32 Discovery kompatybilnych w warstwie sprzętowej z Arduino pokazano na rysunku 5.
Rys. 5. Płytki dla układów STM32 z wyeksponowanymi listwami Arduino. Od lewej: STM32 Nucleo-32, STM32 Nucleo-64, STM32 Discovery
Oprócz płytek uruchomieniowych zgodnych z Arduino, a więc STM32 Nucleo i STM32 Discovery, firma STMicroelectronics oferuje szeroką gamę płytek rozszerzeniowych kompatybilnych ze standardem stworzonym przez Włochów. Takich płytek jest na dzień dzisiejszy łącznie 51. Dają one możliwość rozbudowania płytki uruchomieniowej o m.in.:
- czujniki środowiskowe/odległości/MEMS,
- sterowniki silnika DC/BLDC/krokowego/3-fazowego,
- tor audio,
- komunikację Bluetooth/sub-1 GHz (w tym LoRa)/Wi-Fi/USB typ C/NFC/PLC,
- wzmacniacze operacyjne,
- kontroler LED.
Kilka przykładowych płytek rozszerzeniowych pokazano na rysunku 6.
Rys. 6. Zgodne z Arduino przykładowe płytki rozszerzeniowe wyposażone w podzespoły STMicroelectronics. Od lewej: płytka z modułem Bluetooth, płyta z czujnikami środowiskowymi, płytka z czujnikiem odległości
Przejdźmy teraz do warstwy programowej. Obsługa układów STM32 nie jest aktywna domyślnie w Arduino IDE. W związku z tym osoba chcąca używać mikrokontrolerów firmy STMicroelectronics musi odpowiednio skonfigurować środowisko programistyczne. Czynność ta sprowadza się do zainstalowania pakietu o nazwie STM32duino.
STM32duino – skąd wziąć?
STM32duino to nie jest oficjalny pakiet Arduino i nie znajduje się on pod domyślnym adresem internetowym Arduino IDE. Użytkownik musi więc w pierwszym kroku wskazać środowisku adres właściwy dla STM32duino. W tym celu należy z menu głównego wybierz pozycję File, a następnie Preferences. Otworzy się okno Preferences.
W pierwszej zakładce o nazwie Settings zlokalizować należy pole Additional Boards Manager URL, a następnie trzeba je wypełnić następującym adresem: https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json. Zatwierdzenie zmian odbywa się naciśnięciem przycisku OK. Opisane czynności zobrazowano na rysunku 7.
Rys. 7. Kolejne kroki procesu dodawania adresu internetowego STM32Duino w ustawieniach Arduino IDE
Gdy wprowadzisz adres STM32duino, w kolejnym kroku możesz zająć się instalacją pakietu. W tym celu z menu głównego należy wybrać kolejno pozycje Tools, Board i na końcu Boards Manager… W ten sposób otworzy się okno Boards Manager, pozwalające na nawigowanie po dostępnych pakietach. Pozwala ono także instalować pakiety wybrane przez użytkownika.
Aby było łatwiej zlokalizować pakiet dla mikrokontrolerów STM32 warto wpisać jego nazwę w polu wyszukiwania (STM32 cores). Po odnalezieniu właściwego pakietu należy na niego kliknąć, co spowoduje wyświetlenie przycisku Install. Po jego kliknięciu proces pobierania i instalowania pakietu rozpocznie się. Następnie należy zamknąć okno klikając przycisk Close/OK. Opisane czynności zobrazowano na rysunku 8.
Rys. 8. Kolejne kroki procesu instalacji pakietu dla mikrokontrolerów STM32 w Arduino IDE
Ten krok kończy etap konfiguracji Arduino IDE do pracy z STM32duino. Środowisko programistyczne jest gotowe do pracy z mikrokontrolerami STM32. W tym momencie użytkownik może wskazać płytkę uruchomieniową, którą zamierza używać. Wyboru dokonuje się z poziomu menu głównego. Pozycja Tools, a następnie Board pozwala na wybranie rodzaju płytki tzn. Discovery, Nucleo-32, Nucleo-64 lub Nucleo-144. Z kolei pozycja Tools, a następnie Board Part Numbers umożliwia wybranie konkretnego modelu płytki z wybranej wcześniej grupy.