Ale Raspberry Pi toho dokáže ještě víc. Můžeme jej využít i jako zázemí pro nízkoúrovňovou práci s hardwarem, tedy s různými blikátky, hejblátky a tlačítky. A kdo ví, třeba bude Raspberry jednou mozkem nového pána tvorstva - Robota.
10.10.2012 21:00 | Petr Horáček | přečteno 64240×
Určitě jste si na destičce Raspberry všimli dvou řad pinů, ty slouží k nízko úrovňové komunikaci s hardwarem. Můžeme pomocí nich například rozsvítit LEDku, spustit servo motor, zobrazit čísla na displayi a podobně. Hardwarová část (tedy “zbastlené” zařízení připojené na ony piny) je poté ovládána pomocí softwaru běžícím v Raspberry. V této části seriálu se vymaníme z čistě softwarových záležitostí a krátce nahlédneme do světa hardwaru ač velice jednoduchého (přesto bude nutné znát alespoň elementární základy elektroniky).
V dnešním díle si představíme funkce jednotlivých pinů, možnosti zapojování a možnosti programování.
GPIO nebo General Purpose Input/Output jsou piny, tedy jakési vývody, které lze programovat pomocí softwaru. Do těchto pinů lze posílat elektrický signál nebo jej z nich naopak přijímat, tím lze ve finále pracovat s připojeným hardware na té nejnižší úrovní.
Na Raspberry je takových vývodů celkem 26. GPIO vývodů je zde standardně 8, krom nich se zde nachází i dva piny pro UART, dva pro I2C a šest pro SPI, ty však jdou také přenastavit pro GPIO využití. Nesmíme zapomenout ani na dva výstupy s napětím (3,3V a 5V) a zem.
Při používání jakéhokoliv pinu dávejte veliky pozor, jsou totiž připojeny bez ochrany přímo na čip (narozdíl třeba od Arduina) a ten zvládá napětí nanejvíš 3,3V. Nikdy tedy nezapojujte do pinů napětí 5V, v opačném případě by mohlo dojít ke zničení polovodičového srdce Raspberry. Tak dvakrát měř a jednou řež.
Co nás nožná bude z počátku mást, je značení jednotlivých pinů, jiná jména jsou jim přiřazena z pohledu značení Raspberry, jiná z pohledu procesoru a jiná z pohledu knihovny RPi.GPIO, kterou si ještě v dnešním článku představíme.
Dále předkládám obrázek se značením pinů, které platí pro značení Raspberry.
A zde je tabulka pro převody mezi značeními:
Číslo pinu | Raspberry Pi | RPi.GPIO | Čip |
P1-01 | 3V3 | 1 | |
P1-02 | 5V0 | 2 | |
P1-03 | SDA0 | 3 | GPIO0 |
P1-04 | DNC | 4 | |
P1-05 | SCL0 | 5 | GPIO1 |
P1-06 | GND (zem) | 6 | |
P1-07 | GPIO7 | 7 | GPIO4 |
P1-08 | TXD | 8 | GPIO14 |
P1-09 | DNC | 9 | |
P1-10 | RXD | 10 | GPIO15 |
P1-11 | GPIO0 | 11 | GPIO17 |
P1-12 | GPIO1 | 12 | GPIO18 |
P1-13 | GPIO2 | 13 | GPIO21 |
P1-14 | DNC | 14 | |
P1-15 | GPIO3 | 15 | GPIO22 |
P1-16 | GPIO4 | 16 | GPIO23 |
P1-17 | DNC | 17 | |
P1-18 | GPIO5 | 18 | GPIO24 |
P1-19 | SPI_MOSI | 19 | GPIO10 |
P1-20 | DNC | 20 | |
P1-21 | SPI_MISO | 21 | GPIO9 |
P1-22 | GPIO6 | 22 | GPIO25 |
P1-23 | SPI_SCLK | 23 | GPIO11 |
P1-24 | SPI_CE0_N | 24 | GPIO8 |
P1-25 | DNC | 25 | |
P1-26 | SPIO_CE1_N | 26 | GPIO7 |
Co budeme krom samotného Raspberry potřebovat? Vystačíme si s málem, v dalších dílech budu k bastlení používat nepájivou propojovací desku na zkoušení obvodů, propojení mezi deskou a počítačem pak budu řešit jednoduchými drátky z ribbon kabelu. Krom toho použijeme odpory, LEDky, spínače apod., to si ale upřesníme v jednotlivých dílech tohoto seriálu v seriálu.
Pokud ale budete chtít víc než tento primitivní (avšak pro náš účel dostačující) základ, můžete si koupit jednu z již hotových desek (či stavebnici) se spoustou součástek, k dispozici je třeba deska Getboard nabízející spoustu funkcí a dovedností.
Pro samotné programování jsem použil nejnovější verzi distribuce Raspbianu (z 18. září), v jeho nastavení je mimochodem vestavěná nová možnost - přetaktování, té jsem hned využil, a tak mi Raspberry běží s frekvencí celého gigahertze.
Aplikace pro ovládání GPIO můžeme psát v C, Javě, Pythonu, Perlu, Shellu a dalších jazycích, příklady skriptů si můžete prohlédnout na webu elinux.org. Já pro tento seriál zvolil Python, práce v něm je jednoduchá, kód je jaksi “malý” a navíc je programovačně-jazyčnou vlajkovou lodí Raspberry Pi. Pro editaci kódu budu používát vestavěné Python IDLE.
Pro práci s GPIO si doinstalujeme jednu malou pythonovskou knihovnu, díky které budeme moci k pinům přistupovat bez zbytečné námahy, rychle a krátce. Například rozsvícení LEDky se vejde na pouhé tři řádky kódu. Pro instalaci této knihovny vložte do terminálu (LXTerminalu) následující příkazy:
wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.1.0.tar.gz
tar zxf RPi.GPIO-0.1.0.tar.gz
cd RPi.GPIO-0.1.0
sudo python setup.py install
Po úspěšné instalaci by měl být počítač připraven ke GPIO programování, to si ale předvedeme až v dalším díle - sestavíme si obvod s LED, kterou rozblikáme pomocí Pythonu.
A to je vše, doufám, že vás tento úvod do nízkoúrovňového programování hardwaru na Raspberry Pi zaujal.