Raspberry π VIII. - Úvod do GPIO

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 64237×

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

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ž.

Značení pinů

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

Hardware

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í.

Programování

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.

Závěr

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.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1953