Czym jest Arduino? Sony Spresense jako 6-rdzeniowe UNO?

Czym jest Arduino? Sony Spresense jako 6-rdzeniowe UNO?

Arduino to niezwykle popularny projekt, jednak chyba nie wszyscy wiedzą, co dokładnie składa się na cały jego ekosystem.

W tym artykule omówimy skrótowo, czym jest Arduino i z czego tak właściwie się składa. Jako ciekawostkę pokażemy również, jakie możliwości daje potężne Sony Spresense.

Czym jest Arduino?

Okazuje się, że „Arduino” to nazwa, która może odnosić się do wielu różnych rzeczy. Wiele osób nie zdaje sobie sprawy, że to określenie nie jest związane tylko np. z popularnym Arduino UNO. Zacznijmy więc od zweryfikowania informacji u źródła. Wchodzimy na oficjalną stronę projektu i przechodzimy do zakładki „O nas” – tam znajdziemy skrótową odpowiedź na nasze pytanie:

Arduino is the world’s leading open-source hardware and software ecosystem. The Company offers a range of software tools, hardware platforms and documentation enabling almost anybody to be creative with technology.

Niestety pojęcie ekosystemu nie zostało zbyt precyzyjnie wyjaśnione, ale dalsza część jest już nieco dokładniejsza. Arduino to narzędzia programistyczne, platforma sprzętowa oraz dokumentacja.

Trzeba pamiętać, że otwarte oprogramowanie oraz sprzęt nie oznacza, że projekt ten jest pozbawiony praw autorskich. Informacje na temat licencjonowania treści udostępnionych na stronach Arduino oraz logo projektu znajdziemy na osobnej stronie.

Czym Arduino nie jest?

Zarówno nazwa Arduino, jak i znane wszystkim logo projektu są zastrzeżone. Oznacza to, że nie można używać nazwy Arduino dla określania własnych płytek, niezależnie od tego, czy wykonanych według dostępnej dokumentacji, czy też zmienionych.

Można legalnie tworzyć klony Arduino, ale muszą mieć inną nazwę; co więcej, producent powinien wyraźnie zaznaczyć, że nie są to płytki Arduino – jak wiemy, nie wszyscy przestrzegają tych zasad. Co więcej, samo pisanie np. o klonach jako o Arduino też nie jest do końca zgodne z warunkami licencji.

Arduino jako nazwa modułu sprzętowego

Jedną z części ekosystemu są moduły sprzętowe. Pierwsze, co chyba każdemu przychodzi do głowy, to Arduino UNO, które jest m.in. głównym bohaterem dostępnego na blogu kursu podstaw Arduino

Popularne Arduino UNO

Popularne Arduino UNO

Ten model odniósł tak ogromny sukces, że wręcz przysłonił wszystkie inne modele oferowane przez Arduino. To nieco krzywdzące, bo jest to już dość wiekowy i niekoniecznie doskonały produkt. Na stronie Arduino znajdziemy jednak wiele innych rozwiązań, które są znacznie bardziej rozbudowane.

Dobrymi przykładami mogą być:

  • Arduino DUE – zawiera mikrokontroler z rdzeniem Cortex-M3 oraz o wiele więcej dostępnych pinów i modułów niż w przypadku UNO
  • Arduino MEGA 2560 – podobnie jak w przypadku UNO wyposażone jest w mikrokontroler z rdzeniem AVR, ale o większej pamięci; tak jak DUE ma również więcej dostępnych pinów
  • Arduino MKR Zero – mały moduł wyposażony w mikrokontroler z rdzeniem Cortex-M0+
  • Arduino MKR Vidor 4000 – moduł ten ma aż 2 mikrokontrolery oraz układ FPGA

Jak widać, dostępnych modułów Arduino jest dużo więcej – pełną ofertę znaleźć można na stronie producenta. Warto zwrócić uwagę, że wszystkie dostępne moduły to prawdziwe Arduino, chociaż mają na swoim pokładzie różne mikrokontrolery, a czasem nawet układy programowalne. Powinno być więc jasne, że określenie sprzętu mianem „Arduino” nie definiuje jego kształtu, użytych podzespołów ani możliwości. Chodzi jedynie o zgodność z pewnym standardem.

Klony Arduino i płytki kompatybilne

