21

Nie samymi malinami człowiek żyje

Witam ponownie. Zanim przejdę do dalszych propozycji (w kolejnych artykułach) związanych z Raspberry PI, postanowiłem zrobić mały przerywnik, tak żeby się maliny nie przejadły. Autorem wpisu jest Rafał Świętonowski. W swoim pierwszym artykule z cyklu „Malinowe przepisy” wspominałem o jeszcze innym urządzeniu, które można zakwalifikować do tej samej kategorii co RPI. Chodzi mi głównie o przeznaczenie […]

Witam ponownie. Zanim przejdę do dalszych propozycji (w kolejnych artykułach) związanych z Raspberry PI, postanowiłem zrobić mały przerywnik, tak żeby się maliny nie przejadły.

Autorem wpisu jest Rafał Świętonowski.

W swoim pierwszym artykule z cyklu „Malinowe przepisy” wspominałem o jeszcze innym urządzeniu, które można zakwalifikować do tej samej kategorii co RPI. Chodzi mi głównie o przeznaczenie takich urządzeń – mam tu na myśli projektowanie i rozwój oprogramowania czy budowanie rozwiązań sprzętowych (platforma sterująca plus dodatkowe moduły).

Urządzeniem, które chciałbym trochę szerzej opisać niż w artykule wprowadzającym, jest mini PC UDOO, widoczne na poniższym obrazku:

2

Jest to z kilku powodów bardzo ciekawa platforma sprzętowa. Najpierw jednak może kilka suchych danych technicznych:

Wymiary: 11 cm x 8,5 cm

Procesor: Freescale i.MX6 ARM Cortex-A9 Dual/Quad core 1GHz

Pamięć RAM: DDR3 1GB

Karta graficzna: układ Vivante GC 2000 dla operacji 3D plus układy Vivante GC 355 oraz Vivante GC320 dla operacji 2D. W wersji Dual Core mamy układ Vivante GC 880 dla operacji 3D i 2D (w zakresie grafiki wektorowej) oraz Vivante GC 320 dla operacji 2D.

Sekcja Aurduino: Atmel SAM3X8E ARM Cortex-M3 (kompatybilny w zakresie sprzętowym i programowym z Arduino Due)

Sekcja GPIO: 76 pinów

Wyjścia obrazu: HDMI oraz LVDS (obsługuje panele dotykowe)

Wyjścia komunikacyjne: 2 x micro USB (1 x OTG dla Androida),2 x USB 2.0, moduł WiFi, Ethernet RJ45 (10/100/1000 Mbit)

Komunikacja dyskowa: wbudowany czytnik kart Micro SD, port SATA (z konektorem zasilającym)

Dodatkowe moduły na płytce: wyjście audio (analogowe) oraz mikrofonowe, konektor CSI dla kamery

Jak widać powyżej, mamy trochę możliwości i jak sami autorzy reklamują swój produkt – moc obliczeniowa czterech Malinek, nie wspominając o Arduino ;) Ale co to oznacza w języku polskim ? :) Gdyby chcieć bardziej obrazowo przedstawić powyższe parametry techniczne (stanowiące dobry wstęp do dalszej zabawy) oraz to co jest ciekawe i wyróżnia to urządzenie, to można podać następujące fakty.

UDOO jest platformą otwartą (open hardware), mogącą pracować przy wykorzystaniu systemów Android lub GNU/Linux. Tym jednak co wyróżnia UDOO, jest konstrukcja komputerka – powiązanie ze sobą możliwości dwóch różnych światów związanych z prototypowaniem rozwiązań, dostępnych  w ramach jednego urządzenia. Otrzymujemy więc platformę wyposażoną w mocny procesor główny oraz dodatkową sekcję kompatybilną z Arduino Due (w zakresie sprzętu jak i oprogramowania), opartą na procesorze ATMEL ARM SAM3x.

Co ciekawe, są to moduły zupełnie samodzielne. Przetwarzają swoje zadania asynchronicznie, bez żadnego rodzaju emulacji – to faktycznie dwie pełne platformy, wbudowane w jedną płytkę. Obydwa procesory współdzielą jedynie niektóre moduły komunikacyjne, takie jak UART Serial (micro USB używane pod GNU/Linuxem), USB OTG (micro USB używane pod Androidem) oraz wszystkie piny GPIO. Co nam to daje ? Otóż w ramach jednego urządzenia, bez zbędnych dodatkowych połączeń, za pomocą istniejących interfejsów i dołączonego oprogramowania, możemy programować platformę sterującą oraz wykorzystywać sekcję Arduino do komunikacji z dodatkowymi modułami (motoryka, czujniki, itp.).

Poniżej przykład okna z oprogramowaniem Arduino IDE:

3

Taki stan rzeczy może mieć wpływ na prostotę pracy, pozwala skupić się na funkcjonalności projektu, bez konieczności posiadania zaawansowanej wiedzy z zakresu sprzętu (uproszczona komunikacja dotycząca dodatkowych modułów podłączonych do Arduino). Wszystko mamy w zasięgu jednego urządzenia a dodatkowe moduły (akcesoria) możemy podłączać za pomocą portów GPIO i komunikować je z Arduino.

