Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

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. 

sprzęt porady programowanie

Komentarze

0 nowych
SweetDreams   10 #1 01.04.2017 23:07

IMO bardzo trywialny wpis w zasadzie o niczym. Chyba, że ktoś ma problem ze zrozumieniem, że platformę należy wybierać pod konkretny projekt, ale kto taki zabiera się za "programowanie"?

  #2 01.04.2017 23:27

Tytuł..... i nic..............

To zagadnienie którego nie poruszyłeś nadaje się na kilka wpisów.... jak nie kilkanaście...

Stanowczo do poprawy!!!!

KyRol   19 #3 01.04.2017 23:29

Nie zgodzę się z argumentem co do tego, że RPi to "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". Człowieku, jeśli celem projektu jest przesyłanie danych takich jak np. zdjęcia, filmowanie czy transmisja plików liczonych w megabajtach to co? Upierał byś się na Arduino? Wspaniałość Arduino się kończy, tam gdzie kończą się możliwości jeśli chodzi o komunikację w prędkości portu szeregowego. Samo Arduino do mrugania diodą to armata na muchy. Przykład diody przylgnął do Arduino tak samo jak hello world przykleiło się do wszelkich samouczków związanych z programowaniem.

Dla mnie niekwestionowaną zaletą Arduino jest fakt, że można je przemycić z sensem praktycznie w każdy obwód, to jest bardzo fajny gadżet dla tych, którzy projektują własne układy na płytkach PCB. Natomiast niekwestionowaną zaletą RPi jest to, że Maliną można zmodyfikować nie jedno urządzenie dodając mu możliwości, jakich nie było na czas produkcji jakiegoś starszego sprzętu. W bardzo prosty i przystępny sposób możemy wzbogacić dowolne urządzenie o obsługę wifi czy bluetooth, jeśli tylko jesteśmy w stanie przemycić malinę w jakiś szeregowy interfejs pierwotnego urządzenia.

I Raspberry Pi ZERO W nie jest drogie, przynajmniej w zestawieniu z Arduino, które podajesz w cenie 100zł. RPi0W to koszt około 70zł z wysyłką. Dużo i nie dużo. Jak ktoś ma fajny, chwytliwy pomysł na projekt to nigdy nie będzie dużo czy za dużo.

Autor edytował komentarz w dniu: 02.04.2017 00:12
illidan904   1 #4 02.04.2017 06:57

Arduino jest bardzo miłe jeśli chodzi o przenoszenie gotowych projektów na płytki, sam używam UNO tylko do tworzenia prototypu potem można wyjąć zaprogramowaną ATmegę i dodając te kilka niezbędnych części mieć całkowicie samodzielny projekt a do UNO włożyć nową ATmege328p i wgrać do niej bootloader przy użyciu innego UNO/Leonardo/klona z aliexpress za 1$ co pozwala pominąć jakby potrzebę posiadania zewnętrznego programatora i kompatybilności kodu nie mówiąc już ze zazwyczaj do prostych rozwiązań wystarcza te 32KB Flash i 2KB RAM. Raspberry Pi ma dla mnie jak na razie tylko sens jeśli ktoś chce sobie zrobić SmartTV/Retro Emulator/Miniserver

Autor edytował komentarz w dniu: 02.04.2017 07:03
Kaworu   14 #5 02.04.2017 09:15

> "(najtańsze mikrokontrolery z serii ATmega kosztują już po 3-4zł)"
To zupełnie jak chipy z rdzeniem ARM, STM32F030 (Cortex M0) dopadniesz w podobnej cenie a czasem taniej. ;)

> urządzenia peryferyjne często nie mają gotowych bibliotek
E tam, mają. Tylko, że te biblioteki i tak na ogół są takie sobie, i kończy się na napisaniem własnej.

> szczątkowa kompatybilność kodu między poszczególnymi mikroprocesorami
> - przykładowo, ATmega16 nie jest kompatybilna z większością kodu z ATmegi 8

Gdzie tam. Nazwy rejestrów są czasem inne i bitów, ale one wszystkie maja bardzo podobne do siebie peryferia (tutaj to XMEGA jest inna para kaloszy). Także na ogół to tylko kwestia zmiany nazwy paru rejestrów i tyle. Ile to razy robienie portu miedzy m8/m64/m328 ograniczało się do sprawdzenia jak nazwali dany rejestr w danym układzie. Nie mówiąc o tym, że jest Atmel ASF.

dthlfwp   7 #6 02.04.2017 10:07

ARM. Masz do wyboru od M0/+ do wypasionych M7.

muska96   9 #7 02.04.2017 20:09

