Spis treści:
Osoby, które zajmują się elektroniką, z pewnością dostrzegają bardzo silny trend, skłaniający do modularyzacji wszystkich możliwych rozwiązań. Jeszcze kilkanaście lat temu, jeżeli mieliśmy do czynienia z gotowym, w pełni funkcjonalnym modułem (układem elektronicznym), to w sporej większości przypadków był to moduł radiowy. Dziś w takiej formie znajdziemy dosłownie wszystko, co jest potrzebne do budowy układu elektronicznego – zarówno prototypu czy zestawu do celów dydaktycznych, jak i w pełni profesjonalnego urządzenia wykonywanego na potrzeby masowej produkcji. Bez trudu można kupić tak proste i tanie moduły złożone z zaledwie kilku lub kilkunastu elementów elektronicznych i niewielkiej płytki drukowanej (np. moduły przekaźników czy proste przetwornice DC/DC), jak i złożone, wielofunkcyjne moduły o doskonałych parametrach (np. wysokiej klasy wzmacniacze audio, układy akwizycji danych czy kompletne kontrolery lotu dla małych i średniej wielkości dronów). Pośród wielu czynników związanych bezpośrednio z dynamicznym rozwojem elektroniki i obniżaniem cen elementów dyskretnych oraz układów scalonych niezwykle istotny wpływ na modularyzację ma sukces, jaki odniosła prosta w użyciu i uniwersalna platforma Arduino.
Mała – wielka płytka do (prawie) wszystkich zastosowań
Swoją popularność Arduino zawdzięcza doskonałemu balansowi ceny i możliwości. Płytki są nie tylko stosunkowo tanie, ale przy tym zaprojektowane i wyprodukowane z rozmysłem – mają wszystko, co niezbędne do rozpoczęcia programowania niemal natychmiast po podłączeniu płytki do komputera. Co ważne, elastyczny układ zasilania obecny w większości płytek pozwala zarówno na zasilanie modułu z komputera lub ładowarki mobilnej (za pomocą kabla USB), jak i za pośrednictwem dedykowanego złącza zasilania. Możliwe jest także dostarczanie energii poprzez złącza typu goldpin. Każdy moduł Arduino (zarówno oryginalny, jak i jeden z niezliczonych klonów oraz układów wzorowanych na tej popularnej platformie) oferuje użytkownikowi kilkanaście, a nawet kilkadziesiąt uniwersalnych linii GPIO służących do sterowania układami zewnętrznymi, odbierania danych z wejść oraz czujników lub komunikacji za pomocą podstawowych interfejsów szeregowych (np. SPI, I2C czy UARTa). Twórcy Arduino stworzyli (początkowo tylko na własne potrzeby) specjalny standard dotyczący zarówno fizycznego rozmieszczenia złączy goldpin, jak i układu poszczególnych linii zasilania oraz portów procesora. Standard ten przyjął się na rynku elektroniki z niebywałą wprost łatwością, co sprawia, że coraz więcej producentów stosuje go w swoich konstrukcjach.
Warto zauważyć, że – choć najczęściej pierwsze skojarzenie z Arduino słusznie dotyczy zastosowań amatorskich czy studenckich – to sloty rozszerzeń według standardu znanego z włoskich modułów można znaleźć w większych i bardziej kosztownych zestawach ewaluacyjnych kierowanych przede wszystkim do inżynierów z działów projektowych przedsiębiorstw oraz naukowców prowadzących badania na wyższych uczelniach. O nieustającej popularności Arduino przesądza fakt, że w ciągu wielu lat obecności tej marki na rynku setki producentów elektroniki opracowały nakładki rozszerzające możliwości modułów bazowych (tzw. Arduino shield) pozwalające na sterowanie przeróżnymi typami urządzeń, wykrywanie oraz pomiary sygnałów i wielkości fizycznych, a nawet obsługę dźwięku i niemal wszystkich możliwych rodzajów wyświetlaczy. Ogromną zaletą platformy jest także silne wsparcie software’owe – zarówno zintegrowane środowisko programistyczne Arduino IDE, jak i dostępne w domyślnej instalacji biblioteki umożliwiają szybkie, łatwe i przyjemne budowanie przeróżnych urządzeń, popularne serwisy branżowe zaś (np. github) udostępniają niezliczone dodatkowe biblioteki, przygotowywane przez producentów nakładek oraz przez samych użytkowników.
Przykładowe nakładki Shield do różnych zastosowań.Arduino Uno Rev3 vs. Arduino Mega 2560 Rev3 – najważniejsi gracze w całej rodzinie Arduino
Arduino Uno Rev3 jest obecnie jedną z najpopularniejszych wersji platformy. Płytka doskonale sprawdza się w mniej wymagających obliczeniowo zastosowaniach, w których liczba potrzebnych linii GPIO nie przekracza dwudziestu. Ponieważ moduł jest także jednym z tańszych członków całkiem już sporej rodziny Arduino, bywa szczególnie chętnie wykorzystywany do sterowania prostymi, prototypowymi robotami mobilnymi. Stosuje się go również do sterowania efektami świetlnymi (jak choćby małymi matrycami i kostkami LED), miniaturowymi systemami automatyki (zarówno przy roletach czy oświetleniu, jak i przy inteligentnych urządzeniach do podlewania ogrodu); wspomniane rozwiązania spotkamy też w przypadku monitoringu warunków środowiskowych.
Arduino Uno Rev3Znacznie większa i bardziej złożona płytka – Arduino Mega 2560 Rev3 – potrafi udźwignąć projekty o nieporównanie wyższym stopniu zaawansowania. Wielokrotnie wyższa jest tu zarówno liczba dostępnych pinów GPIO, jak i rozmiary wbudowanych w strukturze mikrokontrolera pojemności pamięci Flash oraz RAM. Dlatego też płytkę Arduino Mega 2560 Rev3 chętnie wykorzystuje się w urządzeniach, które z natury wymagają znacznie większej liczby pinów sterujących lub wejściowych. Doskonałymi przykładami będą tutaj: bezpośrednie sterowanie większymi matrycami diod LED, wielofunkcyjnymi robotami o dużej liczbie czujników i napędów (np. robotami kroczącymi) czy też złożonymi systemami automatyki domowej. Nie da się ukryć, że Arduino Mega 2560 doskonale nadaje się także do – w pełni użytecznych – aplikacji produkcyjnych – bez problemu można za jego pomocą wysterować nawet sporych rozmiarów drukarkę 3D czy wieloosiową frezarkę CNC, wyposażoną w kilka sterowników silników krokowych, szereg czujników (np. wyłączników krańcowych i enkoderów) oraz interfejs do komunikacji z użytkownikiem.
Arduino Mega 2560 Rev3Kwestie mechaniczne
W przypadku Arduino Uno Rev3 stosunkowo niewielkie rozmiary (oficjalna płytka ma wymiary 68,6 mm x 53,4 mm) i masa (zaledwie 25 g) pozwalają na łatwe zabudowanie modułu w tanich i popularnych obudowach uniwersalnych, choć bez trudu można wybrać także dowolną z dziesiątek dedykowanych obudów różniących się konstrukcją, kolorystyką i materiałem, z którego są wykonane. W czterech miejscach (niesymetrycznie względem osi modułu) rozmieszczone są otwory montażowe o średnicy 3,2 mm pozwalające na umocowanie płytki, np. za pomocą tulejek dystansowych M3, do dna obudowy bądź jednej z pasujących wymiarowo podstawek uniwersalnych. Goldpiny stanowiące złącza rozszerzeń są rozmieszczone jedynie na dłuższych bokach płytki – wyjątek stanowi tutaj niewielkie, sześciopinowe złącze dające użytkownikowi dostęp do interfejsu programistycznego (ISP), czyli jednocześnie również interfejsu szeregowego SPI. Jedynymi elementami wystającymi poza obrys płytki drukowanej są gniazda: USB typu B oraz zasilania DC w standardzie 2,1/5,5 mm.
Arduino Mega 2560 Rev3 nie różni się szerokością płytki drukowanej, rozmieszczeniem otworów montażowych oraz gniazd USB i DC od analogicznych wymiarów modułu Uno Rev3 – większa jest natomiast długość, która w tym modelu wynosi 101,52 mm, czyli o niecałe 33 mm więcej. Dzięki tej stosunkowo niewielkiej różnicy udało się konstruktorom Arduino zmieścić w tym module trzy dodatkowe złącza typu goldpin udostępniające użytkownikowi kilkadziesiąt linii GPIO niedostępnych w wersji Uno. Dwa spośród tych dodatkowych złączy są umieszczone równolegle do podstawowych gniazd standardu Arduino, tuż obok nich, trzecie gniazdo zaś – tym razem dwurzędowe – znajduje się na krótszym boku płytki, naprzeciwko gniazd USB i DC. Ze względu na dość spore wymiary płytki drukowanej Arduino Mega jest wyposażone także w dwa dodatkowe otwory montażowe znajdujące się po obu stronach dwurzędowego gniazda na końcu tejże płytki. W większości zastosowań można jednak do obydwu opisywanych modułów stosować te same podstawki uniwersalne (z wykorzystaniem czterech „wspólnych” otworów) lub słupki dystansowe w obudowie urządzenia docelowego – o ile tylko znajduje się tam wystarczająca ilość wolnego miejsca, aby można było zmieścić także dłuższy moduł.
Arduino Uno Rev3 vs. Arduino Mega 2560 Rev3 – porównanie mikrokontrolerów
Zdecydowana większość zarówno oryginalnych płytek Arduino, jak i różnej maści klonów i modułów kompatybilnych pracuje pod wodzą 8-bitowych mikrokontrolerów z rodziny AVR (warto nadmienić, że choć w handlu nadal można jeszcze spotkać procesory wyprodukowane przez firmę Atmel, wszystkie nowe moduły są już wyposażone w mikrokontrolery oznakowane logotypem firmy Microchip, która kilka lat temu wchłonęła Atmela wraz z całym „dobrodziejstwem inwentarza”). Klasyczne Arduino Uno Rev3 jest wyposażone w mikrokontoler o oznaczeniu ATmega328P-PU, taktowany rezonatorem kwarcowym o częstotliwości 16 MHz. Układ oferuje 32 kB pamięci programu Flash (z czego pół kilobajta zajmuje fabrycznie wgrany bootloader), 2 kB pamięci operacyjnej (SRAM) i 1 kB nieulotnej, programowalnej pamięci EEPROM. Spośród 23 linii wejścia/wyjścia dla użytkownika dostępnych jest 20: cały port D (PD0..PD7) oraz po 6 najmłodszych linii portów: C (PC0..PC5) i B (PB0..PB5). Do dyspozycji programisty jest 6 kanałów 10-bitowego przetwornika analogowo-cyfrowego oraz tyle samo kanałów wyjściowych (PWM) timerów sprzętowych obsługiwanych przez dwa timery 8-bitowe (Timer0 i Timer2) oraz jeden szesnastobitowy (Timer 1).
Mikrokontroler ATmega328P-PU na płytce Arduino Uno
Mikrokontroler jest wyposażony w interfejsy: USART, SPI oraz TWI (I2C). Warto pamiętać, że interfejs USART (a dokładniej dwie linie danych pracujące tutaj w trybie asynchronicznym – RXD i TXD) są podłączone jednocześnie do konwertera USB-UART i do wyprowadzeń D0, D1 Arduino – potencjalnym konfliktom, które mogłyby się pojawić podczas próby jednoczesnego korzystania z zewnętrznego urządzenia z interfejsem szeregowym oraz wbudowanego konwertera, zapobiegają rezystory RN4A i RN4B, wpięte fabrycznie pomiędzy wyprowadzenia mikrokontrolera a konwerter. Warto także dodać, że w odróżnieniu od starszych wersji Arduino oraz niezliczonych klonów oryginalnej płytki, Arduino Uno Rev3 komunikuje się z komputerem nie za pośrednictwem dedykowanego układu scalonego (np. FT232 czy CH340), ale poprzez specjalnie zaprogramowany mikrokontroler służący jedynie do tego celu – ATmega16U2. Kupując Arduino, otrzymujesz więc płytkę nie z jednym, ale dwoma mikrokontrolerami, zadaniem tego drugiego zaś jest jedynie zapewnienie poprawnej komunikacji pomiędzy modułem a komputerem.
W przypadku Arduino Mega 2560 Rev3 mamy do czynienia ze znacznie potężniejszym i elastycznym mikrokontrolerem w 100-pinowej obudowie TQFP. Procesor ten jest nie tylko sporo większy i silniejszy obliczeniowo od poczciwego ATmega328 – rozmiarami pamięci oraz ilością bloków peryferyjnych wybija się na tle całej rodziny AVR. ATmega2560 oferuje 256 kB pamięci programu (Flash) – z czego 8 kB zajmuje wbudowany bootloader – a także aż 8 kB pamięci SRAM i 4 kB EEPROM. Szybkość taktowania rdzenia wynosi, podobnie jak w przypadku Arduino Uno, 16 MHz, dzięki czemu przenoszenie wielu programów (w szczególności tych, napisanych „od zera” bez użycia wbudowanych bibliotek środowiska Arduino IDE) będzie znacznie łatwiejsze. W porównaniu do mikrokontrolera zastosowanego w Arduino Uno ATmega2560 oferuje ponad dwukrotnie więcej, bo aż 16 wejść przetwornika ADC i 54 cyfrowe linie GPIO.
Trzecia edycja tego doskonałego i rozbudowanego modułu używa – podobnie, jak Arduino Uno Rev3 – konwertera USB-UART na bazie ATmega16UA (w przeciwieństwie do dwóch wcześniejszych generacji modułu, które korzystały z układu ATmega8U2). Warto dodać, że w omawianej wersji pojawiło się także kilka innych ulepszeń, m.in. rezystor na linii HWB ściągający ją do masy w celu ułatwienia aktualizacji oprogramowania konwertera w trybie DFU, a także ulepszony układ sprzętowego resetu. O prawdziwej sile zastosowanego w Arduino Mega 2560 Rev3 mikrokontrolera świadczą przede wszystkim wbudowane weń układy peryferyjne – oprócz dwóch 8-bitowych i aż czterech 16-bitowych timerów sprzętowych do dyspozycji programisty są cztery kontrolery szeregowe USART, komparator analogowy oraz oczywiście interfejsy SPI i TWI (I2C). W bardziej zaawansowanych projektach mogą także przydać się liczne przerwania zewnętrzne, których w Atmega2560 jest aż 8 (INT7:0), nie licząc przerwań typu pin-change-interrupt (wykrywających zmianę stanu logicznego danej linii) – tych jest w potężnej Atmedze aż dwadzieścia cztery.
Mikrokontroler ATmega2560 na płytce Arduino MegaHardware – wszystko wokół mikrokontrolera
Obok istotnych różnic w porównaniu obydwu omawianych modułów można także znaleźć spore podobieństwa. Zarówno Arduino Uno Rev3, jak i Arduino Mega 2560 Rev3 są wyposażone w diody LED sygnalizujące stan komunikacji z komputerem za pośrednictwem portu USB – dwie żółte, miniaturowe diody SMD pozwalają jednym rzutem oka stwierdzić, czy i w którą stronę zachodzi komunikacja. Sam port USB jest dobrze zabezpieczony – zgodnie z najlepszymi zasadami projektowania obwodów dla tego najpopularniejszego w świecie komputerowym interfejsu obydwie linie zasilania są odseparowane za pomocą szeregowych dławików ferrytowych, na liniach danych zaś znajdują się zabezpieczenia przeciwprzepięciowe. Mikrokontroler ATmega16uA odgrywający rolę konwertera USB-UART w obydwu modelach jest wyposażony w dedykowane złącze ICSP pozwalające na aktualizację oprogramowania tego pomocniczego układu, bez konieczności wykonywania karkołomnych połączeń „na piechotę”.
Także w obwodzie zasilania znajdziemy spore podobieństwa. Obydwa moduły są wyposażone w układ automatycznego przełączania źródła napięcia zasilania chroniący zarówno Arduino, jak i współpracujący komputer i/lub zasilacz przed uszkodzeniem w sytuacji, gdy napięcie jest doprowadzone zarówno przez kabel USB, jak i gniazdo zasilania DC (bądź linię VIN dostępną w gnieździe goldpin). Za przełączanie odpowiada wbudowany komparator wraz z tranzystorem MOSFET. W modułach nie zabrakło oczywiście przycisku RESET, stabilizatora liniowego o napięciu wyjściowym 3,3 V, a także diod LED sygnalizujących obecność napięcia zasilania (z dowolnego źródła). Obydwie płytki zostały także wyposażone w dodatkową diodę LED, którą można wykorzystać choćby do wstępnego uruchomienia modułu za pomocą prostego programu testowego – w świecie mikrokontrolerów odpowiednikiem nieśmiertelnego „hello world”, znanego z programowania komputerów, jest przecież właśnie miganie diodą. Warto pamiętać, że dioda jest podłączona za pomocą wtórnika zbudowanego na bazie wzmacniacza operacyjnego LM358 – oznacza to, że nie obciąża ona bezpośrednio połączonej z wejściem wtórnika linii PB7 (w nomenklaturze Arduino jest to cyfrowy pin o numerze 13), dzięki czemu linia ta pozostaje do dowolnego wykorzystania, również jako wejście cyfrowe.
Podsumowanie
Opisane w niniejszym artykule podobieństwa i różnice pomiędzy Arduino Uno Rev3 oraz Arduino Mega 2560 Rev3 dobitnie pokazują, że moduły zostały zaprojektowane z myślą o doskonałej kompatybilności programowej, ale jednocześnie w taki sposób, aby każdy użytkownik mógł wybrać do swojego projektu idealnie dopasowaną płytkę bazową – bez nadmiaru pinów czy osprzętu, a więc także w stosownej do danej aplikacji cenie. Przenoszenie programów napisanych dla płytki Arduino Uno na „większego kolegę” – Arduino Mega 2560 jest bardzo proste i najprawdopodobniej nie będzie wymagało żadnych zmian w kodzie. Konwersja „w dół” także jest możliwa, o ile Twój program nie korzysta z „nadliczbowych” interfejsów USART czy linii portów GPIO obecnych tylko w Arduino Mega 2560. Warto pamiętać, że istotnym ograniczeniem jest tutaj także rozmiar pamięci – dlatego planując budowę naprawdę złożonego projektu, warto od razu rozważyć zastosowanie Arduino Mega 2560 – nawet jeżeli wykorzystuje on zaledwie kilka lub kilkanaście linii GPIO.
Jak oceniasz ten wpis blogowy?
Kliknij gwiazdkę, aby go ocenić!
Średnia ocena: 4.7 / 5. Liczba głosów: 10
Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.
2 Responses
Arduino uno .czy mega to wolny ślimak i na pewno nie do przemysłu tylko dla niewymagających amatorów 16 MHz łał cóż to za prędkość kosmiczna pierwszy lepszy STM zjada go we wszystkim
Arduino jest świetne, mamy w domu w sumie kilkanaście: nano, uno i mega, robimy różne projekty z dziećmi obecnie przerabiamy gry wideo na ekranikach OLED 🙂 Polecam!