Arduino - co to jest i jak zacząć?
Arduino to platforma, dzięki której w łatwy sposób można tworzyć oprogramowanie na gotowe systemy wbudowane (tzw. systemy embedded). W ramach Arduino jest środowisko komputerowe, język programowania oraz specjalne płytki z oprzyrządowaniem, które można samodzielnie programować.
Czym jest Arduino?
Arduino jest organizacją we Włoszech, która zajmuje się rozwijaniem i utrzymywaniem tego systemu. Co ciekawe, funkcjonuje na zasadach pełnej otwartości zarówno programistycznej, jak i sprzętowej. Oznacza to, że każdy, za darmo, ma wgląd do projektów płytek drukowanych, ich schematów ideowych oraz do kodu źródłowego udostępnianego oprogramowania. Również za darmo są udostępniane biblioteki do różnych urządzeń peryferyjnych.
Skąd więc ta organizacja bierze pieniądze na swoje funkcjonowanie? Ze sprzedaży płytek oraz oprzyrządowania do nich. Jej twórcy wyszli z założenia, że udostępniając za darmo całą dokumentację zachęcą ludzi do jej wyboru, a potem sami będą zarabiać na tym, czego przez internet pobrać się nie da. Przepis na sukces? Nie do końca.
Klony i podróbki
Wiele azjatyckich firm pojęło siłę Arduino i zaczęło sprzedawać własne kopie tych płytek, zwane klonami. Mają dokładnie te same funkcje, te same wymiary, czasem nawet napis „made in Italy”, który znajduje się na oryginalnych produktach, jest niezmieniony. Jednak nie wspierają one pierwotnej organizacji, a często mają również gorszą jakość wykonania lub pozbawiono ich niektórych podzespołów.
Co zawierają płytki Arduino?
W rodzinie Arduino funkcjonuje wiele rodzajów płytek, zwanych żargonowo boardami. Każda z nich zawiera mikrokontroler, całe oprzyrządowanie wokół niego, razem z konwerterem USB na UART, który służy do programowania tego mikrokontrolera oraz innej komunikacji z komputerem. Dzięki takiemu podejściu, do płytki potrzebny jest jedynie przewód USB – nie trzeba zasilaczy, programatorów, kondensatorów ani jakiegokolwiek innego osprzętu!
Na brzegach płytki znajdują się złącza typu szpilkowego (goldpin), które umożliwiają podłączanie rozmaitych peryferiów: diod LED, przycisków, wyświetlaczy, sygnalizatorów... Z tego wynika siła Arduino: użytkownik nie musi się martwić o projektowanie, trawienie i lutowanie płytki pod dany mikrokontroler, ponieważ to wszystko dostaje gotowe.
Siła tkwi w mikrokontrolerze
Czemu płytki Arduino zawierają mikrokontrolery? Otóż mikrokontroler to taki miniaturowy, bardzo prosty komputer – w dużym uproszczeniu. Ma pamięć nieulotną (nie kasuje się po zaniku zasilania), do której można wgrać odpowiednio przygotowany kod.
Rolą tego układziku jest jego odczytywanie i wykonywanie linia po linii, instrukcja po instrukcji – identycznie, jak w przypadku „prawdziwego”, dużego komputera. Po odłączeniu przewodu USB, taka płytka dalej może „żyć własnym życiem”, bez konieczności stałego połączenia z komputerem. Wymaga wtedy jedynie zewnętrznego zasilacza, ponieważ nadal potrzebuje elektryczności do działania.
Dla kogo?
Arduino miało być wsparciem dla tych, którzy nie są elektronikami, a chcą szybko i bezboleśnie stworzyć swój niewielki system elektroniczny. I to się udało: przedstawiciele różnych profesji niezwiązanych nijak z elektroniką (artyści, marketingowcy) mogą tworzyć efekty świetlne, tablice informacyjne czy gadżety reklamowe bez dotykania lutownicy. Wystarczy gotowa płytka z gotowym osprzętem i kilka chwil poświęcone na napisanie kodu.
Nie tylko dla laików
Jest to rozwiązanie wygodne do tego stopnia, że nawet profesjonalistom zdarza się zbudować niewielki, prosty system z użyciem Arduino. Gotowe, standaryzowane moduły pozwalają na zbudowanie układu w zaledwie kilka godzin, co zmniejsza koszty i skraca czas potrzebny do jego oddania do użytku.
Jednak takie rozwiązanie ma też wady – Arduino nie ma wbudowanych wielu zabezpieczeń (np. przed wyładowaniami elektrostatycznymi), które są potrzebne współczesnym urządzeniom, więc należy do tego podchodzić z rezerwą. Niemniej jednak, stworzenie prototypu przy użyciu Arduino, który byłby później przeniesiony na dedykowaną, odpowiednio zaprojektowaną płytkę drukowaną, jest już jak najbardziej prawidłowe.
Język programowania
Programowanie Arduino odbywa się przy użyciu dedykowanego języka programowania o nazwie... owszem, Arduino. W zdecydowanej większości, bazuje na dobrze znanym języku niskiego poziomu, jakim jest C. Twórcy Arduino wprowadzili do niego jedynie kilka modyfikacji, które ułatwiają pisanie programów przez osoby niezwiązane z elektroniką. Znajomość podstawowej składni oraz języka angielskiego (nawet na elementarnym poziomie) wystarczają do opanowania większości funkcji.
W czym pisać programy?
Środowisko programistyczne nosi nazwę Arduino IDE. Jest o tyle ciekawe, że zawiera wszystko, słownie: wszystko, czego trzeba, aby stworzyć program dla wybranej płytki. Z rozwijanego menu wybiera się nazwę płytki, a środowisko dostosowuje całą resztę.
Nie trzeba martwić się o ustawienia kompilatora, wskazanie bibliotek, instalację sterowników, wybór mikrokontrolera. Ot, jeden wybór i gotowe. Dla każdej płytki jest mnóstwo gotowych przykładów: od bardzo prostych po bardziej złożone. Na podstawie takich przykładów można zobaczyć, jak działają poszczególne funkcje i jak się ich używa, a potem – na ich podstawie – zacząć pisać własne programy.
Nakładki na płytki Arduino
Złącza żeńskie typu goldpin służą do wczepiania w płytkę Arduino nakładek rozszerzających jego możliwości, zwanych shieldami. Taka nakładka może zawierać wyświetlacz LCD, odtwarzacz audio, sterownik silnika albo jeszcze inną, użyteczną rzecz. W ten sposób, wciskając delikatnie jeden moduł w drugi, możemy w kilka sekund stworzyć całkiem zaawansowany system elektroniczny.
Zaletą korzystania z gotowych shieldów jest pełne wsparcie ze strony ich producenta. Gotowe, udostępniane za darmo biblioteki zawierają pełny program konfiguracji danego modułu oraz wszystkie funkcje, jakie są niezbędne do jego obsługi. Użytkownik nie musi samodzielnie, na podstawie schematów ideowych, dociekać, co jest z czym połączone, a potem pisać procedur konfiguracyjnych. Producent modułu zrobił to za niego. Wystarczy wpisać kilka linijek kodu lub posłużyć się gotowym przykładem, by przekształcić płytkę Arduino w, na przykład, odtwarzacz MP3.
Mniejsze moduły
Część modułów jest malutka i zajmuje zaledwie kilka wyprowadzeń mikrokontrolera. W takiej sytuacji, ich rozmiar nie jest standaryzowany, lecz potrzebne sygnały oraz napięcia doprowadza się do niego z płytki Arduino przy użyciu przewodów do płytek stykowych. Trzeba przy tym chwilę pogłówkować, lecz instrukcja podłączenia – udostępniana przez producenta – w prosty sposób objaśnia, jak to należy wykonać.
Rodzaje płytek Arduino
W rodzinie Arduino dostępnych jest wiele płytek. Część z nich jest oficjalna, produkowana i dystrybuowana przez włoską organizację. Natomiast wiele z nich zostało opracowanych pod konkretne zastosowanie lub wyspecjalizowanych pod kątem jakiejś szczególnej cechy, np. niskiego zapotrzebowania na energię.
Arduino Uno
Bodaj najpopularniejszą płytką spośród wszystkich układów Arduino jest Uno. Zawiera mikrokontroler typu Atmega328P, który jest najważniejszym elementem na tej płytce. To od niego zależy liczba dostępnych dla użytkownika wyprowadzeń, rozmiar pamięci programu, peryferia. A jest ich całkiem sporo!
Peryferia to bloki wbudowane w mikrokontrolery. Znajdują się w samej kostce, więc nie sposób ich dojrzeć gołym okiem. O ich istnieniu można dowiedzieć się wyłącznie z lektury noty katalogowej danego układu. Wśród nich można znaleźć:
- przetwornik analogowo-cyfrowy (ADC) – przydatny do wykonywania pomiarów napięcia i prądu, a także do realizacji bardziej złożonych zadań. Mogą to być, na przykład iluminofonia czy prosty analizator widma sygnału audio;
- interfejsy komunikacyjne I²C, SPI i UART – służą do porozumiewania się zarówno pomiędzy dwoma mikrokontrolerami, jak i mikrokontrolera z komputerem czy zewnętrznym peryferium. Może to być, przykładowo, karta pamięci SD, czujnik, moduł komunikacyjny Bluetooth lub wyświetlacz;
- sprzętowe liczniki (tzw. timery) – dzięki nim można zrealizować zegar, stoper, regulator jasności czy miernik częstotliwości sygnału.
To nie są wszystkie możliwości tego niewielkiego układu!
Arduino Nano
Inną popularną płytką jest Arduino Nano. Zawiera ten sam mikrokontroler, co jej większa „siostra” UNO, ale w innej, mniejszej obudowie. Mniejsze są również rozmiary całego układu – wszystkie niezbędne podzespoły znalazły się na kawałku laminatu o wymiarach zaledwie 18×43mm!
Zmniejszeniu uległy również inne podzespoły na tej płytce – na przykład złącze USB. Jest ono typu miniUSB, zamiast USB B, które możemy znaleźć np. w drukarkach.
Kompaktowe wymiary płytki powodują, że nie pasują do niej standardowe shieldy, które można nałożyć na płytkę Uno. Wszystkie połączenia należy wykonać przewodami. Jednak zamysłem twórców tego modułu nie była możliwość korzystania z gotowych nakładek, które są relatywnie duże, ale ułatwienie wkomponowania Arduino Nano w inne urządzenie. To jest możliwe właśnie dzięki niewielkim wymiarom.
Inną zaletą, chociaż drugorzędną, która powstała „sama przez się”, jest niższa cena tej płytki w porównaniu z UNO. Mniejsze podzespoły do montażu powierzchniowego da się szybciej lutować (w pełni automatycznie), mniejszy laminat oznacza niższą cenę płytki płytki drukowanej – to wszystko przekłada się na niższą cenę gotowego produktu. Mogą to docenić młodzi adepci elektroniki, dla których każda oszczędność jest ważna.
Arduino Due ARM Cortex
Ale Arduino to nie tylko niewielkie, proste mikrokontrolery. Płytka Due ARM Cortex jest czymś, co pozwoli zbudować zdecydowanie bardziej złożone układy: z obsługą magistrali USB oraz CAN (znanego z samochodów) albo dużych, kolorowych wyświetlaczy. Rozmiar pamięci programu również jest znacznie większy, co pozwala tworzyć bardziej skomplikowane oprogramowanie.
Jak zacząć z Arduino?
Potrzebny będzie komputer z łatwo dostępnym złączem typu USB, ponieważ komunikacja między nim a Arduino zachodzi właśnie poprzez tę magistralę. Niezbędna będzie także płytka – na początek, na przykład Uno lub Nano – oraz odpowiedni przewód USB. Tak skromny zestaw pozwoli na napisanie oraz przetestowanie kilku pierwszych programów!
Instalacja i konfiguracja
Na komputerze trzeba zainstalować Arduino IDE, najlepiej w najnowszej wersji. Dzięki temu, dostępna baza przykładów i bibliotek będzie bardzo bogata! O tym, jak to zrobić, można przeczytać na stronie dystrybutora tego oprogramowania. Wystarczy wybrać wersję odpowiednią dla swojego systemu operacyjnego: Windows, Linux lub macOS.
https://www.arduino.cc/en/Guide
Kiedy oprogramowanie zostanie prawidłowo zainstalowane, należy podłączyć płytkę Arduino i chwilę poczekać. W tym czasie system sam pobierze odpowiednie sterowniki lub wskaże, które są mu potrzebne. Nasza płytka zostanie dodana do systemu jako wirtualny port szeregowy (COM) – trzeba zapamiętać jego numer, np. COM13.
Potrzebny będzie po uruchomieniu Arduino IDE. Trzeba w nim ustawić nazwę płytki, jaką posiadamy, oraz właśnie ten numer portu szeregowego. Dzięki temu, proces kompilowania (przekształcenie kodu w języku Arduino na postać zrozumiałą dla mikrokontrolera) oraz wgrywania na płytkę będzie przebiegał automatycznie i bez przeszkód.
Pierwszy program
Najprostszy program, jaki można napisać, miga diodą LED, która jest wbudowana na płytce. Aby go wgrać, z listy przykładów trzeba wybrać Blink. Po jego otwarciu, wystarczy wcisnąć przycisk Upload (strzałka skierowana w prawo na górnym pasku programu), aby środowisko programistyczne zrobiło za nas całą resztę, czyli skompilowało ten program i umieściło go w pamięci mikrokontrolera.
Jednak możliwości Arduino nie kończą się na miganiu diodą. Bez użycia dodatkowego osprzętu, można skomunikować się z pracującą płytką przy użyciu portu szeregowego. Może ona np. wysyłać do komputera informację o wciśnięciu przycisku, który również jest wbudowany w płytkę.
Co dalej?
Większą liczbę możliwości uzyskuje się po dokupieniu do Arduino dodatkowych podzespołów. Może to być gotowy shield, a może być płytka stykowa, trochę przewodów i podstawowe elementy elektroniczne: rezystory, diody, sygnalizator piezo, przyciski, potencjometr. Taki zestaw będzie kosztował niewiele, wystarczy kilkanaście złotych!
Arduino można wykorzystać również do nauki obsługi bardziej skomplikowanych rzeczy, jak sieci Ethernet. Korzystanie z gotowego shieldu upraszcza warstwę fizyczną, ponieważ nie trzeba martwić się o prawidłowy dobór elementów i wykonanie połączeń. Można wtedy skupić się na samym działaniu protokołu: pakietyzacji danych, sumie kontrolnej, przepływie informacji i tak dalej. Oczywiście, jak w innych przypadku, tak i tutaj mamy dostępne gotowe przykłady użycia konkretnych funkcji.