3. diel - Raspberry Pi - Piny a protokoly
V predchádzajúcej lekcii, Raspberry Pi - Pripojenie pomocou SSH a VNC , sme sa naučili ako vzdialene ovládať naše Raspberry pomocou iného zariadenia.
V dnešnej lekcii sa dozvieme, čo sú to Raspberry Pi piny, ako fungujú a na čo sa používajú. Pozrieme sa, akú majú funkciu u Raspberry aj u iných zariadení a predovšetkým aké rozdiely medzi nimi sú.
Čo sú to piny?
Piny sú elektrické kontakty, ktoré sa používajú na jednoduché pripojenie modulov, napr. K Raspberry alebo k Arduino. Také piny majú rôzne druhy a funkcie. Skupine pinov reprezentujúcich nejaké rozhranie sa potom hovorí port.
Aké zariadenia piny používajú?
Piny používajú predovšetkým zariadenia s otvoreným prístupom. To sú také zariadenia, ktoré používajú predovšetkým vývojári. Keď máme napríklad mobil, tak väčšina výrobcov nechce, aby sa im v ňom niekto hrabal, upravoval hardvér alebo softvér. Ale zas na stranu druhú väčšina štandardných používateľov nechce svoj mobil upravovať a meniť. Chce hotový a fungujúci produkt, s ktorým nebude musieť nič viac robiť.
Tí, čo sa niekedy pohybovali vo svete elektrotechniky, si možno všimli, že podobné nožičky ako sú piny má aj väčšina elektrotechnických súčiastok. To je z dôvodu, že takéto súčiastky väčšinou používame niekde v obvode, kam sa jednoducho zápasom do otvorov pre ne určených. Nožičky sú preto najjednoduchšie voľbou.
Aké sú teda zariadenia používajúce tieto piny? Sú to napríklad:
- práve Raspberry Pi,
- Arduino,
- NodeMcu (zariadenie veľmi podobné Arduino s vstavanou Wi-Fi a o poznanie menšie, vzhľadom pripomína mikroprocesor),
- Orange Pi alebo napríklad
- Sony Spresense (veľmi zaujímavá vývojová doska od Sony podobná Raspberry, ale o poznanie drahšie).
- A ďalšie ...
Piny Raspberry Pi
Raspberry existuje vo viacerých variantoch. Máme tu:
- model Zero,
- 3 Model B,
- 3 Model A
Každý tento model má iné vlastnosti a iný počet pinov a ich rozmiestnenie. Preto než začneme rozoberať čo aký pin robí, mali by sme sa pozrieť, aké piny naša Raspberry vôbec má.
Získanie informácií o pinoch
Do terminálu na Raspberry napíšeme príkaz:
pinout
Zobrazí sa nám podrobný výpis všetkého ohľadom pinov nášho konkrétneho Raspberry, na ktorom tento príkaz spúšťame:
Na obrázku vyššie vidíme typ nášho Raspberry ako obrázok a ďalej už výpis všetkých pinov, ako idú za sebou. Piny idú na Raspberry zľava doprava, keď vpravo máme USB konektory. Poďme si ich popísať.
GPIO piny
GPIO piny (General Purpose Input / Output, teda univerzálny vstupné a výstupné piny) možno ovládať pomocou knižnice GPIO. Používajú sa napríklad na ovládanie LED diód alebo čohokoľvek iného.
Číslovanie GPIO board vs. GPIO BCM
Keď budeme chcieť používať GPIO port potrebné na ovládanie diódy, musíme si nastaviť, aký režim číslovanie chceme používať. Pomocou neho potom určíme, aký pin budeme ovládať. Tieto režimy sú:
GPIO.board
- Používa určovanie pomocou čísel na doske Raspberry. Každý pin má pridelené číslo.GPIO.BCM
- Na rozdiel od toho používa určovanie pomocou GPIO označenie. Všimnime si, že každý pin GPIO má svoje číslo a toto číslo sa práve používa u režimu BCM.
Rozdiel vidíme na obrázku nižšie:
Červeno je vždy označené, aký režim používa ktorá označenie.
Nastavenie režimu číslovania
V Pythone nastavujeme režim pomocou príkazu:
GPIO.setmode(GPIO.BCM)
Protokoly I2C, SPI a UART
Pre dátovú komunikáciu so zložitejšími zariadeniami môžeme na Raspberry využívať niekoľko protokolov. Ak vás zaujíma, ktorý z nich musíte použiť na pripojenie k danému zariadeniu, krátku odpoveďou je skontrolovať špecifikačný list. Napríklad jedna malá LED obrazovka môže vyžadovať SPI a ďalšie môže používať I2C (takmer nič nepoužíva UART). Ak si prečítate dokumentáciu dodávanú s produktom (za predpokladu, že nejakú má), zvyčajne vám povie, ktoré piny Pi použiť.
Poďme si teraz vysvetliť o čom je vlastne reč:)
I2C
I2C je názov pre typ počítačovej zbernice, pomocou ktorej je možné k Raspberry pripojiť externý hardvérové moduly (rozumejme zložitejšie hardvér, než je napr. LED dióda), ktoré potrebujú viac signálov. Môžeme tak pripojiť napríklad Arduino alebo displej.
Zbernica I2C používa pre komunikáciu iba dva signálové vodiče: SDA a SCL. Fungujú tak, že odosielajú dáta do pripojenie SDA, pričom rýchlosť je riadená pomocou pinu SCL.
Táto zbernica beží celá na topológii master / slave:
- Master je vždy iba jedno zariadenie. Je to teda to hlavné zariadenie, ktoré určuje, aké zariadenie slave bude vysielať dáta.
- Slave zariadenie môže byť viac. To znamená, že
môžeme hovoriť s viacerými zariadeniami na jednom pripojenie I2C, pretože
každé zariadenie je jedinečné a zistiteľné užívateľom a počítačom
pomocou príkazov Linuxu ako je
i2cdetect
.
I2C je rýchly a jednoduchý spôsob, ako do projektu pridať mnoho rôznych komponentov ako sú LCD / OLED obrazovky, teplotné senzory a analógovo-digitálne prevodníky pre použitie s fotorezistory atď. Aj keď je ich pochopenie trochu zložitejšie než štandardných pinov GPIO, vedomosti získané z učenia I2C vám dobre poslúži. Rovnako tak pochopíte, ako pripojiť senzory s vyššou presnosťou pre použitie v teréne.
Spi
SPI (skratka z Serial Peripheral Interface Bus, česky zbernica sériového periférneho rozhrania). Ide o ďalší protokol pre pripojenie kompatibilných zariadení k vášmu Raspberry Pi. Podobá sa I2C v tom, že medzi Raspberry Pi a pripojenými zariadeniami existuje vzťah master - slave.
SPI sa zvyčajne používa na odosielanie dát na krátke vzdialenosti medzi
mikrokontrolérmi a komponentmi, ako sú posuvné registre, senzory a dokonca aj
SD karta. Dáta sú synchronizované pomocou hodín (SCLK
na
GPIO11
) z hlavnej jednotky (naše Pi) a dáta odosielané z Pi do
našej komponenty SPI pomocou kolíka MOSI
(GPIO
GPIO10
). MOSI
označuje Master Out Slave In (Master je
vždy výstup, Slave vstup). Ak komponent potrebuje odpovedať na naše Pi,
odošle dáta späť pomocou MISO
pinu (GPIO9
), čo je
skratka pre Master In Slave Out.
UART
UART (univerzálny asynchrónny prijímač / vysielač) je sériovo používaný pre komunikáciu s inými zariadeniami. Bežne známy ako "Serial", piny UART poskytujú napr. Prihlásenie cmd / terminálu pre bezkontaktné nastavenie, čo znamená pripojenie k Pi bez klávesnice a myši. Jednoduchší spôsob je ten, ktorý sme si ukázali v minulej lekcii.
Ďalšie označenia pinov
Môžeme sa stretnúť s ďalšími skratkami označujúcou kam čo zapojiť.
DNC
DNC (Do Not Connect) je skratka pre "nepripojujte", to je celkom samo-vysvetľujúce.
GND
GND sú piny, ktoré používame na uzemnenie. Nezáleží na tom, ktorý pin použijeme, pretože sú všetky pripojené k rovnakej krajine. GND je miesto, odkiaľ možno merať všetky napätia, a tiež uzatvára elektrický obvod.
Pri vytváraní obvodov je vždy múdre najprv pripojiť GND pred použitím akéhokoľvek napájania, pretože to zabráni zničeniu citlivých súčiastok.
Príklad
Keď teda budeme chcieť zapojiť a ovládať LED diódu (u diódy musíme
jednu nohu v obvode dať do plus a druhú do mínus), anódu (spravidla tá
dlhšia nožička) zapojíme do ľubovoľného GPIO portu katódu do
GND
. Týmto zapojením sa nám vytvorí jednoduchý obvod, ktorý
budeme môcť ovládať pomocou Raspberry a treba Pythone. Ako na to si
ukážeme už nabudúce.
5V
a 3V
Tieto piny používame k napájaniu daným napätím. Nedajú sa ovládať, jednoducho sú stále pod daným napätím. Používajú sa štandardne, keď nepotrebujeme pin ovládať, ale potrebujeme len jeho napätie, alebo prísun napätia ovládame inak, napríklad pomocou bridge. Do týchto pinov dá zapojiť väčšinu súčiastok.
V budúcej lekcii, Raspberry Pi - Blikanie diódy , si vytvoríme jednoduchý obvod s diódou.