
IoT prakticky - programovanie Raspberry Pi v Pythone, 2 časť: vstupy a výstupy
Tento mini seriál je zameraný na obsluhu hardvéru pripojeného na dosku Raspberry PI. V praktických príkladoch ukážeme využitie GPIO portov ako výstupných, v najjednoduchšom príklade na blikanie LED diódou, aj ako portov vstupných napríklad na zistenie udalosti zatlačenia tlačidla.
Príklady sú v vo videu
Pripomíname, že na Raspberry je potrebné nainštalovať len operačný systém Raspbian. Raspbian v najnovšej verzii obsahuje nielen interpreter Pythonu, ale aj populárne vývojové prostredia Mu a Thonny Python IDE. Len tak mimochodom „Pi“ v označení tejto mikropočítačovej dosky znamená, že doska bola od začiatku vyvíjaná s tým, že aplikácie pre ňu sa budú písať hlavne v Pythone. S implementáciou interpretera nie je problém, už prvé verzie Raspberry Pi disponovali 256 MB RAM, nové modely majú podstatne viac pamäti Raspberry 3 B+ má 1 GB a Raspberry Pi 4 podľa verzie ešte viac.. Operačný systém vrátane interpretera je umiestnený na pamäťovej karte, pričom ako rozumné minimum kapacity pre poslednú verziu operačného systému Raspbian sa uvádza 16 GB
GPIO a špeciálne porty
Rozširujúce moduly sa pripájajú cez 40-pinový GPIO (General Purpose Input/Output) konektor. Obsahuje 26 vstupno – výstupných portov, pričom niektoré z nich sa dajú prekonfigurovať tak aby fungovali ako špeciálne porty (SPI, I2C, UART RS232...). Na konektore sú vyvedené aj napájacie napätia 3,3 a 5 V.
GPIO porty môžu byť vstupné alebo výstupné, t.j. buď môžu snímať nejaký stav, napríklad z kontaktného spínača, či fotobunky, alebo je možné pomocou týchto portov niečo ovládať, napríklad rozsvietiť LED, prípadne generovať impulzy pre krokový motor a podobne. S výnimkou LED budete zariadenia ovládať cez vhodné výkonové prispôsobenie, napríklad relé, či polovodičové spínacie prvky. Dôležité upozornenie: na vstupné porty môžete priviesť maximálne napätie 3,3 V. Ak na ne privediete výstup z TTL logiky, ktorá používa napätie 5V, určite ich odpálite.Opačne nie je problém, ak privediete 3,3 V výstup na vstup TTL bude to fungovať, pretože toto napätie je spoľahlivo identifikované ako logická jednotka. Mnohé piny majú alternatívne funkcie signálov komunikačných rozhraní I2C, SPI (Serial Peripheral Interface) a UART. Vývojová doska Raspberry PI má jedno obmedzenie. Nemá analógové vstupy a výstupy, ktoré sú pre niektoré scenáre nasadenia kľúčové, nakoľko väčšina veličín charakterizujúca reálny svet, napríklad teplota, či intenzita osvetlenia je analógová. Našťastie sa spomínané obmedzenie dá jednoducho a lacno prekonať. Buď použijete niektorú rozširujúcu dosku s analógovo digitálnym prevodníkom, napríklad Explorer HAT, prípadne prevodník pre inú platformu, napríklad Arduino, alebo si môžete kvalitný AD prevodník postaviť sami napríklad na univerzálnej prepojovacej doske
Pripojenie hardvéru k doske Raspberry Pi popíšeme tak, aby ho zvládli aj úplní začiatočníci. Preto najskôr vysvetlíme ako funguje univerzálna prepojovacia doska. Má vo vnútri prepojené pre piny a drôtiky po jednotlivých stĺpcoch. Po okrajoch sú spravidla línie pinov s napájacím napätím a zemou, čiže GND.
Ku konektoru dosky Raspberry sa pripojíte buď drôtikmi, ktoré majú na jednom konci dutinky vhodné na nasunutie na piny konektora a na druhej strane piny, ktoré sa zasunú do prepojovacieho poľa. Efektnejšie riešenie je prípravok T-Cobbler Breakout for Raspberry Pi, ktorý sa zasunie do prepojovacieho poľa a káblom sa spojí s Raspberry doskou.
Ukážeme aj dva jednoduché príklady. Prvým bude jednoduchá aplikácia, ktorá bude blikať LED diódami pripojenými na porty GPIO 2 a GPIO3. Tieto porty môžete použiť ako univerzálne vstupy a výstupy v prípade ak ste v konfigurácii operačného systému Raspbian nepovolili kominikáciu cez I2C. Implicitne je zakázaná. Diódy sú na piny portu pripojené cez obmedzovacie rezistory 330 ohmov. Ak nastavíte na výstupnom porte hodnotu HIGH, čiže logickú jednotku bude na porte nastavené napätie približne 3.3 V, v opačnom prípade pri nastavenej hodnote LOW bude napätie na pine blízke 0V. Maximálny prúd, ktorý môže tiecť cez LED diódu je 10 – 20 mA, preto ak na pin pripájate LED diódu je potrebné do série s diódou zapojiť obmedzovací rezistor, pre 3.3 V logiku môžete použiť rezistor s odporom 220 - 330 Ohm.
Príkazom import RPi.GPIO as GPIO importuje knižnica umožňujúca ovládať vstupno – výstupné piny dosky Raspberry Pi.
Tento kód stačí napísať, alebo skopírovať do editora Mu, ktorý nájdete v používateľskom rozhraní operačného systému Raspbian v hlavnom menu, v položke Programovanie.
Príkazom
nastavíte aké označenie portov budete používať, buď Broadcom (BCM), čiže porty budú označené rovnako ako na SOC, alebo BOARD, kedy budú porty označené tak ako sú na doske. Port GPIO2 je na pine 3 a port GPIO3 na pine 5.
Takže pri značení portov ako sú na pinoch konektora by bol kód v tvare
Vo všetkých príkladoch seriálu budeme používať konvenciu Broadcom (BCM)
V druhom príklade budeme najjednoduchším spôsobom zisťovať, či nebolo zatlačené tlačidlo. Test bude v hlavnej slučke a pre jednoduchosť nebudeme ošetrovať ani mechanické zákmity kontaktov tlačidla. V reálnej aplikácii by ste samozrejme zákmity ošetrili a kód akcie, ktorú je potrebné vykonať po zatlačení tlačidla by ste dali do procedúry na obsluhu udalosti privedenia napäťovej úrovne na príslušný port, v tomto príklade na GPIO 2
Ostatné časti seriálu:
Programovanie Raspberry Pi v Pythone 1: Konfigurácia https://www.pcrevue.sk/a/IoT-prakticky---programovanie-Raspberry-Pi-v-Pythone---1-cast--konfiguracia
Programovanie Raspberry Pi v Pythone 2: Vstupy a výstupyhttps://www.pcrevue.sk/a/IoT-prakticky---programovanie-Raspberry-Pi-v-Pythone---2-cast--vstupy-a-vystupy
Programovanie Raspberry Pi v Pythone 3: PWM výstup a ovládanie servomotorov https://www.pcrevue.sk/a/IoT-prakticky---programovanie-Raspberry-Pi-v-Pythone-3--PWM-vystup-a-ovladanie-servomotorov
Zobrazit Galériu