Jakiś czas temu zacząłem zastanawiać się nad wejściem w świat elektroniki i mikrokontrolerów. Zawsze była jednak jakaś bariera, a potrzeby nie były wystarczająco silne. Do domowej automatyki wykorzystuję routery OpenWRT oraz karty przekaźnikowe i to w zasadzie wystarcza. Jednak do niektórych rozwiązań aż się prosi o zastosowanie jakiegoś dedykowanego, stabilnego i niezawodnego układu elektronicznego. Przykłady? Nadzór kotła c.o., aby był niezależny od restartów routera. Podobnie z monitorowaniem otwarcia drzwi (tym się zajmie w przyszłości centrala alarmowa). Czasem też przychodzi chęć podłączenia jakiegoś czujnika, którego stany są nieco bardziej złożone niż włącz/wyłącz.
Przez jakiś zastanawiałem się nad zakupem jakiegoś zestawu uruchomieniowego opartego o kontroler Atmega. Takie zestawy jednak trochę kosztują, potrzebują programatora, a po wykonaniu prototypu na płytce testowej, właściwie najlepiej byłoby przenieść projekt na dedykowaną płytkę. Jak na początek dość skomplikowane, dla kogoś, kto z elektroniką nie miał wcześniej nic wspólnego.
Pewnego dnia, zupełnie przypadkiem, trafiłem na sklep Nettigo, a tam na Arduino. Od razu mnie to zainteresowało i zacząłem lekturę sieci. Cóż to takiego jest? Projekt Open Source (już mi się podoba), obejmujący zarówno platformę sprzętową (Open Hardware) jak i oprogramowanie (środowisko programistyczne). To jest to czego potrzebowałem – jakby zaprojektowane dla moich potrzeb.
Cena Arduino Uno (około 100zł), który wybrałem do pierwszych eksperymentów, może się początkowo wydawać dość wysoka, jeżeli weźmie się pod uwagę, że procesor Atmel to tylko około 13 zł. Jest jednak znacznie niższa niż gotowych zestawów uruchomieniowych, opartych o ten sam mikrokontroler. Poza tym Atmega to nie wszystko. Co więc dostajemy? Zgrabną, niewielką płytkę, którą bez problemu podłączymy do portu USB komputera (albo routera, ale o tym później). Port USB zapewni trzy rzeczy: zasilanie całego układu, możliwość programowania kontrolera (odpada więc konieczność zakupu programatora) oraz komunikację z komputerem (gdy nasz program będzie potrzebował takiej komunikacji). Oczywiście Arduino nie musi współpracować na stałe z komputerem – możemy je zaprogramować, a następnie podłączyć do tradycyjnego zasilacza z dala od komputera.
Nie dla samej komunikacji jednak kupuje się Arduino. Na płytce znajdziemy masę wyjść, między innymi wejścia analogowe oraz wejścia i wyjścia cyfrowe. Co nam to daje? Do płytki możemy podłączyć cokolwiek (dosłownie, praktycznie cokolwiek, co ma związek z prądem) – czujniki, diody, przekaźniki, czytniki, układy komunikacyjne radiowe i przewodowe czy cokolwiek nam przyjdzie do głowy. Co więcej, ponieważ Arduino to popularny standard, to z dużym prawdopodobieństwem to co sobie wymyśliliśmy, podłączał już ktoś wcześniej i być może opisał to w sieci a nawet zamieścił program lub bibliotekę do obsługi danego układu. Komunikacja z układami przez interfejs 1-wire, i2c czy RS nie jest żadnym problemem, nie trzeba do tego szczególnych zdolności.
Arduino jest tak zaprojektowane, że posiada standardowy rozstaw wyjść, aby łatwo było tworzyć rozszerzenia. Dzięki temu powstała cała masa tzw. powłok (shieldów), które nakładamy na naszą płytkę i rozbudowujemy jej funkcje. Co więcej, ponieważ Arduino to Open Source, to każdy może opracować i produkować własne rozszerzenia (ba, może nawet produkować własne klony Arduino – musi tylko użyć innej nazwy). Sytuacja jest więc taka, że na rynku jest cała masa shieldów i najróżniejszych odpowiedników Arduino. Każdy znajdzie coś dla siebie.
Co to oznacza w praktyce? Jeżeli stwierdzimy, że nasze Arduino powinno komunikować się ze światem przez Ethernet (i TCP/IP) to możemy do problemu podejść na kilka sposobów. Najprostszym rozwiązaniem jest dokupienie shielda z portem Ethernet (niejako gratis dostaniemy możliwość zapisu dowolnych danych na karcie SD). W tym wypadku nakładamy powłokę na Arduino Uno, do programu dołączamy gotową bibliotekę i mamy działający serwer internetowy (przykładowo stację pogodową z komunikacją przez IP). Jeżeli nie mamy jeszcze Arduino to zamiast kupować powłokę możemy wybrać klon Arduino z portem Ethernet. Inną drogą jest zakup zewnętrznego modułu ethernet i podłączenie go do Arduino (rozwiązanie tańsze niż Ethernet Shield, ale nieco mniej wygodne). Każdy może więc wybrać odpowiednią drogę dla siebie.
Ethernet to oczywiście tylko przykład. Shieldów dla Arduino jest bardzo wiele. Dzięki nim możemy dołączyć wyświetlacz LCD (znakowy, graficzny, mono lub kolorowy, nawet dotykowy), klawiaturę, silniki, urządzenia bezprzewodowe w różnych standardach (np. Bloototh), itp. Każdy z pewnością wybierze coś dla siebie. Już sama lektura listy rozszerzeń może podsunąć wiele pomysłów na ciekawe projekty. Rozbudowa inteligentnego domu to tylko jedno z zastosowań.
Ja do pierwszych doświadczeń wybrałem Arduino UNO, choć wersji sprzętu jest więcej. Jeżeli jest potrzeba, można wybrać Arduino miniaturowe (nawet takie, które można wszyć w ubranie). Jeżeli trzeba mocniejszego sprzętu, można wybrać Arduino Mega z wydajniejszym procesorem i większą ilością wejść/wyjść. Każdy powinien wybrać właściwą bazę dla swojego projektu. Arduino Uno wybrałem dlatego, że jest najpopularniejsze, najbardziej standardowe i w zupełności wystarczające do założonych zastosowań. Dodatkowo jest to oryginał a nie klon, bo w ten sposób wspieram rozwój projektu Arduino.
Warto wiedzieć, że na fali popularności Arduino, powstały projekty oparte o inne rodziny procesorów, zgodne jednak z Arduino sprzętowo (a niekiedy nawet od strony programistycznej). Świadczy to po pierwsze o dużej popularności projektu, a z drugiej strony strony pozwala mieć nadzieję, że wiedzę zdobytą przy zabawie z Arduino da się wykorzystać przy innej okazji. Wszak, w moim odczuciu, to doskonała okazja do łatwego zdobycia doświadczenia w dziedzinie elektroniki. Świetne miejsce startu, które pozwoli w przyszłości budować układy od podstaw (o ile będzie taka potrzeba).
Ten wpis rozpoczyna dłuższy cykl tekstów o Arduino. Jeżeli będzie zainteresowanie tematem, opiszę w przyszłości środowisko programistyczne, połączenie Arduino z OpenWRT i moje prace nad rozbudową „inteligentnego domu”.
Na sam koniec chciałbym podziękować Nettigo za bezpłatne udostępnienie Arduino i innych układów do testów. Dlaczego wybrałem Nettigo do współpracy? Mają szeroką ofertę, przystępne ceny, a przede wszystkim dużo fachowej wiedzy, którą w razie potrzeby wspomagają klientów. Jeżeli dodać do tego sprawną obsługę i szybką wysyłkę, wybór jest oczywisty.
Eh, pamiętam pierwsze zajęcia na Politechnice z systemów pomiarowych – konfigurowaliśmy wówczas podobne płytki. Ileż to było trzeba zachodu żeby kilka diodek odpalać w określonej sekwencji…