Czym są?
Arduino
Arduino to organizacja, mająca swoją siedzibę we Włoszech. Jest odpowiedzialna za stworzenie oraz wdrożenie do sprzedaży całej gamy różnych płytek zawierających mikrokontrolery.
Te układy nazywają się tak samo, jak macierzysta organizacja, czyli Arduino. Mają różny stopień złożoności oraz są inaczej wyposażone. Bardzo proste płytki, jak Uno czy Nano, pozwalają na budowę relatywnie prostych układów, choć wszystko zależy od inwencji programisty.
Bardziej zaawansowane moduły, na przykład Mega czy Due ARM Cortex zostały wyposażone w mikrokontrolery o większych możliwościach obliczeniowych. Zadania, które są w stanie realizować, również mogą być dzięki temu bardziej złożone. Są jeszcze inne układy, zawierające w swojej strukturze moduły do komunikacji za pośrednictwem Bluetooth lub WiFi.
Do programowania tych modułów zostało stworzone środowisko Arduino IDE, w którym pisze się programy stosując język Arduino. Jest dostępne całkowicie za darmo. Płytkę łączy się z komputerem poprzez przewód USB i wgrywa na nią skompilowany wsad.
Raspberry Pi
Ta platforma również została zaprojektowana przez organizację - Raspberry Pi Foundation. Jej zamysłem było wspomożenie nauki programowania i informatyki.
Liczba rodzajów modułów Raspberry Pi jest niewielka, gdyż oficjalnie wypuszczono zaledwie kilka typów. Mają formę jednego, zwartego modułu wykonanego na laminacie.
Jednak są one szalenie uniwersalne, bowiem ich możliwości sprzętowe są znacznie większe niż Arduino. Każda taka płytka działa pod kontrolą systemu operacyjnego - najczęściej odpowiedniej dystrybucji Linuxa, lecz Android również działa poprawnie na Raspberry Pi. Nawet Windows 10 doczekał się dedykowanej wersji!
Programowanie może odbywać się w różnych językach. Tak naprawdę nie ma tu ograniczeń, bowiem stawia jest wyłącznie system operacyjny. C, C++ czy Python - to jedynie niektóre przykłady.
Co mają wspólnego?
Obie rodziny łączy wszechstronność zastosowań. Płytki nie mają dedykowanych zastosowań: na złącza szpilkowe (goldpin) zostały wyprowadzone poszczególne nóżki mikrokontrolera. Na płytkach znajdują się podzespoły dostarczające zasilanie, sygnał zegarowy, podstawowe przyciski i tak dalej. Dzięki temu nie musimy samodzielnie projektować i lutować złożonych obwodów drukowanych - producent zrobił te podstawowe rzeczy za nas.
Nie mają zatem jednego, konkretnego przeznaczenia. To użytkownik końcowy definiuje, co podłączy do płytek i jak będzie to obsługiwał. Ma do dyspozycji całą dokumentację oraz liczne przykłady, chociażby krążące po internecie.
Bazą dla każdej płytki jest mikrokontroler. To on nadaje jej ostateczne cechy, ponieważ limituje dostępną liczbę wyprowadzeń, szybkość taktowania, rozmiar pamięci i tak dalej.
Co je różni?
Pomimo podobieństwa w sensie wyglądu zewnętrznego, obie grupy mają bardzo dużo różnic.
Sposób programowania
Arduino programuje się pisząc kod na komputerze, kompilując go i przesyłając do pamięci mikrokontrolera gotowy wsad. Po odłączeniu przewodu USB, taka płytka może funkcjonować samodzielnie, lecz jakiekolwiek zmiany w kodzie wymagają ponownego podłączenia do komputera.
Raspberry Pi to komputer “sam w sobie”. Owszem, można napisać kod na domowym pececie, po czym skopiować go na kartę SD przeznaczoną dla tego mikrokomputera. Lecz można podłączyć monitor i klawiaturę bezpośrednio do złącz Raspberry Pi, uruchomić jego system operacyjny i pisać programy jak na zwykłym komputerze.
Możliwości
Arduino - w swoich podstawowych modułach - jest wyposażone w proste, 8-bitowe mikrokontrolery. Rozmiar pamięci to kilkanaście kilobajtów lub więcej. Pamięć RAM ma pojemność kilku kilobajtów. Dopiero bardziej zaawansowane płytki, mające na pokładzie mikrokontrolery z rdzeniem ARM, dysponują większymi możliwościami.
Raspberry Pi w swojej najnowszej wersji - 4 - posiada kilka gigabajtów pamięci RAM, więc przetwarzanie obrazów czy olbrzymich baz danych nie stanowi dla nich problemu. Pamięć programu nie jest ograniczona w ogóle, bowiem stanowi ją zewnętrzna karta SD. Ona pełni rolę dysku twardego.
Wyposażenie
Moduły Arduino są nastawione na rozbudowywanie ich przez użytkownika. Dlatego mają na pokładzie tylko podstawowe elementy, a wszystkie pozostałe moduły dołącza się do nich. Najczęściej za pośrednictwem przewodów do płytek stykowych.
Raspberry Pi zawiera wszystko to, co ma każdy, zwykły komputer: złącze HDMI, kilka gniazd USB, prostą kartę dźwiękową, moduł do komunikacji poprzez WiFi oraz obsługę Ethernet. Złącza szpilkowe, znane z Arduino, również są dostępne, więc można podłączać różne czujniki - na przykład komunikujące się poprzez I2C - lub inne moduły wykonawcze.
Oprzyrządowanie
Arduino, zwłaszcza w wersji Uno i podobnych, ma szeroką bazę tzw. shieldów, czyli nakładek z urządzeniami peryferyjnymi. Można szczepić ze sobą nasz moduł Arduino z wyświetlaczem i uzyskać prosty interfejs do komunikacji z użytkownikiem. Inne nakładki umożliwiają odtwarzanie muzyki lub sterowanie silnikami, nawet krokowymi. Liczba oficjalnych shieldów jest znaczna, a nieoficjalnych, stworzonych przez poszczególne firmy - jeszcze większa.
Co istotne, każdy taki moduł ma również gotową bibliotekę do jego obsługi oraz wiele przykładów jego zastosowania. Można stworzyć pierwszy program nie pisząc ani jednej linijki kodu, bowiem jesteśmy w stanie użyć sprawdzonych programów przykładowych. Dopiero później, w czasie rozwijania swoich umiejętności, można je przerabiać i modyfikować.
Raspberry Pi nie ma takich udogodnień. Owszem, istnieją moduły, które można wkładać w złącza typu goldpin, ale ich liczba jest niewielka
Cena
Podstawowy moduł Arduino to wydatek rzędu kilkunastu złotych. Dokupując kilka części elektronicznych i nawet niewielką płytkę stykową, co wiąże się z drugim wydatkiem podobnej kwoty, da się zrobić naprawdę wiele.
Raspberry Pi w wersji podstawowej to koszt rzędu kilkudziesięciu złotych. Bardziej złożone płytki, które mają wbudowane HDMI, osiągają ceny przekraczające 100 zł.
Mocne strony
Arduino nie ma systemu operacyjnego, więc doskonale nadaje się do pracy w ścisłym reżimie czasowym. Wbudowane liczniki i system przerwań pozwalają zaplanować każdą operację z dokładnością rzędu mikrosekund.
Raspberry Pi ma bardziej złożoną strukturę, w której zadania są kolejkowane przez system operacyjny. Można ich w ten sposób wykonywać wiele, lecz nie wiadomo do końca, kiedy dane zgłoszenie zostanie obsłużone. Za to tych zadań może nadchodzić bardzo wiele (np. kolejkowanie ruchu sieciowego przy pracy jako serwer) jak również mogą być bardzo, bardzo złożone.
Podsumowanie
Raspberry Pi i Arduino to platformy ułatwiające programowanie. Arduino jest przeznaczone dla osób bardziej początkujących, które budują proste układy, zaś Raspberry nadaje się do realizacji skomplikowanych zadań. Jednak są obszary, w których Arduino bije na głowę Raspberry Pi, czyli realizacja zadań krytycznych czasowo. Dlatego nawet profesjonaliści niekiedy sięgają po tę platformę.