Od prawie dwudziestu lat minikomputery SBC (ang. Single Board Computers) cieszą się rosnącą popularnością w szeroko rozumianej społeczności elektroników, programistów i innych osób związanych hobbystycznie lub zawodowo z techniką. Wskutek licznych działań rozwojowych komputery jednopłytkowe coraz szybciej doganiają pełnowymiarowe komputery klasy PC swoimi parametrami sprzętowymi i stanowią dla nich ciekawą alternatywę. Pierwotnym celem, dla którego powstały te urządzenia, było utworzenie przystępnego cenowo narzędzia do celów dydaktycznych, dzięki któremu uczniowie i studenci szkół i uczelni technicznych mogliby poznawać tajniki budowy sprzętowej i programowania elektronicznych maszyn cyfrowych. Takie rozwiązanie wyśmienicie zdało egzamin, a także zdobyło uznanie zarówno wśród majsterkowiczów budujących urządzenia elektroniczne w domowym zaciszu, jak i zawodowych konstruktorów systemów wbudowanych szerokiego zastosowania. Mogłoby się wydawać, że komputery jednopłytkowe to niekończące się pasmo zalet, ale czy na pewno? Na przykładzie porównania charakterystyki Arduino i Raspberry Pi zobaczmy, jakie argumenty przemawiają za, a jakie przeciw komputerom jednopłytkowym i platformom embedded jako narzędziom do nauki programowania i elektroniki, również pod kątem ich późniejszego wykorzystania w celach projektowych.

Arduino

Arduino jest małą platformą do prototypowania elektroniki z wykorzystaniem 8-bitowego mikrokontrolera AVR. Do funkcjonowania nie wymaga instalacji systemu operacyjnego (program rozruchowy jest fabrycznie zainstalowany), a jedynie wgrania kodu programu do pamięci mikrokontrolera. Do zaprogramowania mikrokontrolera wymagana jest komunikacja z komputerem przez port USB oraz środowisko programistyczne Arduino IDE. Składnia języka programowania Arduino bazuje na językach C/C++, z tym że zawiera liczne uproszczenia, które ułatwiają zrozumienie kodu przez osoby bez doświadczenia w pisaniu programów. Dzięki temu użytkownik może bardzo szybko utworzyć prosty kod, który będzie realizował współpracę mikrokontrolera z osprzętem zewnętrznym, np. oświetleniem LED, serwomechanizmem modelarskim, wyświetlaczem LCD czy też modułem łączności GSM – do płytek bazowych można dokupić dedykowane rozszerzenia sprzętowe w postaci nakładek Arduino Shield, które umożliwiają realizację takich i innych aplikacji, do których producent udostępnia dedykowane biblioteki. Również istotną zaletą płytek Arduino jest niskie zapotrzebowanie na energię ze źródła zasilania – możemy doprowadzić napięcie z portu USB, zasilacza sieciowego (gdy chcemy, aby płytka funkcjonowała niezależnie od komputera w urządzeniach stacjonarnych), a także pakietu bateryjnego lub powerbanka, co jest praktyczne w aplikacjach, które nie wymagają zasilania sieciowego lub z powodu swojego przeznaczenia muszą być zasilane bateryjnie, czego najlepszym przykładem mogą być pojazdy zdalnie sterowane, takie jak miniaturowe samochody, drony, samoloty czy modele szkutnicze. Arduino jest również odporne na uszkodzenia wskutek omyłkowego odłączenia zasilania i zaraz po ponownym jego podłączeniu wraca do funkcjonowania zgodnie z kodem programu wgranego do pamięci FLASH. Niebieskie płytki PCB z mikrokontrolerami AVR cieszą się ogromną popularnością i dzięki temu łatwo uzyskać wsparcie techniczne przy uruchamianiu projektów, a także znaleźć inspiracje do tworzenia ciekawych aplikacji. Trzeba jednak mieć na uwadze, że Arduino może obsługiwać tylko jeden program jednocześnie, m.in. ze względu na nieporównywalnie niższą częstotliwość taktowania mikrokontrolera względem dużych komputerów wynoszącą 16 MHz, a żeby połączyć platformę z internetem, trzeba dokupić dodatkowy moduł, który to umożliwia. Należy także wiedzieć, że język programowania Arduino nie zostanie „zrozumiany” przez inne mikrokontrolery mimo podobnej składni do języków C/C++.

Raspberry Pi

