Účelem tohoto článku je seznámit čtenáře časopisu s Raspberry kitem v podobě recenze i základních tipů na práci s ním a jeho použití. Nebudeme se zde zabývat testy výkonu při hraní některého klonu počítačové hry nebo při přehrávání videa, protože tuto informaci si může čtenář celkem snadno dohledat na internetu. Místo toho se zde soustředíme na možnost začlenění tohoto modulu do nějakého vyššího, prakticky použitelného celku, například tím, že k němu připojíme přes výkonový driver dva krokové motory. Již jednoduchá konstrukce nám umožní postavit malý souřadnicový stroj, který obsahuje vše potřebné. Má interakci s uživatelem přes klávesnici a myš, může komunikovat s okolím přes počítačovou síť a vlastní zobrazení je přes běžný počítačový monitor. I když se jedná o jednoduché, byť výkonné zařízení, při jeho návrhu jsem musel hledat různá řešení, o kterých se chci dále zmínit. Celou sestavu kitu Raspberry PI s připojenou deskou budičů krokových motorů a motory můžete vidět na obr. 1.
Obr. 1 Raspberry PI (vlevo) s připojenou deskou budičů motorů (vpravo) a krokovými motory
Odpověď na tuto otázku nejlépe vysvětlí převzaté blokové schéma (www.elinux. org), které je uvedené na obr. 2.
Obr. 2 Blokové schéma Raspberry PI (zdroj: www.elinux.org)
Modul o velikosti asi 86×54 mm obsahuje následující hlavní části:
Jak je vidět, jedná se vlastně o malý funkční počítač, který je napájen přes USB mikro konektor z 5V. Operační systém je spouštěn z SD karty, zatímco na 2 USB porty lze připojit klávesnici a myš, popř. další periférie jako třeba Wi-Fi. To je zdánlivě samozřejmé, a přesto jsem již zde narazil na první problém, který mne při vývoji konstrukce poněkud zdržel. Do prvního USB portu jsem zasunul USB hub, do kterého jsem připojil klávesnici, myš a USB flash disk. K mému překvapení USB flash disk nefungoval. Po zkoušení různých formátů disku jsem zasunul USB flash disk do druhého USB portu, kde již pracoval bez problému. Pro připojení monitoru normálně slouží HDMI konektor, ale protože vlastním monitor pouze s DVI konektorem, musel jsem dokoupit redukci HDMI-DVI. I tak se mi jeví cena za celý kit jako velmi přijatelná (cca 1 tisíc Kč).
Jak jsem již uvedl na začátku, cílem bylo připojit k tomuto kitu krokové motory. Výrobce kitu myslel i na variantu pro jeho rozšíření, protože již zahrnuje 26pinový konektor s roztečí 2.54 mm. Tento konektor obsahuje, kromě napájecího napětí, také několik pinů procesoru. Protože to není konektor ve stylu mobilního telefonu, ale má naopak dostatečnou velikost, je jeho použití snadnější. Navíc k němu lze snadno připojit běžný samořezný konektor. Je ale nutné počítat s tím, že všechny piny jsou v napěťových úrovních 3.3V, kdy jakýkoliv kontakt s 5V napěťovou úrovní kit zničí.
Tabulka 1 Vývody v horní řadě konektoru (zdroj: www.elinux.org)
Tabulka 2 Piny ve spodní řadě konektoru (zdroj: www.elinux.org)
Při popisu si opět pomůžeme obrázky z výše uvedených webových stránek. V tabulce 1 a 2 je vidět zapojení horní a spodní řady konektoru. Protože kit je vyráběn ve dvou revizích, tak jsou v tabulce uvedeny obě dvě. Protože každý vývod konektoru může být naprogramován na několik funkcí, z tabulek také vyplývají potřebné informace. Vývod konektoru může třeba určitý čas fungovat jako digitální vstup, nebo i výstup, zatímco po přeprogramování to může být třeba zdroj hodin pro SPI sběrnici. Tento konektor obsahuje i vývody pro vstup a výstup digitální hodnoty, stejně jako umožňuje přes SPI další rozšíření vstupu a výstupu, připojení hodin po I2C sběrnici, UART atd.
Pro instalaci operačního systému je potřeba rychlé SD karty, která není součástí dodávky. Protože na velikosti paměti karty opravdu záleží, doporučuji kartu s alespoň 8 GB. Z internetu se stáhne některá z distribuce Linuxu, která je pro tento kit určená. Já jsem zvolil distribuci Raspbian „Wheezy“, což je varianta Debian Linuxu. Dále je k instalaci potřeba mít volně šiřitelný program Win- 32DiskImager, protože ten nahraje obraz linuxové distribuce na SD kartě. Potom už je možné zasunout kartu do kitu, připojit monitor, klávesnici, ethernet a myš. Po připojení napájení začne kit bootovat. Při jeho prvním spuštění je možné provést lokální nastavení. Jednou z možností, kterou doporučuji, je úprava souborového systému přes celou SD kartu. Po prvním naběhnutí systému se objeví grafické prostředí s ovládáním, které by uživatelům znalých Windows nemělo dělat velké problémy (zde je ale nutné říci, že komfort je o něco nižší). V mém případě jsem hned narazil na to, že mi nefunguje internet. V distribuci bylo nastaveno DHCP, já mám však pevnou IP adresu. Protože hledání nastavení v grafickém prostředí bylo bez výsledku, musel jsem jít zpět na PC a hledat řešení. To spočívalo v použití příkazového řádku. Musel jsem editovat soubor „interfaces“ v adresáři „ets/networks“ a řádek:
„iface eth0 inet dhcp“ nahradit za řádek „iface eth0 inet static“ a dále přidat řádky:
address xx.xx.xx.xx
netmask xx.xx.xx.xx
gateway xx.xx.xx.xx
netmask xx.xx.xx.xx
s hodnotami podle mojí sítě. Teprve potom internet a web prohlížeč fungovaly bez problému.
To jde celkem snadno. Je možné si třeba zvolit Python. Já jsem si vybral překladač C++, a tedy GCC, který je samozřejmě součástí distribuce. Opět na mne čekala příkazová řádka, a tak jsem jako první věc zkusil přeložit a spustit kratičký program v C++ – na žádný problém jsem v tomto případě nenarazil. V dalším kroku následovalo připojení LED diody a její rozblikání. Pro člověka znalého těchto úloh to není žádný problém, ale co tady v Linuxu? Aplikace samozřejmě běžela ve virtuálním prostoru, takže zápis na adresu, kde by měly být podle katalogového listu procesoru registry pro ovládání externích pinů, skončil výhružnou větou od operačního systému. Nezbylo, než jít zpět na internet, ale tentokráte již přímo z kitu. Ukázalo se, že jsem nebyl daleko od domněnky, jak se má postupovat. Bylo potřeba si alokovat paměť o velikosti 4 KB a tu namapovat pomocí funkce „mmap“ do fyzického adresního prostoru. Při této operaci jsem musel dát pozor na zarovnání fyzické a virtuální stránky paměti. Po naprogramování vlastní knihovny již vše fungovalo bez problému. Nyní již bylo rozblikání LED diody snazší. Nakonec jsem na internetu našel volně stažitelnou knihovnu Wiring- PI, jejíž součásti jsou knihovní rutiny pro obsluhu všech periférií dostupných na pinech. Obsahuje hlavičkové soubory a C zdrojové kódy pro IO porty, UART, SPI a I2C, a dokonce i PWM. Potom jsem už mohl připojit desku s krokovými motory, které se po několika restartech konečně roztočily, a dokonce i tak, jak jsem potřeboval. Proč byly ty restarty nutné? Zápis špatné hodnoty na adresu konfigurace portu způsobil totiž zatuhnutí systému. Je dobré vědět, že zápisem špatné hodnoty třeba odpojíme SD kartu s operačním systémem, ale kit přitom nezničíme.
Zcela bez výhrady bych tento kit doporučil studentům a školám pro potřebu výuky. Za bezkonkurenční nízkou cenu získají vývojový hardware, ke kterému lze připojit periférie, který má překladače mnoha programovacích jazyků atd. Vždyť jenom programátor nějakého 8bitového procesoru stojí mnohokrát více a překladače vyššího programovacího jazyka jsou ještě dražší. Navíc, pokud se při vývoji s tímto kitem něco zničí, tak škoda není tak veliká.
Jiná situace je určitě v profesionální sféře. U firem, které chtějí přejít z nějakého 8 nebo 16bitového procesoru někam výše a zvažují různé možnosti, je pohledů na věc jistě více. Nové zařízení musí být spolehlivé a přeškolení musí být časově akceptovatelné. Zde tedy mají možnost téměř zdarma vyzkoušet, co by je ten přechod na novou moderní technologii stál. A pokud nakonec padne rozhodnutí, že by daná změna nepřinesla požadovaný užitek, tak v šuplíku zůstane materiál v hodnotě 1 toneru do tiskárny.