STM32Duino: Arduino dla STM32 (cz.1)

Arduino to prawdopodobnie najpopularniejsza platforma projektowa dla systemów wbudowanych, kojarzona zazwyczaj z rodziną mikrokontrolerów AVR. Nie wszyscy jednak wiedzą, że Arduino można wykorzystać również do pracy z mikrokontrolerami STM32. Zapraszamy do lektury pierwszego artykułu z krótkiego cyklu o STM32duino!

Arduino – początek

Arduino swój początek ma w roku 2003 we Włoszech. Student Hernando Barragán z placówki akademickiej Interaction Design Institute Ivrea, w ramach pracy dyplomowej podjął się stworzenia nowego środowiska programistycznego dla mikrokontrolerów. Rozwiązanie to otrzymało nazwę Wiring i w formie IDE oraz biblioteki z funkcjami pozwalało na tworzenie aplikacji dla układu ATmega168. Po ukończeniu tego projektu inni studenci tej samej uczelni (Massimo Banzi oraz David Mellis) rozbudowali Wiring o obsługę mikrokontrolerów ATmega8. Po tej modyfikacji nazwa Wiring została zastąpiona przez Arduino.

Pierwsza, nieoficjalne jeszcze edycja Arduino ujrzała światło dzienne w roku 2005. Wraz z upływem czasu środowisko programistyczne było uzupełniane o płytki uruchomieniowe. Dzięki temu Arduino stało się kompletną platformą dla systemów wbudowanych składającą się zarówno z warstwy programowej, jak też sprzętowej. W takiej postaci Arduino zaczęło błyskawicznie zyskiwać ogólnoświatową popularność.

Ciekawa historia związana jest z nazwą, jaką ostatecznie przyjęła stworzona przez Włochów platforma projektowa. Słowo Arduino jest nazwą baru, który był miejscem spotkań studentów. Z kolei nazwa baru pochodzi od lokalnego szlachcica z okresu średniowiecza o imieniu Arduin, który piastował funkcję margrabiego Ivrei oraz był królem Włoch w latach 1002 – 1014.

Idea Arduino, czyli dla kogo jest to środowisko?

Po zapoznaniu się z rysem historycznym Arduino nasuwa się pytanie: dlaczego studenci zdecydowali się stworzyć i rozwijać nową platformę dla mikrokontrolerów? Aby zrozumieć ich motywację warto odbyć wirtualną podróż w czasie do roku 2003 i postawić się na chwilę w roli osoby chcącej na własną rękę rozpocząć przygodę z mikrokontrolerami. Okazuje się, że nie było to takie proste.

Otóż w warstwie sprzętowej dostępne były najczęsciej głównie drogie płyty ewaluacyjne z mikrokontrolerami oraz tak samo drogie programatory/debugery. Alternatywą było samodzielne wykonanie płytki oraz programatora, co z kolei wymagało odpowiednich umiejętności. Problem stanowić mogła również warstwa programowa. Środowisko programistyczne mogło być wprawdzie dostępne bezpłatnie, niemniej jednak do pisania kodu w oparciu o dominującą wtedy metodę modyfikacji rejestrów niezbędna była dogłębna wiedza o mikrokontrolerze, a samo pisanie kodu operującego na rejestrach wymagało pewnego doświadczenia w programowaniu w języku C lub Assembler.

Podsumowując – środki finansowe na zakup sprzętu, umiejętność lutowania, wiedza o architekturze układu, znajomość języka programowania w stopniu pozwalającym na pisanie kodu niskopoziomowego. Wszystkie te wymagania stanowiły nie lada wyzwanie i potrafiły przestraszyć lub nawet zniechęcić początkującą osobę. Włoscy studenci postawili sobie za cel stworzenie rozwiązania pozbawionego wymienionych niedogodności i tym samym maksymalnie przyjaznego niedoświadczonemu użytkownikowi.

Jakie są zatem główne zalety Arduino?

1. Niska cena – środowisko programistyczne Arduino jest bezpłatne, płytki z mikrokontrolerem są przystępne cenowo: koszt zazwyczaj na poziomie kilkunastu – kilkudziesięciu dolarów.

2. Prostota użycia – pisanie kodu zostało maksymalnie uproszczone przez zastąpienie skomplikowanej metody niskopoziomowej (modyfikacji rejestrów) prostym w zrozumieniu i użyciu językiem Arduino posługującym się elementami języka C np. funkcjami, pętlami i instrukcjami warunkowymi.

3. Elastyczność – język Arduino umożliwia tworzenie aplikacji o różnym stopniu skomplikowania (od bardzo prostych po zaawansowane).

4. Open source – kod oprogramowania Arduino jest otwarty i tworzy go społeczność internetowa.

