Coraz częściej w procesie projektowania i budowania układów elektroniki użytkowej (np. urządzenia RTV i AGD) i profesjonalnej (np. zautomatyzowane linie produkcyjne), istotną rolę odgrywa technika mikroprocesorowa. Pójście tą drogą ma wiele zalet, ponieważ użycie mikroprocesorów i mikrokontrolerów, diametralnie minimalizuje koszty produkcji, upraszcza konstrukcję urządzeń, a także zwiększa ich funkcjonalność i niezawodność. Takie oznaki rozwoju przemysłu elektronicznego implikują zwiększone zapotrzebowanie na specjalistów w zakresie elektroniki, a także informatyki. Dlatego coraz więcej szkół i uczelni technicznych, wprowadza w programy nauczania kursy i zajęcia, na których studenci poznają teoretyczne i praktyczne ujęcie urządzeń techniki mikroprocesorowej. W tym celu włoscy inżynierowie z Ivrea Interaction Design Institute zaprojektowali Arduino – małą platformę rozwojową typu open source, która powstała z myślą o prostej i szybkiej nauce prototypowania programowalnych układów elektronicznych. Szacuje się, że od czasu wdrożenia Arduino na rynek w 2005 roku, sprzedano ponad milion tych płytek z mikrokontrolerami – do grona nabywców należą nie tylko szkoły i uczelnie techniczne, ale także majsterkowicze-hobbyści i firmy zajmujące się profesjonalnym projektowaniem i budową urządzeń elektronicznych. W skład ekosystemu Arduino wchodzą nie tylko płytki bazowe, ale także dedykowane środowisko programistyczne, akcesoria i rozszerzenia sprzętowe, a także liczna społeczność użytkowników udostępniających swoje projekty w internecie.

Arduino – mała płytka z wszechstronnym osprzętem i dedykowanym oprogramowaniem

Typowa płytka Arduino wykorzystuje port USB nie tylko w celu komunikacji z komputerem, ale także w celu doprowadzenia zasilania pomocniczego. Jednak, gdy chcemy płytkę Arduino wykorzystać do sterowania urządzeniami o zwiększonym zapotrzebowaniu na energię elektryczną (np. sterowniki silników, serw i oświetlenia), wówczas warto skorzystać z oddzielnego zasilacza o napięciu z przedziału 7 – 12V lub baterii 9V (6F22) z adapterem, które można podłączyć do złącza DC 5,5 x 2,1 mm. Najważniejszym układem elektronicznym na płytce jest 8-bitowy mikrokontroler AVR Atmega 328 o zegarze 16MHz. Ma on wbudowaną pamięć RAM oraz pamięć FLASH z bootloaderem, na którą jest wgrywany i realizowany kod programu zawierającego wszystkie instrukcje niezbędne do wykonywania procesu określonego zgodnie z założeniami konstruktora. Za pomocą pinów cyfrowych (niektóre z nich mogą generować sygnał PWM o zmiennej szerokości impulsów) oraz pinów analogowych, użytkownik może zrealizować niezliczoną ilość projektów, takich jak np. systemy łączności telekomunikacyjnej, moduły sterowników procesów przemysłowych, elektroniczne zabawki, urządzenia pomiarowe, a także nieustannie zyskujące na popularności – projekty robotów. Autorzy projektu Arduino stworzyli także Arduino IDE – dedykowane środowisko, w którym użytkownik pisze kod źródłowy programu realizującego algorytm określony zestawem niezbędnych instrukcji.
image
image

Arduino – programowanie

Jedną z najważniejszych zalet płytek Arduino jest możliwość załadowania pliku zawierającego kod źródłowy programu poprzez połączenie USB z komputerem zewnętrznym, bezpośrednio do pamięci FLASH wbudowanej w mikrokontroler na płytce, bez konieczności używania programatora, tak jak jest to wymagane w przypadku konwencjonalnych mikrokontrolerów AVR. W Arduino programator sprzętowy został zastąpiony bootloaderem, tj. programem rozruchowym, który umożliwia bezpośrednie wgranie pliku programu napisanego przez użytkownika w środowisku Arduino IDE prosto z komputera na płytkę. Interfejs graficzny środowiska Arduino IDE obejmuje m.in. pasek narzędzi, za pomocą których użytkownik może m.in. rozpocząć tworzenie nowego szkicu programu, sprawdzić prawidłowość kodu programu, wczytać kod uprzednio utworzonego programu, zapisać dotychczasowo utworzoną zawartość kodu, a także obserwować przesyłanie danych między komputerem a Arduino za pomocą okna monitora portu szeregowego. Tak jak każde oprogramowanie do tworzenia kodu źródłowego, również Arduino IDE obejmuje edytor tekstu, w którym użytkownik pisze kod programu, a także konsolę komunikatów, która wyświetla treść potencjalnych błędów dotyczących np. nieprawidłowej składni bądź braku połączenia. Składnia języka programowania Arduino bazuje w dużej mierze na języku C/C++. Typowy szkic programu w środowisku Arduino IDE jest zbudowany z trzech części. Pierwszą z nich jest inicjacja i deklaracja zmiennych, bibliotek pomocniczych i innych definiowalnych parametrów użytych w kodzie za pomocą instrukcji #define – choć nie zawsze jest ona wymagana. W drugiej części, za pomocą funkcji zapisanej jako void setup() użytkownik wprowadza informacje dotyczące warunków początkowych programu oraz określenie funkcji sprzętowych mikrokontrolera (np. ustawienie określonych pinów cyfrowych w tryb “wejście” i przypisanie im stanu logicznego niskiego przed startem programu właściwego). Zestaw instrukcji zawartych w funkcji void setup() jest wykonywany jednokrotnie – każdorazowo po uruchomieniu bądź zresetowaniu płytki z wgranym programem. Trzecim z głównych elementów szkieletu kodu programu jest funkcja void loop() – ta część kodu zawiera właściwą część programu obejmującą instrukcje, które są wykonywane w pętli. Do przykładowych instrukcji zawartych w kodzie programu w środowisku Arduino IDE zaliczamy m.in.:

digitalRead(2); – odczyt stanu logicznego na pinie cyfrowym nr 2;   digitalWrite(3, HIGH); – przypisanie pinowi cyfrowemu nr 3 stanu logicznego wysokiego;   pinMode(4, INPUT); – ustawienie pinu nr 4 w tryb wejścia;   analogRead(A5); – odczyt wartości napięcia na pinie analogowym nr 5 (“A5”);   analogWrite(A4, 512); – ustawienie wartości 512 na pinie analogowym nr 4 (“A4”) – przetwornik ADC w Arduino Uno ma 10-bitową rozdzielczość, czyli może odczytać 1024 wartości napięcia na wejściu. Jeśli program odczyta wartość “512”, to znaczy, że dla napięcia zasilającego 5,0V, na wejściu “A4” zmierzona wartość napięcia wynosi 2,5V;    serial.begin(9600); – ustawienie prędkości transmisji danych (baud rate) na wartość 9600b/s.