Jak ktoś zaczyna to najlepszym wyborem będzie coś w stylu WeMos D1 Mini - można pisać w C, Arduino i Lua (NodeMCU), 4MB pamięci, więc starczy na wszystko i do tego pełne wsparcie WiFi - często robiłem różne programy i chciałem, by można wszystkim sterować bezprzewodowo - na tym układzie można postawić mikro serwer WWW i zdalnie sterować z sieci domowej nie martwiąc się o kompatybilność z innym sprzętem. ESP8266 jest świetny i na dodatek tani.

PAMPKIN   12 #8 02.04.2017 20:29

Troszkę dziwny ten Twój wpis, jakby wstęp albo okładkowa recenzja książki.

Należy pamiętać, że wszystkie wymienione przez Ciebie twory (oprócz nieśmiertelnego 555) wymagają znajomości jakiego języka programowania i elementarnej wiedzy na temat elektroniki. Arduino i RPi to projekty typowo edukacyjne z bogatymi zasobami i społecznością. Układy ATMELa i Microchipa to już typowe podzespoły elektroniczne i do nich należy podchodzić od podstaw. Co do zastosowania, to pamiętajmy, że zamigać diodą można już kilkoma tranzystorami, a napisać "Hello World" można np.: Pythonie albo C++. Kto co umie i lubi!!!

Szkoda, że ilustrujące fotografie nie są Twoje, bo artykuł stałby się bardziej wiarygodny, a tak wgląda na w stylu napisał co wiedział.

mesho   8 #9 04.04.2017 07:39

Wszystko zależy ile masz funduszy i co chcesz osiągnąć. Dla osób które nie są totalnie w temacie, nie znają nic z elektroniki ani programowania polecam na start gołe Arduino - dioda, port szeregowy wystarczą, aby przekonać się czy programowanie "żywych instrumentów" jest dla nas. Klony startują z cenami od paru dolarów, nikomu nie polecam wywalać grubszych pieniędzy w temat, co do którego nie mamy pewności, że nas wciągnie. Już nie wspomnę o tym, że instalujesz IDE jedną instalką... i gotowe. Elektronikę do C.O. w domu mam na Arduino, bo jestem leniem... albo nie, po prostu nie lubię sobie utrudniać życia.
Malina jest o tyle fajna, że można nauczyć się z nią na wielu platformach - i zarówno obsługi GPIO, jak i podstaw Linuxa, basha, obsługi terminala.

Ogólnie rynek elektroniki hobbystycznej jest tak bogaty, że warto popróbować wszystkiego po trochu i znaleźć tą platformę która nas zainteresuje, zwłaszcza że za większość gadżetów nie musimy sprzedawać nerki ;)

Autor edytował komentarz w dniu: 04.04.2017 07:40
Xyzz   5 #10 04.04.2017 12:11

@Kaworu: "> "(najtańsze mikrokontrolery z serii ATmega kosztują już po 3-4zł)"
To zupełnie jak chipy z rdzeniem ARM, STM32F030 (Cortex M0) dopadniesz w podobnej cenie a czasem taniej. ;)"

Nie polecałbym gołych ARM-ów na start. Dla kogoś, kto zaczyna "przygodę" z programowaniem i elektroniką takie kilkudziesięcionóżkowe SMD o rozstawie 0,4mm mogą być przeszkodą nie do pokonania. O obudowach BGA w przypadku mocniejszych ARM już nie wspomnę.

Do wyboru "dla amatora" są:
- gołe atmegi/attiny/PIC w obudowach przewlekanych - mało mocy obliczeniowej i zasobów, podstawowe peryferia w stylu 1x uart, 1x I2C, 1x 8bit ADC. Do wielu projektów starczy. Trzeba zająć się płytką/prototypową płytką połączeniową, ustawianiem fusebitów itd...
- moduły kompatybilne z Arduino - moc oblieczeniowa i zasoby te same, peryferia te same (ale można łatwo rozszerzyć przez "shieldy"), łatwiejsze w obsłudze - programujesz we względnie czystym C, automatyka ustawia fusebity, jest dostępny "bootloader" pozwalający na załadowanie programu przez USB (ale zajmuje on z 0,5kB pamięci). Do prototypów i nauki jak znalazł.
- zestawy typu STM Discovery z ARM. Ethernet, CAN, kilka DAC/ADC, złącze kamery, złącze wyświetlacza i egzotyka jaką sobie wymarzysz.. Do wyboru, do koloru. Głównym mankamentem tych rozwiązań jest cena.
- na deser zostają "minikomputery" w stylu Raspberry Pi, Banana Pi. 40x gpio, programujesz "w czym chcesz". Co tu dużo pisać - pełnoprawny komputer z dodatkowymi gpio.