Lekce 3 - Raspberry Pi - Piny a protokoly
V předchozí lekci, Raspberry Pi - Připojení pomocí SSH a VNC, jsme se naučili jak vzdáleně ovládat naše Raspberry pomocí jiného zařízení.
V dnešní lekci se dozvíme, co jsou to Raspberry Pi piny, jak fungují a k čemu se používají. Podíváme se, jakou mají funkci u Raspberry i u jiných zařízení a především jaké rozdíly mezi nimi jsou.
Co jsou to piny?
Piny jsou elektrické kontakty, které se používají pro snadné připojení modulů, např. k Raspberry nebo k Arduinu. Takové piny mají různé druhy a funkce. Skupině pinů reprezentujících nějaké rozhraní se poté říká port.
Jaká zařízení piny používají?
Piny používají především zařízení s otevřeným přístupem. To jsou taková zařízení, která používají především vývojáři. Když máme například mobil, tak většina výrobců nechce, aby se jim v něm někdo hrabal, upravoval hardware nebo software. Ale zas na stranu druhou většina standardních uživatelů nechce svůj mobil upravovat a měnit. Chce hotový a fungující produkt, se kterým nebude muset nic víc dělat.
Ti, co se někdy pohybovali ve světě elektrotechniky, si možná všimli, že podobné nožičky jako jsou piny má i většina elektrotechnických součástek. To je z důvodu, že takové součástky většinou používáme někde v obvodu, kam se jednoduše zapasují do otvorů pro ně určených. Nožičky jsou proto nejjednodušší volbou.
Jaká jsou tedy zařízení používající tyto piny? Jsou to například:
- právě Raspberry Pi,
- Arduino,
- NodeMcu (zařízení velmi podobné Arduinu s vestavěnou Wi-Fi a o poznání menší, vzhledem připomíná mikroprocesor),
- Orange Pi nebo třeba
- Sony Spresense (velmi zajímavá vývojová deska od Sony podobná Raspberry, ale o poznání dražší).
- A další...
Piny Raspberry Pi
Raspberry existuje ve více variantách. Máme zde:
- model Zero,
- 3 Model B,
- 3 Model A
Každý tento model má jiné vlastnosti a jiný počet pinů a jejich rozmístění. Proto než začneme rozebírat co jaký pin dělá, měli bychom se podívat, jaké piny naše Raspberry vůbec má.
Získání informací o pinech
Do terminálu na Raspberry napíšeme příkaz:
pinout
Zobrazí se nám podrobný výpis všeho ohledně pinů našeho konkrétního Raspberry, na kterém tento příkaz spouštíme:
Na obrázku výše vidíme typ našeho Raspberry jako obrázek a dále už výpis všech pinů, jak jdou za sebou. Piny jdou na Raspberry zleva doprava, když vpravo máme USB konektory. Pojďme si je popsat.
GPIO piny
GPIO piny (General Purpose Input/Output, tedy univerzální vstupní a výstupní piny) lze ovládat pomocí knihovny GPIO. Používají se například k ovládání LED diod nebo čehokoli jiného.
Číslování GPIO board vs. GPIO BCM
Když budeme chtít používat GPIO port třeba k ovládání diody, musíme si nastavit, jaký režim číslování chceme používat. Pomocí něj pak určíme, jaký pin budeme ovládat. Tyto režimy jsou:
GPIO.board
- Používá určování pomocí čísel na desce Raspberry. Každý pin má přidělené číslo.GPIO.BCM
- Na rozdíl od toho používá určování pomocí GPIO označení. Všimněme si, že každý pin GPIO má své číslo a toto číslo se právě používá u režimu BCM.
Rozdíl vidíme na obrázku níže:
Červeně je vždy označeno, jaký režim používá která označení.
Nastavení režimu číslování
V Pythonu nastavujeme režim pomocí příkazu:
GPIO.setmode(GPIO.BCM)
Protokoly I2C, SPI a UART
Pro datovou komunikaci se složitějšími zařízeními můžeme na Raspberry využívat několik protokolů. Pokud vás zajímá, který z nich musíte použít pro připojení k danému zařízení, krátkou odpovědí je zkontrolovat specifikační list. Například jedna malá LED obrazovka může vyžadovat SPI a další může používat I2C (téměř nic nepoužívá UART). Pokud si přečtete dokumentaci dodávanou s produktem (za předpokladu, že nějakou má), obvykle vám řekne, které piny Pi použít.
Pojďme si nyní vysvětlit o čem je vlastně řeč
I2C
I2C je název pro typ počítačové sběrnice, pomocí které lze k Raspberry připojit externí hardwarové moduly (rozumějme složitější hardware, než je např. LED dioda), které potřebují více signálů. Můžeme tak připojit například Arduino nebo displej.
Sběrnice I2C používá pro komunikaci pouze dva signálové vodiče: SDA a SCL. Fungují tak, že odesílají data do připojení SDA, přičemž rychlost je řízena pomocí pinu SCL.
Tato sběrnice běží celá na topologii master/slave:
- Master je vždy jen jedno zařízení. Je to tedy to hlavní zařízení, které určuje, jaké zařízení slave bude vysílat data.
- Slave zařízení může být více. To znamená, že
můžeme mluvit s více zařízeními na jednom připojení I2C, protože
každé zařízení je jedinečné a zjistitelné uživatelem a počítačem
pomocí příkazů Linuxu jako je
i2cdetect
.
I2C je rychlý a snadný způsob, jak do projektu přidat mnoho různých komponent jako jsou LCD / OLED obrazovky, teplotní senzory a analogově-digitální převodníky pro použití s fotorezistory atd. I když je jejich pochopení trochu složitější než standardních pinů GPIO, znalosti získané z učení I2C vám dobře poslouží. Stejně tak pochopíte, jak připojit senzory s vyšší přesností pro použití v terénu.
SPI
SPI (zkratka z Serial Peripheral Interface Bus, česky sběrnice sériového periferního rozhraní). Jedná se o další protokol pro připojení kompatibilních zařízení k vašemu Raspberry Pi. Podobá se I2C v tom, že mezi Raspberry Pi a zařízeními k němu připojenými existuje vztah master - slave.
SPI se obvykle používá k odesílání dat na krátké vzdálenosti mezi
mikrokontroléry a součástmi, jako jsou posuvné registry, senzory a dokonce i
SD karta. Data jsou synchronizována pomocí hodin (SCLK
na
GPIO11
) z hlavní jednotky (naše Pi) a data odesílána z Pi do
naší komponenty SPI pomocí kolíku MOSI
(GPIO
GPIO10
). MOSI
označuje Master Out Slave In (Master je
vždy výstup, Slave vstup). Pokud komponenta potřebuje odpovědět na naše
Pi, odešle data zpět pomocí MISO
pinu (GPIO9
), což
je zkratka pro Master In Slave Out.
UART
UART (univerzální asynchronní přijímač / vysílač) je sériově používán pro komunikaci s jinými zařízeními. Běžně známý jako "Serial", piny UART poskytují např. přihlášení cmd / terminálu pro bezkontaktní nastavení, což znamená připojení k Pi bez klávesnice a myši. Jednodušší způsob je ten, který jsme si ukázali v minulé lekci.
Další označení pinů
Můžeme se setkat s dalšími zkratkami označující kam co zapojit.
DNC
DNC (Do Not Connect) je zkratka pro "nepřipojujte", to je docela samo-vysvětlující.
GND
GND jsou piny, které používáme k uzemnění. Nezáleží na tom, který pin použijeme, protože jsou všechny připojeny ke stejné zemi. GND je místo, odkud lze měřit všechna napětí, a také uzavírá elektrický obvod.
Při vytváření obvodů je vždy moudré nejprve připojit GND před použitím jakéhokoli napájení, protože to zabrání zničení citlivých součástek.
Příklad
Když tedy budeme chtít zapojit a ovládat LED diodu (u diody musíme jednu
nohu v obvodu dát do plus a druhou do mínus), anodu (zpravidla ta delší
nožička) zapojíme do libovolného GPIO portu katodu do GND
.
Tímto zapojením se nám vytvoří jednoduchý obvod, který budeme moci
ovládat pomocí Raspberry a třeba Pythonu. Jak na to si ukážeme již
příště.
5V
a 3V
Tyto piny používáme k napájení daným napětím. Nedají se ovládat, jednoduše jsou stále pod daným napětím. Používají se standardně, když nepotřebujeme pin ovládat, ale potřebujeme jen jeho napětí, nebo přísun napětí ovládáme jinak, například pomocí bridge. Do těchto pinů lze zapojit většinu součástek.
V příští lekci, Raspberry Pi - Blikání diody, si vytvoříme jednoduchý obvod s diodou.