Raspberry Pi

Z Technique.pl
Skocz do: nawigacja, szukaj

Raspberry Pi

Właśnie mijają dwa lata od pojawienia się na rynku komputera Raspberry Pi. Dwa lata, to na współczesnym rynku cała epoka.

Ponieważ zajmujemy się tym komputerem poniekąd zawodowo poświęcimy mu chwilę uwagi.

Odrobina historii

Komputer ten pojawił się na "deskach kreślarskich" już około 2006 r. Jednak dopiero w 2011 r. przetestowano prototypy, które wiosną 2012 r. trafiły do produkcji. Może dziwić ten fakt, ale w zasadzie komputer Raspberry Pi został zaprojektowany przez hobbystów. Głównym celem projektu były zastosowania dydaktyczne. Twórcy sami siebie określali jako weteranów komputerów z lat 80, którym nie do końca podobał się kierunek w którym rozwija się współczesna informatyka. Do uruchomienia i prowadzenia produkcji komputera w 2008 r. została powołana fundacja charytatywna(!).

Raspberry Pi, 512 MB, model B - czyli z gniazdem Ethernet i dwoma portami USB.

Nadzieje

Naszym planem było rozwiązanie przy pomocy tego komputera istotnych problemów ze sterowaniem elektronicznym. Jakim? Czego? Na razie to nieistotne... Zasadniczo chodziło o możliwość szybkiej akwizycji danych (tzn. pomiarów częstotliwości i wartości analogowych) i ich rejestracji, a także jakiejś analizy tych danych i wywoływania na ich podstawie akcji, z zachowaniem możliwości zdalnej kontroli nad systemem. Czyli chcieliśmy zastąpić komputer PC ze specjalizowanym oprogramowaniem i kartami pomiarowymi czymś znacznie mniejszym, poręczniejszym i tańszym.

Platforma Arduino nie była dla nas satysfakcjonująca. Podobnie było z innymi niedrogimi sterownikami mikroprocesorowymi bazującymi np. na zasłużonych procesorach 8051 czy BasicStamp. Z drugiej strony, podobne do Raspberry Pi rozwiązania przemysłowe były abstrakcyjnie drogie (nie będziemy ich tu wymieniać nawet dla przykładu).

Plusy

Raspberry Pi sprawiał idealne wrażenie: procesor ARM o częstotliwości 700 MHz, 256 MB (później 512 MB) pamięci operacyjnej, wykorzystanie kart pamięci SD jako pamięci masowej, dość szybka grafika ze sprzętowym wspomaganiem odtwarzania filmów i nawet akceleracją 3D... Do tego porty USB, sieć Ethernet, HDMI, wyjście RCA na tradycyjny monitor/TV, złącze kamery cyfrowej, wyświetlacza LCD, a także uniwersalne złącze rozszerzeń GPIO (m.in. z magistralami I2C i SPI), wyjściem dźwięku, a także paroma innymi portami, które trudno wyszczególnić na jednym oddechu sprawiało, że komputer robił wrażenie.

Szczegółowy opis można znaleźć na stronie fundacji lub w Wikipedii.

Wyposażenie i konfiguracja komputera jest imponująca, szczególnie jeżeli weźmie się pod uwagę, że wszystko razem jest mniejsze niż kaseta magnetofonowa i kosztuje mniej-więcej 35$ (model bez złącza Ethernet nawet ok. 25$).

Również zasadniczą zaletą jest to, że komputer ten pracuje pod kontrolą "zwykłego" systemu operacyjnego - Linux. Dzięki temu można wszelkie prace programistyczne prowadzić bezpośrednio za jego pomocą - na nim samym, co odróżnia go od większości (wszystkich?) dostępnych sterowników mikroprocesorowych (może nie licząc CA80 i podobnych, programowanych w asemblerze przy użyciu kodu binarnego...).

Tzn. Komputer ten jest na tyle silny, że może swobodnie "udźwignąć" system operacyjny i umożliwić uruchomienie edytora tekstu oraz kompilatora prawie dowolnego języka programowania.

Oprogramowanie

Oczywiście komputer ten nie służy tylko do programowania. Można na nim uruchomić tzw. powłokę graficzną (czyli w wypadku Linuxa - X Window) i wykorzystywać go do pracy biurowej, przeglądania internetu lub oglądania filmów. Dzięki systemowi Linux, w teorii, można robić wszystko to, co robiło by się nie tylko ze smartfonem lub tabletem, ale także z komputerem stacjonarnym. Standardowo do Raspberry Pi jest zapewniona dedykowana wersja dystrybucji Debian. Dodatkowo są dostępne też inne dystrybucje Linuxa (łącznie z wersją ARM Slackware z którego korzystamy), a także RiscOS.

