Arduino: początek

27 XII 2021

Pod koniec lat sześćdziesiątych wielu elektroników wpadło w popłoch. Cała ich wiedza na temat urządzeń lampowych i lata praktyki spotkały na drodze układy scalone, mające zrewolucjonizować świat. Układy cyfrowe były wtedy czymś nowym, ale wszyscy już wiedzieli, że w pewnych dziedzinach elektroniki bez wiedzy jak to działa, nie będzie czego szukać.

Takich rewolucji było kilka. Wymieniona przeze mnie zasypała świat układami TTL i pochodnymi. Dziesięć lat później mikroprocesory stały się ogólnie dostępne i tutaj nowe wymagało jeszcze więcej nauki. Te znowu zmieniały się co kilka lat i kto spoczął na laurach, po dekadzie czy dwóch mógł najwyżej zająć się konserwacją wciąż działającej, lecz już nie rozwijanej technologii. W międzyczasie pojawiła się sieć i doszły kolejne elementy, które elektronik powinien znać. W końcu nastał czas smartfonów i integracji urządzeń z apkami.

I tak dalej. Ktokolwiek z branżą ma coś wspólnego, wie że co kilka lat po prostu trzeba sobie zrobić kolejne małe studia. Tutaj pojawiają się jeszcze inne problemy. Można zainwestować w coś, co nie wypali albo zestarzeje się szybko. Ale przede wszystkim tego wszystkiego jest już za dużo. Nie ma na świecie człowieka, który znałby dobrze wszystkie współczesne architektury. Trzeba wybierać, a wybór to ograniczenia. Może się okazać, że świetna praca przejdzie koło nosa, bo akurat tam trzeba znać platformę B, a nie A, w którą zainwestowaliśmy czas i pieniądze.

Arduino.

Wszystkie te problemy: nadmiaru, braku czasu i zniechęcenia już w 2005 roku zauważyli wykładowcy włoskiego instytutu Interaction Design Institute Ivrea, gdzie studenci mający zajęcia z mikroprocesorów narzekali na ceny urządzeń, brak standardu i ogólny bałagan w materii. Spotykając się wieczorami w barze o nazwie Arduino wymyślili... Arduino.

Zacznijmy od tego, że kilku panów wcale nie odkryło niczego nowego. Najogólniej Arduino to mikroprocesor, masowo produkowany i ogólnie dostępny, umieszczony na płytce, który programuje się w nieco podrasowanym języku C++ Gdzie tu innowacja? Cały pomysł polegał na tym, by umówić się na konkretny procesor, konkretną płytkę, konkretny zestaw instrukcji i niczego już tu nie zmieniać. I tak na każdej uczelni świata, jeśli ktoś chciał prowadzić zajęcia z mikroprocesorów w oparciu o Arduino, nie musiał zastanawiać się nad szczegółami, lecz dostawał wszystkie informacje gotowe i usystematyzowane. Albowiem jedną z cech projektu, która zresztą jest głównym powodem sukcesu, to otwartość. Arduino jest za darmo. Oczywiście nie elementy, ale idea, dokumentacja i oprogramowanie.

I tak sobie mijały lata, a projekt rósł. Na początku niemrawo i tylko w hermetycznych środowiskach. Lecz gdy jeden programista napisał bibliotekę obsługi wyświetlacza, drugi ją poprawił, trzeci przepisał od początku, a jakiś siedemnasty stwierdził, że na tym etapie jest tak genialna, że nic się tu już nie poprawi, okazało się, że w końcu świat otrzymał bibliotekę bardzo dokładnie sprawdzonych procedur i to jeszcze dostępnych za darmo.

Wtedy Arduino zauważyli elektronicy. Po co pisać własne procedury, skoro można korzystać z darmowych, przy których siedziała nieraz setka programistów, debatując po nocach na forach? Nie wiadomo kiedy, Arduino zaczęło pojawiać się tam, gdzie wcale pojawiać się nie miało — już nie w salach wykładowych, a w halach montażowych. Okazało się, że ten „wcale nie przemysłowy” standard — jak twierdzą przeciwnicy używania tej platformy poza światem uczelnianym — jak najbardziej ze światem przemysłowym sobie radzi, o ile tylko będą to zastosowania niekrytyczne. Choć kto tam wie, czy po cichu Arduino nie trafiło także do czołgów albo na stoły operacyjne?

