Arduino: jak się to robi?

10 I 2022

Na wstępie zaznaczę, że programy dla Arduino nazywają się szkicami. Pozwolę sobie to zakomunikować, jednak będę używać synonimów, ponieważ ta nazwa w języku polskim jest trochę nienaturalna. Ale po kolei.

Program w języku Arduino, który w zasadzie jest językiem C++, możemy napisać w czymkolwiek: notatniku, a nawet w Wordzie. Wielu zaawansowanych programistów ma swoje ulubione edytory, z Notepadem z dwoma plusami włącznie, którego zwykle używam. Jednak najwygodniej będzie korzystać z edytora dostarczonego przez twórców Arduino, albowiem będą tam także narzędzia, które sprawią, że program zostanie przetłumaczony, czyli skompilowany do postaci zrozumiałej przez mikrokontroler i przesłany do niego. Zatem odpadnie cały proces konfigurowania składników aplikacji.

Zatem na początku należy udać się na stronę arduino.cc i pobrać pakiet Arduino IDE. Po zainstalowaniu i uruchomieniu otworzy się poniższe okno. Omówmy sobie to, co istotne.

Szkicujemy, ale potem będziemy kolorować.

Tutaj będziemy pisać nasze programy, czyli szkice. Na dole będą się pojawiać komunikaty, a na górze znajdziemy różne narzędzia, z których kilka można wywołać także ikonami.
Co jest dla nas ważne? Takie rzeczy jak zarządzanie plikami i drukowaniem są oczywiste i działają jak w większości programów.
Z narzędzi edycyjnych warto znać skróty wycinania, kopiowania i wklejania, ale to chyba zna każdy. Podobnie jak cofanie ostatnich operacji i „cofanie cofania”. Do kompletu przydadzą się skróty wyszukiwania i na razie tyle wystarczy.

Pozostałe narzędzia omówię już na konkretach. Poszło szybko, czas na kolejny krok. A będzie nim podłączenie płytki Arduino. Jak wspominałem na początku, nie jest moim zamiarem tworzenie kolejnego klonu kursu, a spojrzenie na zagadnienie subiektywnym okiem praktyka. Dlatego teraz może wydać się dziwne to co powiem, lecz proponuję w ogóle nie zajmować się płytką Arduino Uno, która jest najbardziej klasyczną, a wybrać płytkę bardziej praktyczną: Arduino Nano. Mało tego, do naszych szkoleniowych celów wcale nie musimy mieć włoskiego oryginału. Wystarczy znacznie tańszy chiński odpowiednik. I tu taka dygresja: czym ryzykujemy, wybierając tak zwane klony?

Po pierwsze, płytka może w ogóle nie działać, choć jeśli nie kupimy jej w ciemnej bramie internetu, to szansa na to jest bardzo mała. Po drugie, może się zdarzyć, że płytka będzie mniej odporna na zakłócenia i przepięcia. Zdarzyło mi się kiedyś nabyć serię płytek, w których zasilacz padał przy napięciu 12 woltów, teoretycznie dopuszczalnym. Dopiero obniżenie go do dziewięciu przestało sprawiać kłopoty. Po trzecie, oryginalne Arduino posiada referencyjny układ FT232, który jest interfejsem zamieniającym dane płynące przez USB na starożytny, szeregowy ich format, który jest zrozumiały przez mikrokontroler, będący sercem płytki. Chińskie klony zwykle korzystają z tańszych odpowiedników, najczęściej CH340. Nigdy jednak nie spotkałem się z jakimikolwiek problemami z tego wynikającymi.

Dlaczego zatem na początek proponuję tę właśnie płytkę? Z kilku powodów:

Po pierwsze: jest dużo tańsza. A jak się po niedługim czasie każdy przekona, warto mieć kilka płytek, zarówno dla rozbudowanych projektów, jak i po to, by nie przerzucać ich co chwilę pomiędzy projektami otwartymi. Poza tym jak już coś stworzymy, żal będzie tak od razu to rozbierać z powrotem na części.

Po drugie: jest dużo mniejsza. Uno jest może i ładne, ale niepraktyczne, ponieważ składa się głównie z pustej przestrzeni. Nano jest zgrabne, zmieści się wszędzie, a na dodatek ma jeszcze dwa porty więcej.

Po trzecie: nie ma tu niczego zbędnego. Nieprzydatnych złącz, wielkiego gniazdka USB i drugiego — zasilającego. Ten układ uczy optymalizacji od razu i na wstępie.

Co nie znaczy, że jeśli ktokolwiek ma już taką czy inną płytkę, nie skorzysta z porad. Po prostu będzie sobie musiał uwzględnić różnice w położeniu sygnałów i to wszystko. Zanim jednak wybierzemy się do sklepu, jeszcze kilka rzeczy, które będą nam potrzebne.

Lutownica parzy, ale nie należy się jej bać.

Teoretycznie można się bawić w Arduino bez umiejętności lutowania. Ale powiedzmy sobie szczerze: to będzie tylko zabawa. Wcześniej czy później będziemy musieli podłączyć coś, co będzie trzeba przylutować choćby do przewodów. Zatem tutaj ulgi nie ma: musimy mieć lutownicę i umiejętność jej obsługi.

Arduino ze sklepu wygląda zwykle tak i w zestawie otrzymuje się dwa rzędy szpilek, które należy wlutować w otwory znajdujące się na krawędzi płytki. Jeśli kogoś to niepokoi, może kupić wersję płytki ze szpilkami już wlutowanymi.
Do tych szpilek, zwanych goldpinami, zapewne ze względu na kolor, będziemy podłączać różne elementy takimi oto przewodami, zakończonymi gniazdkami w tym standardzie. Jest to praktyczne i dość pewne w działaniu.
Ale to nie wszystko. Spójrzmy na coś takiego. Nosi to nazwę płytka stykowa i służy do tymczasowego łączenia różnych elementów, których końcówki wykonane są w standardzie goldpinów.