Warto też wspomnieć, że firma Wolfram udostępniła na ten komputer bezpłatną wersję swojego programu "Mathematica".

Sprzęt

Ponieważ komputer pracuje zwykle pod kontrolą systemu Linux, więc potrafi współpracować ze znaczną grupą urządzeń dostępnych dla komputerów PC i łączonych z nim poprzez interfejs USB, Ethernet lub inne przejściówki USB (np. USB-RS232).

Oczywiście w systemie Linux jest zapewniona obsługa wszystkich portów znajdujących się na płytce Raspberry Pi - także szeregowych. Dzięki temu można w łatwy sposób porozumieć się z bardzo szeroką gamą urządzeń, czujników lub układów scalonych wyposażonych w typowe w elektronice interfejsy I2C i SPI.

Raspberry Pi z kartą przetwornika ADC (I2C) i kartą pamięci. Żółte gniazdo to kompozytowe wyjście video (system PAL/SECAM/NTSC zmienia się w parametrach startowych systemu), a niebieskie to wyjście dźwięku (line out). Symetrycznie, po drugiej stronie płytki widać gniazdo HDMI. Na krawędzi widocznej od tyłu znajdują się porty USB i Ethernet. Dostrzegalne na krótszej krawędzi, obok karty SD, złącze microUSB służy tylko do zasilania. Na płytce umieszczone są także złącza dla cyfrowej kamery i wyświetlacza LCD (niewidoczne).

Po premierze Raspberry Pi na rynku szybko pojawił się znaczny asortyment dodatkowych akcesoriów i kart rozszerzeń jak np. płytki uniwersalne, przetworniki ADC itp. Wiele z dostępnych kart rozszerzeń ma charakter hobbistyczno-dydaktyczny i jest wyposażona od razu w działające przyciski, przekaźniki i diody LED (np. "standardowy" PiFace).

Raspberry Pi z uniwersalną kartą wejścia-wyjścia PiFace (na wierzchu) i kartą przetwornika ADC (pod spodem, wewnątrz obudowy). PiFace posiada 16 wejść-wyjść, które domyślnie są zorganizowane w 8 wyjść (wszystkie wyposażone w diody LED, dwa połączone z przekaźnikami) oraz 8 wejść (4 wyposażono w z przyciski). Kierunek komunikacji można zmienić programowo.

Wady i rozczarowania

Niestety okazało się, że Raspberry Pi ma także swoje wady. Nie ma co owijać w bawełnę. Pewne rzeczy były rozczarowujące.

W pierwszym podejściu Raspberry Pi w zastosowaniach innych niż graficzne okazał się powolny. Ten problem nas dość długo prześladował, a rozwiązanie wymagało pewnych kompromisów i dogłębnego zapoznania się z konfiguracją systemu. Tzn.:

  • Raspberry Pi współdzieli pamięć sterownika graficznego z dostępną pamięcią operacyjną. Standardowo aż 128 MB przysługuje karcie graficznej. W połączeniu z pamięcią podręczną operacji dyskowych (patrz następny punkt) było to nieakceptowalne. W szczególności było to bolesne w modelu wyposażonym w 256 MB pamięci. W modelu 512 MB było trochę lepiej. Okazało się, że można to zmienić w konfiguracji systemu i w wypadku nieużywania powłoki graficznej, zmniejszyć pamięć sterownika graficznego do zaledwie 16 MB, co w zasadzie rozwiązało ten problem.
  • Wykorzystywanie karty pamięci SD jako dysku systemowego okazało się marnym pomysłem. Raz, że jest to przeraźliwie wolne rozwiązanie (trudno sobie wyobrazić działanie pamięci wirtualnej na karcie SD...). Trochę to dziwi, w szczególności, że karty SD w testach wypadają nieźle. Praktyka to jednak weryfikuje. Dwa, że to dość zawodne rozwiązanie. Można poprawić sytuację stosując jako dysk pamięć Flash z interfejsem USB (czyli popularne "pendrive"). Jednak ostatecznym rozwiązaniem usuwającym zasadniczo problemy wydajnościowe i trwałościowe pamięci masowej jest zastosowanie dysku twardego podłączonego przez USB. Cóż, dyski SSD są drogie, a dyski tradycyjne mało mobilne - mówiąc oględnie. W każdym razie w systemie "deweloperskim" sprawdza się prawdziwe HDD, a karty SD nadają się raczej do zastosowaniach mobilnych - gdy system nie musi zbyt wiele czytać lub zapisywać na dysku.
  • Procesor można dość bezpiecznie "podkręcić" o 100 MHz - czyli do 800 MHz. Potencjalnie można nawet do ponad 1GHz, ale może się to odbyć kosztem znacznego ograniczenia jego trwałości.