Jak wcześniej wspomnieliśmy, firma Arduino udostępniła schematy swoich płytek oraz wyraziła zgodę na ich wykorzystanie do tworzenia płytek kompatybilnych z Arduino, czyli tzw. klonów. Można wyróżnić 2 grupy klonów.

Pierwsza grupa to produkt od stosunkowo dużych firm, które nie robią bezmyślnie kopii 1:1. Tworzą one swoje wersje płytek, a do tego często własne materiały edukacyjne i biblioteki. Do tej grupy na pewno zaliczają się płytki od takich firm jak DFRobot, POLOLU oraz Waveshare:

Tym, co łączy wspomniane płytki, to pełna zgodność z Arduino UNO oraz brak użycia nazwy Arduino. Takie podejście wydaje się całkiem zdrowe. Firmy korzystają z popularnego standardu, ale dają coś od siebie (własny projekt, wsparcie klientów itd.). Oprócz tego firmy te dbają o jakość swoich płytek.

Druga grupa producentów, którzy bazują na otwartości projektu Arduino, to „chińskie fabryki klonów”, kopiujące np. Arduino UNO w taki sposób, aby wyglądało jak oryginał. Często nakładają one na płytki nawet oryginalne logo (co nie jest dozwolone). Produkty tego typu można spotkać w wielu miejscach. Dużo niższa cena, która zazwyczaj wiąże się z niższą jakością, kusi wiele osób. Decyzja zawsze należy do klienta, ale trzeba przyznać, że są sprzedawcy, którzy robią bardzo dużo, aby ukryć informacje, że nie sprzedają oryginału, i to na pewno szkodzi tej „branży”.

Jak zbudowane jest Arduino?
Jak zbudowane jest Arduino?

Wakacyjny upał ma czasem swoje zalety. Mając dosyć urlopu można poświęcić chwilę lub dwie na hobby, a nawet napisać mały artykuł. Niby... Czytaj dalej »

Płytki „podobne” do Arduino

Poza modułami w pełni zgodnymi z oryginalnym Arduino znajdziemy wiele płytek mniej lub bardziej podobnych, jednak wyposażonych np. w zupełnie inne mikrokontrolery. Taki kształt i format modułów ma wiele zalet, ale szczególnie warto podkreślić tutaj zgodność z licznymi shieldami, czyli nakładkami, które pozwalają błyskawicznie podłączyć do układu nowe elementy wykonawcze.

Jako przykład może posłużyć tutaj np. Wemos D1. Jest to płytka, której wymiary i wyprowadzenia są kompatybilne z Arduino UNO, ale na jej pokładzie znajdziemy układ ESP8266. Płytka ta nie jest więc typowym klonem, jednak zachowuje wysoki stopień zgodności z oryginałem.

Wiele płytek ewaluacyjnych „od dużych producentów” udostępnia wyprowadzenia zgodne z Arduino. Znane z kursów STM32 moduły Nucleo od ST również mają złącza zgodne z Arduino:

Przykładowa płytka Nucleo

Przykładowa płytka Nucleo

Nawet układy oparte na znacznie potężniejszych mikroprocesorach często używają tego standardu złącza. Przykładami mogą być tutaj niedawno opisywane płytki STM32MP1-DK2 oraz VisionSOM-6ULL.

Arduino IDE, czyli kolejny element ekosystemu

Środowisko programistyczne Arduino IDE zna chyba każdy, kto chociaż przez chwilę bawił się Arduino. Edytor nie jest idealny, ale jego wielką zaletą jest prostota. Wystarczy zainstalować program i można zaczynać pracę. Osoby, które zajmowały się programowaniem mikrokontrolerów kilka lat wcześniej, zanim nie było jeszcze Arduino, pamiętają, ile było zachodu z wgraniem pierwszego programu.

Jak przebiega programowanie Arduino?
Jak przebiega programowanie Arduino?

Poznaliśmy już schemat Arduino – oczywiście omówiliśmy go pobieżnie, ale mam nadzieję, że będzie to zachętą do dalszego i... Czytaj dalej »

Co więcej, wiele ze wspomnianych płytek, bazujących na innych niż Arduino mikrokontrolerach, ma biblioteki zintegrowane z Arduino IDE. Dzięki temu można pisać programy np. dla ESP32 w taki sam sposób jak dla oryginalnego Arduino UNO. Takie zachowanie kompatybilności między bardzo różnymi platformami to ogromna zaleta.

Popularne proste Arduino IDE

Popularne proste Arduino IDE