W otworki można także wtykać odpowiedniej grubości druty, a także same elementy elektroniczne przy wykorzystaniu ich końcówek, aczkolwiek tutaj gwarancji pewnego styku nie ma. Często w zestawie znajdziemy kilkadziesiąt przyciętych już kolorowych drucików.

Pod otworkami znajdują się gniazdka, zwarte zwykle według takiego schematu.

Zatem jeśli umieścimy tutaj nasze Arduino, na gniazdkach pojawią się sygnały. Możemy w nie wsunąć szpilki urządzeń peryferyjnych albo druty, które przesuną sygnały na pozostałe, wolne rzędy gniazd. Do gniazd znajdujących się przy krawędzi zwykle podłącza się zasilanie i dobrze jest dokładnie opisać gdzie znajduje się biegun dodatni, a gdzie ujemny.

Powiem szczerze: nie lubię płytek stykowych, choć nie mogę powiedzieć, że są nieużyteczne. Można tu szybciutko zestawić obwód i tymczasowo go uruchomić. Jednak jeśli nie będziemy używać prawdziwych goldpinów, może się zdarzyć, że coś nam stykać nie będzie, a my nie będziemy wiedzieć dlaczego układ nie działa. Osobiście preferuję bezpośrednie łączenie urządzeń za pomocą przewodów zakończonych gniazdkami — z dwóch stron, albo — w przypadku takich elementów jak potencjometry czy enkodery — z jednej tylko. Temat ten będzie się pojawiał wielokrotnie, więc do niego wrócę. Niezdecydowanym polecam kupić któryś z tak zwanych zestawów startowych, w którym znajdzie się i samo Arduino, i płytka, i pakiet przewodów, i zestaw peryferiów. Podłączmy teraz naszą płytkę do komputera i spróbujmy ją zaprogramować.

I ty możesz być informatykiem!

Do kompletu potrzebny będzie jeszcze kabel USB zgodny z gniazdkiem posiadanego Arduino. Nano zwykle korzysta ze standardu miniUSB, ale obecnie różnie bywa i obowiązują wszystkie cztery standardy, od największego, do symetrycznego USB C.

Uruchamiamy zatem aplikację i podłączmy nasze Arduino do gniazda USB. Umieszczone na płytce diody powinny nam chwilkę chaotycznie pomigać, po czym jedna z nich może — ale nie musi — migać już w nieskończoność. Możemy od razu na żywioł rzucić się do programu, jednak ja radzę odwiedzić Menedżer urządzeń. W zakładce „Porty” powinniśmy znaleźć coś obcego dotąd, o nazwie kończącej się słowem COM z numerem. Jeśli pojawi się tam „nierozpoznane urządzenie”, będzie trzeba szukać sterowników. Najczęściej sprzedawca zamieszcza stosowne informacje na ten temat i tam winniśmy szukać pomocy.

Wracamy do aplikacji. Trzeba jeszcze dokonać dwóch czynności.

Pierwszą będzie wybranie płytki, którą posiadamy. Zatem klikamy w Narzędzia, potem w Płytka... i tu wskazujemy Arduino Nano.
Druga czynność to wskazanie portu, który widzieliśmy w Menadżerze. Zwykle wybór będzie ograniczony do jednego tylko.

Gotowe. Teoretycznie nasza płytka jest skonfigurowana, czas odpalić pierwszy program. Tak się składa, że wszystkie chyba Arduino są wyposażone w pewien mały gratis. Otóż do portu numer 13 przylutowana jest dioda świecąca, której świecenie oznacza istnienie stanu wysokiego na tym porcie, czyli napięcie 5 woltów. Zatem najprostszy program nie będzie wymagał od nas żadnego lutowania ani przyłączania czegokolwiek. Program, którym można sterować ową diodą, należy zwykle do pierwszego uruchamianego. Zatem zróbmy to i my.

Programy, czy też szkice — przykłady, znajdują się tutaj. Wybieramy ten o nazwie Blink, czyli po prostu „mrugaj”.
Nie analizujmy na razie niczego. Ale zróbmy coś innego. Zamieńmy wartości wyrażone liczbą 1000 na 100.

Teraz kliknijmy w drugą z kolei ikonę. Służy ona do skompilowania programu — szkicu i przesłania go do płytki. Niestety pojawił się błąd. To się będzie czasem zdarzać. Podpowiem gdzie szukać problemu. Nasza płytka ma starszy typ oprogramowania zajmującego się wgrywaniem programów.

Zatem wystarczy wskazać ów fakt i spróbować ponownie przesłać szkic.

Udało się! O czym zawiadamia komunikat na dole, już bez złowrogiego pomarańczowego koloru oraz nerwowo migająca dioda. Żeby upewnić się, że urządzenie naprawdę nas słucha, ponownie zmieńmy wartości zmieniane wcześniej na 100, na 1000 — jak to było w oryginalnej wersji programu Blink. Podpowiem dziś tylko, że te wartości określają czas, po którym dioda świecąca zmieni stan. Następnie trzeba znowu kliknąć w drugą ikonę i po chwili program wyląduje w pamięci mikrokontrolera, a dioda zacznie migać już dostojnie.

Tutaj jeszcze wyjaśnię, że najczęściej fabryczne Arduino tak właśnie miga zaraz po wyciągnięciu z pudełka, ponieważ ten właśnie program jest tam wgrany, dając gwarancję, że z układem wszystko jest dobrze.