W drugim podejściu pewnym rozczarowaniem było dla nas złącze rozszerzeń. Raspberry Pi potencjalnie dysponuje 26-pinowym złączem rozszerzeń GPIO.

  • Niestety część z tych wyprowadzeń ("piny") to masa i zasilanie. Dalsza część standardowo jest wykorzystana przez interfejsy szeregowe lub jest przypisana do innych zastosowań. Oczywiście wszystkie wyprowadzenia tego złącza są programowalne (tzn. pomijając masę i zasilanie), ale i tak chcąc mieć dużo szybkich wejść i wyjść cyfrowych, trudno jest zrezygnować np. z interfejsów szeregowych, które akurat są potrzebne do czegoś innego.
  • Jeżeli potrzeba naprawdę szybkich wyjść lub wejść, to bez rezygnacji ze zbyt dużej ilości standardowych funkcji, daje się wykorzystać na własny użytek 8...10 wyprowadzeń złącza rozszerzeń. Zaletą za to jest możliwość przypisania oddzielnego przerwania każdemu wyprowadzeniu.
  • Ale bez euforii. Przerwania użytkownika dają się wywoływać z częstotliwością rzędu 8 kHz. Aby móc wywoływać przerwania częściej, trzeba napisać własny moduł jądra systemu do ich obsługi. Czasem prostsze od pisania modułów jądra jest badanie stanu lub programowanie danego wyprowadzenia przy pomocy pętli programu (można bez "napinania się" uzyskać częstotliwości rzędu 2-3 MHz).
  • Jeżeli cyfrowe wejścia-wyjścia nie muszą być szybkie (w granicach paru kHz), można użyć specjalizowanych układów scalonych realizujących tę funkcjonalność przez interfejsy szeregowe (dostępne są odpowiednie karty rozszerzeń).
  • Potencjalnie można wykorzystać także wyprowadzenia pozostałych portów (np. kamery), w końcu są programowalne i obsługiwane przez ten sam układ - ale tego jeszcze nie trenowaliśmy.
  • Komputer ma tylko jeden sprzętowy sterownik PWM, w dodatku standardowo obsługujący dźwięk. Czyli jak go wykorzystamy, to dźwięku nie będzie (a w zasadzie będzie, ale nieartykułowany). Na rynku są dostępne zarówno karta dźwiękowa z prawdziwego zdarzenia jak i sterowniki PWM, ale ich zakup to dodatkowe koszty.
Raspberry Pi z płytką prototypową/uniwersalną Adafruit (na wierzchu) i kartą ADC (pod spodem).

Podsumowanie

Mimo wszystkich wad, Raspberry Pi jest świetnym komputerem edukacyjnym, który można używać w bardzo szerokim zakresie zastosowań.

Po dwóch latach produkcji konstrukcja ta jest nadal dostępna i zapewne będzie dostępna jeszcze długo. Komputery Raspberry Pi cieszą się bardzo dużą popularnością. Dzięki temu są dobrze udokumentowane. W Internecie można znaleźć dużo opisów i instrukcji dotyczących tych komputerów, ich programowania i wykorzystania.

Obecnie na rynku, w swoich granicach cenowych, Raspberry Pi nie ma konkurencji. Komputery tylko nieznacznie szybsze są przeciętnie parokrotnie droższe. Chyba tylko Beagleboard łapie się w zakresie cenowym ok. 55$ (Pi to 25-35$!), ale Beagleboard powstał w innym celu - bardziej sterownika niż komputera (jest przeznaczony dla bardziej zaawansowanych użytkowników). Inni konkurenci są w fazie testów (np. RiotBoard wygląda bardzo obiecująco, ale będzie co najmniej trzykrotnie droższy - piszemy to w marcu 2014 - i tak na oko dwukrotnie większy). Innymi słowy, aktualnej pozycji Raspberry Pi może zagrozić tylko jego oficjalny następca, o ile będzie w podobnej cenie. Jednak na razie nic o nim nie słychać.


PS.

Osobiście, jak zastanawiam się nad cenami współczesnych komputerów, to przychodzi mi do głowy, że zbliżają się czasy króla Poleandra Partobona, który "...w kamienie na drogach móżdżki kazał wprawiać elektryczne, które wielkim głosem przechodnia ostrzegały, aby się nie potknął; także w słupy, w mury, w drzewa, aby wszędzie się dało drogi dopytać;..." (S. Lem, "Bajki Robotów").


Autor: dr inż. Szymon Dowkontt


Powrót do "Strony głównej"


Powrót do "Wydania 2014"