Arduino Uno

Arduino Uno

Niezwykle trudno byłoby znaleźć dziś osobę zainteresowaną praktycznymi aspektami elektroniki i programowania mikrokontrolerów, która nie słyszałaby o platformie Arduino. Płytki rodem ze słonecznej Italii zawojowały serca już nie tylko amatorów oraz studentów wyższych uczelni technicznych, ale nawet pracownie prototypowe przedsiębiorstw i instytucji naukowych. Zdecydowanie najbardziej popularną wersją jest płytka Arduino Uno, która zarówno pod względem wymiarów, jak i możliwości technicznych, plasuje się pomiędzy „maluchami” (np. Arduino Micro) a dużymi platformami pokroju Arduino Mega. Przyjrzyjmy się zatem bliżej modułom, które tak wiele osób wybiera na „pierwsze starcie” z programowaniem mikrokontrolerów, a często także z samą elektroniką.

Arduino Uno – parametry fizyczne i mechaniczne

Płytka drukowana Arduino Uno ma maksymalne wymiary zewnętrzne 68,6 mm x 53,4 mm i nieregularny kształt – w tylnej części modułu znajduje się charakterystyczny występ o głębokości 2,54 mm. Poza obrys PCB wystają jednie złącza USB (na około 6,5 mm) oraz gniazdo DC (na około 1,8 mm). Masa płytki wynosi zaledwie 25 gramów. Na płytce znajdują się cztery otwory montażowe o średnicy 3,2 mm, zaś ich rozmieszczenie jest zgodne z rozstawem otworów w innych wersjach Arduino (np. Arduino Mega 2560) i wielu nakładkach Arduino Shield. Podobnie jak w przypadku otworów montażowych, także układ złączy systemowych (w tej roli występują nieśmiertelne gniazda goldpin o rastrze 2,54 mm) jest nieprzypadkowy i stanowi bodaj najbardziej rozpoznawalną cechę wszystkich modułów zgodnych z Arduino. Te bowiem gniazda służą do łączenia (tak elektrycznego, jak i mechanicznego) z nakładkami Shield, zarówno tymi funkcjonalnymi (np. płytkami ze sterownikami silników, przekaźnikami czy wyświetlaczami), jak i prostymi płytkami prototypowymi, zawierającymi pola lutownicze, a w niektórych wersjach – także niewielką płytkę stykową.

Warto pamiętać, że przy projektowaniu własnej obudowy dla Arduino Uno bądź podczas próby wkomponowania płytki wewnątrz innego urządzenia, można skorzystać z oryginalnych plików projektowych, dostępnych w formacie Eagle, a także z rysunku w formacie DXF – wszystkie te materiały producent udostępnia, w myśl paradygmatu open-source hardware, na swojej oficjalnej stronie. Jeżeli jednak do Twoich zastosowań w zupełności wystarczy jedna z dedykowanych obudów bądź podstawek montażowych, koniecznie skorzystaj z takiej opcji, oszczędzając przy tym sporo czasu na inne zadania związane z projektem na bazie Arduino.

Procesor ATmega328 – serce i mózg Arduino Uno

Najnowsza, oryginalna wersja płytki, czyli Arduino Uno Rev3, bazuje na 8-bitowym mikrokontrolerze z rodziny ATmega328P-PU. O popularności układów z tej serii świadczy fakt, że po przejęciu pierwotnego producenta – firmy Atmel – przez jednego z czołowych producentów układów scalonych na świecie, potentata o nazwie Microchip, linia produktowa AVR została podtrzymana. Co więcej, nadal intensywnie się rozwija, podążając za trendami na mikroprocesorowym rynku. Procesor ATmega328P jest wyposażony w trzy porty wejścia-wyjścia (GPIO), oznaczone jako PortB, PortC oraz PortD. Porty B i D są kompletne (udostępniają programiście wszystkie osiem linii), zaś port C oferuje siedem programowalnych linii I/O, co daje łączną liczbę wyprowadzeń GPIO równą 23. Dwie spośród nich (PortB6..7) są wykorzystane do podłączenia rezonatora kwarcowego o częstotliwości 16 MHz, taktującego rdzeń mikrokontrolera oraz (pośrednio) wszystkie peryferia, a kolejna – PortC6 – jest fabrycznie skonfigurowana jako linia zerująca (RESET). Wszystkie pozostałe linie portów są wyprowadzone na złącza systemowe Arduino Uno i służą do komunikacji z zewnętrznymi urządzeniami, podłączania czujników, modułów wykonawczych itp.

Mikrokontroler ATmega328P oferuje nieulotną pamięć programu (Flash) o pojemności 32 kB, z czego do wykorzystania przez program użytkownika pozostaje 31,5 kB – resztę zajmuje bootloader, czyli program pozwalający na ładowanie programu za pośrednictwem interfejsu UART, tj. bez konieczności używania zewnętrznego programatora ISP. Rolę pokładowego konwertera USB-UART pełni w Arduino Uno Rev3 drugi mikrokontroler – ATmega16U2. Pamięć operacyjna (RAM) głównego procesora ma rozmiar 2 kB, zaś nieulotna pamięć EEPROM, pozwalająca na zapisywanie rzadko modyfikowanych danych (np. kalibracyjnych) – 1 kB. Mikrokontroler Arduino Uno posiada szereg wbudowanych bloków peryferyjnych, które umożliwiają realizację wielu istotnych funkcji – 10-bitowy przetwornik ADC, dwa 8-bitowe timery sprzętowe, jeden timer 16-bitowy, które łącznie udostępniają aż sześć kanałów PWM. Na pokładzie mikrokontrolera znalazły się także interfejsy szeregowe – wspomniany już kontroler U(S)ART, a także SPI i TWI (handlowa nazwa interfejsu, w 100% kompatybilnego z I2C).