Na początku nie było jednak tak różowo. Największą bolączką był brak odpowiedniego i wydajnego oprogramowania systemowego. Pojawiały się też problemy z obsługą układu graficznego w trybie akceleracji 3D co znacznie ograniczało pomysły na wykorzystanie komputerka.

Mój egzemplarz pochodzi z początku produkcji i był zamówiony w serwisie Kickstarter, zanim jeszcze można było go otrzymać. Pod koniec roku 2013, sprzęt szczęśliwie zmaterializował się u mnie w domu. Od tamtego czasu sporo się zmieniło. Urosła społeczność wokół produktu, pojawiły się kolejne wersje systemów operacyjnych, dodatkowe oprogramowanie czy wreszcie kilka akcesoriów takich jak wyświetlacze LCD (także dotykowy) oraz kamera (rozwiązanie zbliżone do tej dla RPI). Powiększyły się też znacznie możliwości zakupu zarówno samego UDOO jak i akcesoriów.

Tyle informacji ogólnych. Jak to wygląda w praktyce? Aby uruchomić nasze UDOO, potrzebujemy właściwie trzech elementów (oprócz UDOO oczywiście ;) ):

  • Kernela
  • Bootloader’a (U-Boot)
  • obrazu z systemem operacyjnym

I jak to zwykle bywa przy takich konfiguracjach, także w tym przypadku możemy to wszystko przygotować w sposób prosty albo trudniejszy. Sposób trudniejszy polega na przygotowaniu wszystkich elementów samemu (ściągnięcie źródeł), kompilację kernela i jego modułów, odpowiednim przygotowaniu nośnika (karty microSD) – kernel, bootloader oraz system.

Wersja prostsza polega na instalacji wcześniej przygotowanego już obrazu z konkretnym systemem. W tym przypadku mamy duży wybór gotowych rozwiązań, zaczynając od przygotowanych obrazów z systemami przez twórców UDOO (UDOObuntu, Android 4.3) po przygotowywane przez użytkowników wariacje na różny temat (XBMC, Debian Wheezy, OpenElec, OpenMediaVault, Volumio) i wiele innych. Oczywiście nic nie stoi na przeszkodzie aby i te gotowe propozycje modyfikować we własnym zakresie.

Poniżej przykład ekranu z uruchomionym systemem UDOObuntu:

4

5Podstawowe zmiany w konfiguracji UDOO (na wzór raspi-config z RPI) możemy też już wykonać w sposób prosty, za pomocą konfiguratora.

Jak może odbywać się komunikacja z UDOO? Otóż wygodnym sposobem jest wykorzystanie połączenia szeregowego (USB to RS-232) za pomocą gniazda microUSB o oznaczeniu CN6 (w przypadku korzystania z GNU/Linuxa). Mamy wtedy np. możliwość zatrzymania startu urządzenia i przejścia do konsoli UBOOT. Poniżej ekran z uruchomionym programem minicom z podpiętym po USB portem CN6 (już po wystartowaniu systemu UDOObuntu):

6

W tym przypadku nie musimy łączyć się do urządzenia np. przez protokół SSH, wystarczy się zalogować w oknie terminala.Oczywiście możemy pracować z sesją graficzną, podpinając klawiaturę i myszkę albo przez połączenie VNC.

Na początku wykorzystywałem UDOO podobnie jak RPI – jedna usługa, jedna funkcjonalność i dedykowane do tego celu rozwiązanie. Biorąc jednak pod uwagę jego znacznie większą wydajność, po pewnym czasie UDOO zmieniło się w serwer z uruchomionymi różnymi usługami. Podpinając do UDOO dysk SATA (prototyp, dysk jest pod UDOO :) )

7

Możemy uruchomić jako główny system operacyjny np. Debiana a później doinstalować kolejne usługi. Jednym z rozwiązań może być uruchomienie najpierw serwera NAS (OMV):

8

Plus wszystkie usługi dostarczane do OMV w ramach rozszerzeń (wtyczek). Jest ich całkiem sporo, podzielonych na kilka kategorii, takich jak kopie zapasowe, multimedia, usługi sieciowe, współdzielenie zasobów, itd.

Gdybyśmy chcieli dodatkowo obciążyć nasz komputerek (nawiązując do poprzednich artykułów o tematyce muzycznej), możemy doinstalować np. serwer muzyczny (Logitech Media Server) aby przesyłać muzykę strumieniowo na urządzenia będących klientami Squeeze (Malinka może wystąpić w takiej roli). Poniżej ekran z widokiem panelu LMS:

9

I mamy cicho, wydajnie (sprawdzone) i oszczędnie energetycznie :) Na koniec możemy podpiąć do naszego UDOO panel LCD i pobierać obraz z kamery – np. uruchomionej przy pomocy RPI. Teraz już wiadomo o czym będą kolejne artykuły z cyklu „Malinowe przepisy” :)

Pozdrawiam i zapraszam na dalsze artykuły.