Choć Arduino ma sporo zalet, to nie można przejść obojętnie obok Raspberry Pi – platformy, którą można uznać za pełnoprawny komputer na miarę klasycznego PC. Pierwszym elementem „malinki”, który wyraźnie góruje nad możliwościami Arduino, jest procesor w architekturze ARM, który w zależności od modelu wykazuje dużo wyższą moc obliczeniową ze względu na kilkadziesiąt razy wyższą częstotliwość zegara taktującego. Dzięki temu Raspberry Pi znakomicie nadaje się do tworzenia takich projektów jak rozbudowane roboty wieloczynnościowe, serwery VPN, czy zaawansowane aplikacje webowe i IoT. Większość minikomputerów spod znaku „malinki” ma także wbudowane peryferia znane z „dużych” komputerów, takie jak np. port Ethernet, gniazdo HDMI dla monitora, gniazda USB dla myszy, klawiatury i zewnętrznych dysków, a także moduły łączności bezprzewodowej – Bluetooth i Wi-Fi. Dzięki wysokiej mocy obliczeniowej Raspberry Pi oferuje możliwość obsługi wielu procesów w czasie rzeczywistym. Podobnie jak w Arduino również w tym przypadku do Raspberry Pi można dokupić rozszerzenia sprzętowe w postaci nakładek Raspberry Pi HAT, takich jak np. karty dźwiękowe, klawiatury, wyświetlacze, czujniki pomiarowe i wiele innych – w tym celu można wykorzystać wbudowane w PCB złącze GPIO. Do obsługi Raspberry Pi nie trzeba mieć dużej wiedzy praktycznej z zakresu elektroniki ani programowania, a ponadto dostajemy możliwość wyboru systemu operacyjnego – możemy zainstalować dedykowany Raspbian OS oraz większość dostępnych dystrybucji systemu Linux, np. Ubuntu Core. Uruchamianie systemu operacyjnego odbywa się z poziomu karty pamięci (ten komputer nie posiada własnej wbudowanej pamięci masowej), dla której gniazdo również znajduje się na wyposażeniu sprzętowym Raspberry Pi. Niestety Raspberry Pi jest droższy niż Arduino, a w przypadku omyłkowego wyłączenia zasilania istnieje ryzyko błędnego funkcjonowania aplikacji oraz uszkodzenia komputera.

Werdykt końcowy

Każdy minikomputer i każda platforma embedded ma swoje wady i zalety – do tej grupy również zaliczają się Arduino i Raspberry Pi. Dzięki uproszczonej składni języka C/C++ Arduino jest bardzo dobrym narzędziem dla osób początkujących, które nie miały wcześniej styczności z elektroniką i programowaniem, a podłączenie większości zewnętrznych elementów takich jak czujniki, diody LED czy przekaźniki nie wymaga instalacji dodatkowych bibliotek. Trzeba jednak brać pod uwagę, że język programowania dla Arduino nie pozwala dokładnie na zrozumienie, jak działają systemy mikroprocesorowe, i kiedy będziemy chcieli zaprogramować zwykły mikrokontroler AVR lub PIC, wówczas wiedza nabyta przy pisaniu programów na Arduino może okazać się niewystarczająca i może okazać się, że będzie konieczne rozpoczęcie nauki programowania niemal od nowa, dlatego jeśli chcemy lepiej zrozumieć, jak działają mikrokontrolery, wówczas warto znać podstawy języków C i Asembler. Niemniej Arduino jest w dalszym ciągu dobrym rozwiązaniem na start. Natomiast jeśli rozważamy naukę programowania i elektroniki z wykorzystaniem Raspberry Pi, możemy wybrać jeden z kilku języków programowania, tj. C, C++, Java czy też Python, i dzięki żwawszemu procesorowi możemy nauczyć się tworzyć bardziej zaawansowane aplikacje. Jednak wybranie języków obiektowych i wysokopoziomowych, choć jest rozwijające, nie pozwala dostatecznie zagłębić się w aspekty sprzętowe komputera. Z tego względu platformy wykorzystujące procesory ARM, takie jak Raspberry Pi, zdecydowanie lepiej nadają się do wykorzystania w aplikacjach o charakterze bardziej programowym niż sprzętowym, ale w dalszym ciągu, mimo wyższej ceny względem Arduino, mogą stanowić narzędzie do nauki programowania niskopoziomowego oraz współpracy z układami elektronicznymi.

Jak oceniasz ten wpis blogowy?

Kliknij gwiazdkę, aby go ocenić!

Średnia ocena: 5 / 5. Liczba głosów: 6

Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.

Zobacz również