Oczywiście użytkownicy Arduino nie są zmuszeni do korzystania z Arduino IDE. Jeśli ktoś chce, może bez żadnego problemu zastosować inny edytor lub zupełnie inne środowisko – najpopularniejszym zamiennikiem będzie chyba PlatformIO, któremu poświęciliśmy osobny artykuł:

PlatformIO – alternatywne środowisko dla Arduino IDE
PlatformIO – alternatywne środowisko dla Arduino IDE

Jednym z powodów popularności Arduino jest dedykowane środowisko, które znacznie ułatwia pierwsze kroki z mikrokontrolerami. Niestety prosty... Czytaj dalej »

Arduino jako zbiór bibliotek

Kolejnym ważnym elementem ekosystemu Arduino są udostępnione przez producenta biblioteki. Ich instalacja oraz użycie są bardzo proste. Co najważniejsze, biblioteki zapewniają oddzielenie pisanego oprogramowania od używanego sprzętu.

Dzięki temu ten sam program można uruchomić na zupełnie różnych platformach sprzętowych. Jest to prawdziwa warstwa abstrakcji sprzętu, czyli HAL (ang. Hardware Abstraction Layer). W odróżnieniu od biblioteki HAL dostępnej dla STM32, Arduino udało się autentycznie oddzielić program od sprzętu – nie jest to idealne rozwiązanie, ale w większości przypadków działa poprawnie.

Skąd biorą się funkcje Arduino?
Skąd biorą się funkcje Arduino?

Poznaliśmy już schemat Arduino, wiemy jak działa bootloader oraz jak wgrać program do modułu. Czas zobaczyć co kryje Arduino IDE. Opis dotyczy... Czytaj dalej »

Sony Spresense – Arduino z 6 rdzeniami

Na zakończenie warto pokazać, jak potężnym narzędziem jest ekosystem Arduino. Dobrym przykładem może być tutaj platforma od firmy Sony, która nie jest kojarzona z produktami dla majsterkowiczów.

Sony Spresense w praktyce

Sony Spresense to mała płytka, która jest wyposażona w bardzo ciekawy mikrokontroler, posiadający aż 6 rdzeni Cortex-M4 (taktowanych zegarem 156 MHz), 8 MB pamięci Flash oraz 1,5 MB pamięci RAM. Na płytce znajdziemy również odbiornik GPS, a dokładniej mówiąc: GNSS.

Dużym ułatwieniem jest też dostępność płytki bazowej (wyprowadzenia zgodne z Arduino) oraz małej kamery, którą można podłączyć do tej potężnej platformy.

Już same parametry techniczne (np. 6 rdzeni) oraz możliwość podłączenia kamery sygnalizują nam, że nie jest to standardowe Arduino, które będzie tylko migać diodą. Jednak korzystamy tutaj z zalet ekosystemu Arduino – wystarczyło, że producent przygotował zestaw bibliotek zgodnych z Arduino, i dzięki temu każdy może sobie łatwo poradzić z tak rozbudowanym układem.

Dodawanie płytki Sony Spresense do Arduino IDe

Dodawanie płytki Sony Spresense do Arduino IDe

Na płytce dostępne są 4 diody, więc jeśli chcemy się nimi pobawić i wyświetlić jakiś ciekawszy wzorek, nie powinniśmy mieć z tym najmniejszego problemu. Możemy wybrać przykładowy projekt – chociażby miganie diodą – i uruchomić go zupełnie jak na Arduino UNO:

Potwierdzenie wgrania szkicu (w dolnej części okna Arduino IDE)

Potwierdzenie wgrania szkicu (w dolnej części okna Arduino IDE)

Prawdziwa wielowątkowość

Wiele osób będzie narzekało na używanie funkcji delay() w programie. Jednak Spresense ma aż 6 rdzeni – możemy wgrać nasz program na dowolny z nich. Jeśli więc miganie diodami niepotrzebnie zajmuje procesor, może odbywać się równolegle z całą resztą programu.

Wybór rdzenia, na którym ma być uruchomiony szkic

Wybór rdzenia, na którym ma być uruchomiony szkic

Sony Spresense jako odtwarzacz audio