Podsumujmy sobie zatem, czym jest standard Arduino. Jest procesorem umiejącym pracować w sposób określony przez standard, umieszczonym na płytce o kształcie opisanym przez standard i programowanym w języku sprecyzowanym przez standard.

Jak widać, nikt tu nie określa konkretnego procesora. Procesor może być jakikolwiek, byle spełniał minimum standardu. Tak na marginesie, nie był to jedyny taki pomysł. Podobnych było wiele, niektóre także odnosiły i wciąż odnoszą sukces. Jednak Arduino jest chyba najbardziej znane. Tak znane, że obecnie właściwie każdy, kto wiąże swoje życie zawodowe lub hobbystyczne z elektroniką, winien go choć trochę znać.

Po co ci to?

No właśnie, tyle gadania, ale żadnego konkretu, do czego tego się używa? No cóż, odpowiedź również będzie niekonkretna: do prawie wszystkiego. Do tych wszystkich rzeczy w świecie elektroniki, które zachowują się w jakiś niestatyczny sposób. Od najprostszych lampek na choinkę, które migają bez sensu, do takich które migają z sensem, albo migają do taktu muzyki, albo już nie migają denerwująco, a płynnie zmieniają barwy, dając w końcu efekt nietandetny. A to tylko lampki.

Z Arduino można zrobić takie rzeczy jak termometr, wilgotnościomierz, ciśnieniomierz, wykrywacz ruchu, ciepła, gazów, dymu, dotyku, pulsu, nachylenia, wibracji, pola magnetycznego, dźwięku, otwartych okien albo drzwi, zegarek, budzik, sterownik czasowy, wszelkiego typu maszyny, w których coś się obraca, przesuwa, porusza, stuka czy uderza, jak również tysiące innych projektów, od flippera, przez automat do sprzedaży lodów, po instrument muzyczny.

Arduino może rozmawiać z nami za pomocą wyświetlaczy LCD, LED, VFD, nixie, diod świecących, żarówek, wyświetlaczy graficznych, wskaźników wychyłowych, odtwarzania komunikatów audio, pikania i wycia. Można też do niego wprowadzać informacje klawiaturami, joystickami, enkoderami, potencjometrami, panelami dotykowymi jak i siecią, przez internet, po BT, Wi-Fi i klasycznie, kabelkiem, a nawet innym Arduino.

Można... naprawdę dużo można i częściej ograniczeniem będzie wyobraźnia, a nie sprzęt. Tutaj niestety zmartwię: jeśli wyobraźnia podpowie coś rewelacyjnie oryginalnego, z pewnością ktoś już to wykonał, albowiem Arduino to już miliony projektów. Czas najwyższy przypatrzyć się, o czym my tu w ogóle mówimy.

Dzień dobry, jestem król Arduino Pierwszy.

Tytuł to nie żart, bowiem pierwsze Arduino nazywało się właśnie Uno i wygląda tak.

Na płytce nie ma zbyt wiele elementów. Znajdziemy tam serce albo mózg, czyli mikrokontroler przystosowany do pracy w tym środowisku. Na początku był to Atmel ATmega8, później rozwojowe wersje, z większą ilością pamięci. Ważne jest to, że by pracować w środowisku Arduino, nie trzeba znać zawiłości technicznych związanych z danym procesorem. Wypada tylko wiedzieć ile ma pamięci — by zmieścił się kod, który mamy zamiar napisać oraz z jakim napięciem pracuje — by go przypadkiem nie spalić. To wszystko jest oczywiście doskonale opisane w dokumentacji.

