Raspberry Pi, Arduino czy może "gołe" Atmele?
W ostatnich latach rynek małych urządzeń przeznaczonych dla hobbystów znacznie się powiększył. Jeszcze 15 lat temu nie istniało ani Arduino ani coraz popularniejsze dzisiaj Raspberry Pi, a jeśli jako domorosły elektronik chcieliśmy zbudować jakiś układ zdolny do jakichkolwiek obliczeń, byliśmy zmuszeni do użycia mikrokontrolerów takich jak Atmel-AVR czy PIC. W dzisiejszym wpisie chciałbym opisać do czego nadają się niektóre z wyżej wypisanych urządzeń i dlaczego Raspberry Pi nie jest zawsze najlepszym rozwiązaniem.
Najtańszym rozwiązaniem z powyższych jest Atmel-AVR. Są to małe chipy opartę o architekturę RISC. AVR są bardzo energooszczędne oraz tanie(najtańsze mikrokontrolery z serii ATmega kosztują już po 3-4zł), mają dużo wyprowadzeń GPIO (pomijając serię ATtiny która jest zaprojektowana aby była jak najmniejsza, przez co nie może mieć bardzo dużej ilości wyprowadzeń). Mają one jednak małą pojemność(pamięć flash w najlepszym urządzeniu ma wielkość 384KB) i mało pamięci RAM. Dużym problemem dla niektórych będzie też konieczność posiadania zewnętrznego programatora. AVR są bardzo dobrym rozwiązaniem dla hobbystów z małym budżetem, ale nie tylko - o tym za chwilę.
AVRy mają pewien duży problem - urządzenia peryferyjne często nie mają gotowych bibliotek, przez co więcej trzeba napisać w swojej własnej aplikacji; Problemem jest też brak lub szczątkowa kompatybilność kodu między poszczególnymi mikroprocesorami - przykładowo, ATmega16 nie jest kompatybilna z większością kodu z ATmegi 8 przez zmienione rejestry i małe poprawki w architekturze procesora. Pare powyższych problemów prawie całkowicie rozwiązał projekt Arduino - płytki z wbudowanym programatorem opartej o ATmegę. Kompatybilność kodu została rozwiązana przez małą liczbę modeli płytek, a sam kod można pisać o wiele łatwiej dzięki rozszerzonemu o biblioteki Arduino językowi C++. Arduino nie jest tak tanie jak AVRy, ale oryginał można dostać już w granicach 100zł, nie wspominając nawet o klonach które potrafią być nawet 5 razy tańsze.
Jako ostatni do gry wchodzi Raspberry Pi - najdroższe rozwiązanie z powyższych które oprócz pełnego linuxa ładowanego z karty SD/µSD nie ma zbyt wiele więcej do zaoferowania. Owszem, jest to rozwiązanie łatwiejsze w użyciu, ma wbudowaną karte sieciową oraz USB dzięki czemu możemy łatwiej komunikować się z jeszcze większą gamą urządzeń, nie mówiąc nawet o tym, że najłatwiej się dla niego programuje(dla AVR/Arduino właściwie robimy cały system operacyjny, a na Raspberry możemy jedynie piszemy programy), ale czy na pewno jest to konieczne? Mam na myśli boom na raspberry pi z ostatnich paru lat - o ile nie jestem przeciwnikiem urządzenia, to jednak jestem za przemyśleniem każdego zastosowania przynajmniej dwa razy. Zmierzam do bolesnego faktu - o ile łatwo jest użyć rpi bo robią to wszyscy, o tyle warto czasami nawet tylko dla ćwiczenia spróbować wykonać jakiś projekt na AVRze - niektóre projekty po prostu nie wykorzystają pełnego potencjału Malinki, przez co efektywnie będziemy wuyrzucać kasę w błoto. To samo zjawisko można było zaobserwować na nieco mniejszą skalę pare lat temu z Arduino.
tl;dr - co wybrać?
To zależy - jeśli wiesz dokładnie co chcesz zrobić, warto przemyśleć czy na pewno twój projekt będzie korzystał z pełnego potencjału danego urządzenia. Przykładowo, jeśli chcemy zamrugać diodką i nie planujemy rozbudowy(tak, wiem, surrealistyczny przykład) to Raspberry Pi będzie się marnować, to samo z Arduino oraz nawet z ATmegą - do takiego zastosowania wystarczy nawet prosty NE555, czyli chip z zegarem. Za to jeśli w planach mamy mały system CCTV to zabieranie się za to zarówno na AVR jak i na Arduino jest nierealne, a Raspberry Pi będzie dobrze wykorzystane.
Jeśli za to nie wiesz co będziesz chciał wykonać i chcesz zakupić coś do eksperymentów, to wybór należy do Ciebie - ja rekomendowałbym Malinę, ale jest to kwestia preferencji. Przy wyborze warto również pamiętać, że z rpi nauczysz się innych rzeczy niż z ATmegą czy Arduino - dobrze wykorzystany AVR może zachęcić do nauki C lub C++ a Raspberry można tak na prawdę używać nie mając żadnej wiedzy o programowaniu.
Dziękuje za przeczytanie wpisu i zapraszam do krytyki w komentarzach.