Sony znane jest m.in. z produkcji odtwarzaczy audio wysokiej jakości. Na płytce bazowej Spresense umieszczone zostały czytnik kart SD oraz wyjście mini-jack do podłączenia słuchawek. Jeśli chcemy zmienić naszą płytkę w odtwarzacz MP3, wystarczy raptem kilkadziesiąt linijek kodu. Zarówno obsługa systemu plików oraz karty SD, jak i dekodowania MP3 jest już zaimplementowana w bibliotekach.

Fragment przykładowego programu wykorzystującego audio:

Arduino IDE i dostarczone przykłady pozwolą na zbudowanie odtwarzacza MP3

Arduino IDE i dostarczone przykłady pozwolą na zbudowanie odtwarzacza MP3

Nie jestem niestety audiofilem, ale według mojej oceny jakość dźwięku bije na głowę większość tanich odtwarzaczy MP3, a i niejeden nowy telefon nie ma szans przy muzyce odtwarzanej z Sony Spresense. Jak na układ DIY jest to dość zaskakujące!

Podłączenie kamery do Sony Spresense

Kolejna możliwość to wyświetlanie obrazu. Sama płytka nie ma wyświetlacza, ale można dołączyć do niej właściwie dowolny ekran wyposażony w interfejs SPI. Jako przykład wykorzystałem wyświetlacz 2,2 o rozdzielczości 240 × 320 od firmy Adafruit.

Warto zauważyć, że udostępniane przez Adafruit biblioteki bez problemu obsługują wyświetlacz – wszystko dzięki wspomnianej wcześniej abstrakcji sprzętu. Moduł SPI jest w przypadku Sony Spresense zupełnie inny niż stosowany w Arduino UNO, ale cała reszta biblioteki działa tak samo. Możemy także używać innych bibliotek: testowany lcdgfx również działał wyśmienicie.

Kolejny test kamery podłączonej do Arduino

Kolejny test kamery podłączonej do Arduino

Wiadomo, że komunikacja z wyświetlaczem zajmuje mikrokontrolerowi stosunkowo dużo czasu. Jednym z rozwiązań jest użycie DMA i transfer danych „w tle”. Nadal nie jest ono idealne, ponieważ ekran 320 × 240 pikseli, po 2 bajty na piksel, wymaga aż 150 kB pamięci dla bufora ramki. Jednak w przypadku Sony Spresense można użyć dedykowanego rdzenia tylko do obsługi wyświetlacza. To umożliwia zbudowanie prawdziwego akceleratora graficznego, który pozwoli np. na obracanie, filtrowanie oraz mnóstwo innych operacji na obrazie.

Dobrym przykładem możliwości tej płytki jest projekt opisany na Hackster.io, który demonstruje działanie Sony Spresense w roli programowego stabilizatora obrazu z kamery (na żywo):

Z poziomu Arduino nie uzyskamy oczywiście w pełni zoptymalizowanego rozwiązania, ale napisanie programu, który wyświetli obraz z kamery, to raptem kilka linii kodu. Dzięki temu nawet osoby, które są dopiero średnio zaznajomione z programowaniem, mogą rozpocząć przygodę z obsługą zarówno kamery, jak i wyświetlacza. Więcej informacji na temat Sony Spresense znaleźć można w Botlandzie lub na stronie producenta.

Podsumowanie

Arduino to rozbudowany ekosystem, który stał się niesamowicie popularny, i to chyba nie bez powodu. Pozwala on na szybkie rozpoczęcie pisania własnych programów oraz oddziela tworzoną aplikację od szczegółów sprzętowych. Dzięki temu tworzenie ciekawych, interaktywnych projektów jest w zasięgu praktycznie każdego.

Czy artykuł był pomocny? Oceń go:

Średnia ocena 4.7 / 5. Głosów łącznie: 66

Obecnie Arduino to o wiele więcej niż Arduino UNO, a dzięki dostępnym bibliotekom każdy może rozpocząć fascynującą przygodę z programowaniem i mieć z tego mnóstwo radości – a to w końcu jest najważniejsze! Jeśli znacie już podstawy elektroniki i chcecie teraz zacząć programować, to koniecznie sprawdźcie kurs podstaw Arduino dostępny na blogu.

Co można zbudować z Arduino? Lista inspirujących projektów
Co można zbudować z Arduino? Lista inspirujących projektów

Za nami tegoroczny Dzień Arduino, czyli święto tej niesamowicie popularnej platformy oraz jej fanów. Co dokładnie można stworzyć z Arduino? Oto... Czytaj dalej »

arduino, ide, programowanie, Sony

Trwa ładowanie komentarzy...