Na płytce znajduje się jeszcze kilka innych układów. Na przykład interfejs USB. Albowiem układ programuje się wprost z komputera właśnie przez USB. Znajdziemy tam także zasilacz, bowiem urządzenie można zasilać zarówno z gniazdka USB jak i z niestabilizowanego zasilacza zewnętrznego. Poza tym są tu jeszcze diody świecące, wskazujące komunikację płytki z komputerem oraz włączenie zasilania, jedna dioda ogólnego przeznaczenia, układy resetujące płytkę po włączeniu, przycisk resetowania ręcznego, kwarc i złącza, o których opowiem kiedyś przy okazji, bo na tym etapie są nieprzydatne.

Przydatne są za to złącza znajdujące się na dłuższych krawędziach płytki i one stanowią istotę projektu. To tutaj podłącza się klawiatury, wyświetlacze, potencjometry i wszelkie inne czujniki, a także układy wykonawcze. Każde gniazdko jest podpisane, a schemat z opisem stanowi niezbędną każdemu ściągę. Tutaj słowo wyjaśnienia: wtykając tu na oślep cokolwiek bardzo trudno zepsuć płytkę. Łatwiej już popsuć peryferia, ale to głównie gdy pomyli się bieguny zasilania. Zatem Arduino jest dość niezawodne, a nawet gdyby zdarzyła się nieprzygoda, można wymienić mikrokontroler, który osadzony jest w podstawce.

Gniazdka mają różne funkcje, większość można wybrać spośród kilku alternatywnych, ale o tym porozmawiamy w kolejnym odcinku. Kształt płytki stanowi standard, więc możemy do niej dokupić obudowę oraz płytki montażowe, które pasują rozstawem gniazd, a zowią się shieldami. To płytki — nakładki, spełniające różne funkcje, które można układać w stosik, jak mięsko i serek na kanapce.

Arduino Drugi, Mały, Wielki i z nieprawego łoża.

Wspominałem o standardzie, porządku i końcu ery chaosu, gdy tymczasem na samej stronie oficjalnej projektu możemy naliczyć kilkadziesiąt różnych Arduino. Mało tego, Włosi mają prawa do nazwy i grafik, ale już nie do schematów i rozwiązań montażowych. Wobec tego na świecie powstało sporo firm robiących własne Arduino, które już się tak nie nazywa oficjalnie, choć wszyscy tak na to mówią.

To prawda, standard dość szybko uległ rozmnożeniu na wiele nowych standardów. Jednak jest w tym porządek, ponieważ:

a) Tak naprawdę kształtów płytek jest tylko kilka i w obrębie każdej rodziny wszystko do siebie pasuje.

b) Wszystkie urządzenia kompatybilne z Arduino programuje się, używając tego samego języka i tych samych procedur. Co najwyżej bogatsze wersje będą używać procedur, których skromniejsze nie będą w stanie uruchomić.

Dlaczego powstało tyle odmian? Z różnych powodów. Na przykład popularna stała się wersja Arduino Mega.

Posiada 70 portów zamiast 20, które oferuje wersja podstawowa. Używa się jej wszędzie tam, gdzie trzeba mieć dużo portów.

Jednak to dwie inne płytki zrobiły największą karierę: Nano oraz Micro.

Nano właściwie jest tym samym co pierwsze Arduino, tylko mocno pomniejszonym. Jest dzięki temu tańsze i mieści się tam, gdzie nie ma miejsca na Uno. Wygospodarowano tam nawet dwa dodatkowe porty, więc jest ich w sumie 22.
Mini natomiast jest wersją Nano, ale bez interfejsu USB. Jest jeszcze mniejsze i tańsze, lecz do programowania potrzebny jest osobny interfejs — programator. Jednak gdy buduje się dużą ilość urządzeń wykorzystujących Arduino, to właśnie ta płyta używana jest najczęściej ze względu na koszty. W gotowym urządzeniu złącze USB często jest zbędne.

Jeśli ktoś dotąd nigdy nie spotkał się ze środowiskiem Arduino, pewno ma obecnie chaos w głowie. Wszystko się jednak poukłada, gdy zajmiemy się przykładami. Zdradzę tylko, że czeka nas zapoznanie się z częścią programową, bowiem wszystko, co procesor będzie robić, trzeba napisać w postaci rozkazów.