5. Unifikacja warstwy sprzętowej – płytki Arduino dysponują zestawem listew rozszerzeniowych zgodnym ze zdefiniowanym standardem.

6. Wieloplatformowość – środowisko programistyczne Arduino jest dostępne dla trzech różnych systemów operacyjnych: Windows, Macintosh OSX i Linux.

Cechy te sprawiły, że Arduino zostało entuzjastycznie przyjęte przez osoby rozpoczynające przygodę z mikrokontrolerami. Rozwiązanie to chętnie wykorzystywane jest przez studentów kierunków związanych z elektroniką i informatyką np. do realizacji projektów akademickich takich jak nieskomplikowane roboty. Po Arduino chętnie sięga również młodzież szkolna, dla której platforma stworzona przez Włochów pozwala w łatwy sposób wkroczyć w świat elektroniki.

W końcu Arduino jest też atrakcyjne dla osób nieaspirujących do roli elektronika, a więc wszelkiej maści hobbystów i nieprofesjonalistów. Za przykład posłużyć tu mogą artyści, którzy za pomocą Arduino są w stanie dodać elementy sterowania i prezentacji do swoich instalacji artystycznych np. tworząc motywy świetlne z użyciem diod LED.

Struktura Arduino

Chcąc lepiej poznać i zrozumieć czym jest Arduino warto przejść od ogólników do szczegółów. Platformę podzielić można na trzy obszary: warstwę sprzętową, warstwę programową oraz społeczność. Odpowiedni schemat blokowy pokazano na rysunku 1. Przyjrzyjmy się bliżej każdemu z tych obszarów.

Rys. 1. Schemat blokowy platformy Arduino

Warstwa sprzętowa Arduino

Podstawę warstwy sprzętowej tworzą płytki uruchomieniowe z mikrokontrolerami. Historycznie pierwszymi układami wspieranymi przez Arduino były 8-bitowe mikrokontrolery AVR. Współpraca twórców Arduino z firmą Atmel (obecnie Microchip) będącą producentem układów AVR zaowocowała stworzeniem na przestrzeni lat grupy płytek z układami ATmega należącymi do rodziny AVR:

• zestaw ARDUINO UNO z mikrokontrolerem ATmega328P

• zestawy ARDUINO LEONARDO oraz ARDUINO MICRO, obie z mikrokontrolerem ATmega32u4

• moduły ARDUINO NANO oraz ARDUINO ETHERNET, obie z mikrokontrolerem ATmega328

• ARDUINO MEGA z mikrokontrolerem ATmega2560

Idąc z duchem czasu w roku 2012 Arduino wprowadziło do użytku pierwszą płytkę uruchomieniową z 32-bitowym mikrokontrolerem opartym na rdzeniu ARM Cortex-M. Obecnie grupa płytek z Cortexowymi układami Atmela liczy 3 sztuki:

• zestaw ARDUINO DUE z mikrokontrolerem AT91SAM3X8E (Cortex-M3)

• zestawy ARDUINO M0 PRO oraz ARDUINO MKR ZERO, obie z mikrokontrolerem ATSAMD21G18 (Cortex-M0+)

O autorze

Szymon Panecki

SZYMON PANECKI urodził się 17 lutego 1985 roku w Milanówku. Tytuł inżyniera Elektroniki i Telekomunikacji, a następnie magistra inżyniera na Wydziale Elektroniki Politechniki Wrocławskiej uzyskał kolejno w roku 2008 i 2010. Ponadto tytuł inżyniera Informatyki na Wydziale Elektroniki Politechniki Wrocławskiej uzyskał w roku 2011.

Szymon Panecki jest doświadczonym elektronikiem-konstruktorem, który w trakcie swojej zawodowej kariery koncentruje się na definiowaniu i projektowaniu (zarówno w warstwie sprzętowej jak i programowej) systemów wbudowanych opartych na mikrokontrolerach z rdzeniem ARM od różnych producentów, w tym przede wszystkim Infineon Technologies (rodzina XMC1000 i XMC4000), STMicroelectronics (STM32 i STR7), Freescale Semiconductor (Kinetis L) oraz Silicon Labs (EFM32 i Precision32). Obszarem jego szczególnego zainteresowania są systemy wykorzystujące czujniki środowiskowe (wilgotności, ciśnienia, temperatury) oraz przemysłowe i motoryzacyjne interfejsy komunikacyjne, głównie CAN.

Szymon Panecki od wielu lat współpracuje z czasopismem “Elektronika Praktyczna” oraz portalem Mikrokontroler.pl, na łamach których publikuje liczne artykuły dotyczące swoich projektów, jak również nowości produktowych firm z branży półprzewodnikowej.