Układ elektroniczny Arduino Uno

Najnowsza wersja Arduino Uno zawiera wszystko, czego potrzebujesz, aby móc zacząć pracę z płytką od razu po jej podłączeniu do komputera. Interfejs USB, solidnie zabezpieczony przeciwprzepięciowo za pomocą diod typu transil na obu liniach danych, jest obsługiwany przez wspomniany mikrokontroler dodatkowy (ATmega16U2), wyposażony w niezależne taktowanie i wszystkie obwody niezbędne do prawidłowej pracy. Zasilanie do układu – mikrokontrolera głównego oraz portów GPIO – jest dostarczone przez prosty, ale skuteczny układ decyzyjny, który automatycznie wybiera źródło zasilania w przypadku, gdy do płytki podłączone są zarówno kabel USB, jak i zasilanie zewnętrzne, podane przez złącze DC 2,1/5,5 mm bądź linię Vin w jednym z systemowych złączy typu goldpin. Zewnętrzne napięcie zasilania jest stabilizowane przez 1-amperowy, 5-woltowy stabilizator liniowy, stąd w przypadku, gdy płytka nie będzie pracowała z zasilaniem z portu USB, warto pamiętać o zalecanym zakresie napięć Vin równym 7-12 V (choć w pewnych przypadkach możliwe jest rozszerzenie tego zakresu do 6-20 V). Na płytce drukowanej Arduino Uno znalazło się też miejsce dla miniaturowego stabilizatora o napięciu wyjściowym 3,3 V, co ma szczególne znaczenie w przypadku współpracy z wymagającymi takiego napięcia shieldami oraz zewnętrznymi modułami (np. niektórymi czujnikami cyfrowymi).

W nomenklaturze Arduino przyjęto założenie, że zamiast oryginalnych nazw portów (np. PortB) i numerów linii GPIO (np. PortB5), zostaną one zmapowane na przyjęte arbitralnie oznaczenia. I tak, w płytce Arduino Uno linie „czysto cyfrowe” nazwano numerami od 0 do 13, zaś linie „analogowe” (tj. udostępniające także możliwość pracy jako wejścia wbudowanego przetwornika analogowo-cyfrowego) otrzymały oznaczenia A0..A5 (AD0..AD5). Do dyspozycji użytkownika jest jedna dioda LED, sterowana przez cyfrową linię o numerze 13 (odpowiadającą w rzeczywistości linii 5 portu B). Niektóre wyprowadzenia są fizycznie zdublowane – przykładowo, linie udostępniające piny SCK, MISO, MOSI i SS interfejsu SPI, są dostępne zarówno na jednym ze złączy systemowych, jak i na dodatkowym, 6-pinowym złączu goldpin (które można wykorzystać do podłączenia zewnętrznego programatora, gdy zajdzie taka potrzeba).

Elastyczność i prostota, czyli zalety programowania w środowisku Arduino IDE

Sukces Arduino polega nie tylko na doskonałych wynikach sprzedaży samych płytek i dostępnych dla nich nakładek Arduino Shield – to także potężne wsparcie narzędziowe w postaci doskonale przygotowanego, zintegrowanego środowiska programistycznego Arduino IDE. W jednym, lekkim i wygodnym w użyciu programie, znalazły się wszystkie niezbędne w codziennej pracy funkcjonalności. Oprócz edytora kodu źródłowego (nazywanego w świecie Arduino szkicami – ang. sketches), znajdziesz tu także wbudowany kompilator języka C++, wsparcie dla różnego rodzaju programatorów (w tym przede wszystkim możliwość programowania z użyciem fabrycznego bootloadera), a także bogatą bazę gotowych do użycia przykładowych projektów. Niezwykle łatwo jest także dodawać do środowiska własne lub pobrane z internetu biblioteki – wystarczy wybrać odpowiednią opcję z głównego menu programu i wskazać zapisany wcześniej na dysku folder *.zip, zawierający kody źródłowe biblioteki oraz – jeżeli zostały przewidziane przez twórcę rozszerzenia – także dodatkowe przykłady, ilustrujące sposób użycia biblioteki w docelowym programie. Na marginesie warto wspomnieć, że dla środowiska Arduino IDE przygotowano także specjalne rozszerzenie – ArduBlock – pozwalające na programowanie mikrokontrolera na zasadzie ustawiania graficznych bloczków. Chyba nie istnieje lepszy sposób, pozwalający zainteresować dzieci programowaniem mikrokontrolerów – a stąd już tylko krok do nowej pasji, przyszłościowej i… bardzo opłacalnej na rynku pracy.

Podsumowanie

Jeżeli dopiero zaczynasz swoją przygodę z Arduino, bardzo dobrym wyborem będzie właśnie opisana tu płytka Arduino Uno. Optymalny balans możliwości i ceny pozwala na szybkie wdrożenie się w programowanie mikrokontrolerów, a nie da się ukryć, że bez tej umiejętności poruszanie się we współczesnej elektronice jest wręcz niemożliwe. Bogata oferta nakładek Arduino Shield, dodatkowych akcesoriów i modułów, a także skrojone na miarę środowisko programistyczne Arduino IDE są najlepszą zachętą i stanowią silne wsparcie zarówno podczas stawiania pierwszych kroków w tej dziedzinie, jak i podczas codziennego wykorzystywania Arduino do mniej lub bardziej złożonych projektów.