Protokol GPIO
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
Protokol podporuje komunikáciu cez vstupy a výstupy počítačov Raspberry PI a postavených na základe RPI Compute Module. V súčasnosti sú podporené:
- Raspberry PI (verzia 2 a 3) s na základe knižnice pigpio - komunikácia cez GPIO (General Purpose I/O) piny
- Techbase NPE X500 M3 (priemyselný počítač na DIN lištu postavený na RPI Compute Module 3 s priemyselnými vstupmi a výstupmi)
Komunikácia bola otestovaná voči Raspberry PI (verzia 3) a NPE X500-M3-MAX-3G.
Pre Raspberry PI protokol podporuje čítanie hodnôt digitálnych vstupov (okamžité hodnoty, meranie zmien signálu s voliteľným časovým filtrom) a nastavenie digitálnych výstupov na konštantnú hodnotu alebo ako pulzne-modulovaný výstup (pulse-width modulation PWM).
Pre NPE X500 protokol podporuje čítanie hodnôt digitálnych a analógových vstupov a stav užívateľského tlačidla, nastavenie hodnôt digitálnych výstupov, reléových výstupov, zasvietenie užívateľských LED diód a spustenie bzučiaka.
Poznámka: na Raspberry PI musí byť KOM proces spustený pod užívateľom root, aby mal prístup ku GPIO. Je to možné dosiahnuť nastavením setuid na binárku kom-u. Pod prihláseným užívateľom pi to spravíme následne:
cd /opt/d2000/bin
sudo chown root kom
sudo chmod 4755 kom
Poznámka: na NPE X500 musí byť KOM proces spustený pod užívateľom root, aby mal prístup ku GPIO (postup viď predchádzajúca poznámka pre Raspberry PI). Alternatívou je pridanie užívateľa d2000 do skupín a nastavenie prístupových práv. Pod prihláseným užívateľom root to spravíme následne:
sudo usermod -a -G gpio d2000
Pre prístup k sériovým portom aj:
sudo usermod -a -G dialout d2000
Aby mohol užívateľ d2000 pristupovať k LED a bzučiaku, je nutné pri každom štarte počítača nastaviť práva na príslušné súbory. Vytvorte v adresári /etc/init.d súbor d2000init s obsahom:
#!/bin/bash
### BEGIN INIT INFO
# Provides: script
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: D2000Kom
# Description: Support for D2000 KOM (work with leds/buzzer)
### END INIT INFO
DESC="Set permissions for LED/BUZZER for D2000 KOM"
chmod -R o+w /sys/class/leds/LED1
chmod -R o+w /sys/class/leds/LED2
chmod -R o+w /sys/class/leds/BUZZER
Potom spustite:
chmod 755 /etc/init.d/d2000init
update-rc.d d2000init defaults
Konfigurácia komunikačnej linky
- Kategória komunikačnej linky: API
- Štandardne stačí pre jedno zariadenie nakonfigurovať jednu linku a na nej jednu stanica. V prípade potreby vypínania komunikácie s vybranými vstupmi/výstupmi môže byť staníc na linke aj niekoľko. Kvôli rozloženiu záťaže alebo kvôli rýchlemu čítaniu digitálnych vstupov je možné nakonfigurovať aj niekoľko liniek a na každej jednu alebo viacero komunikačných staníc.
Parametre protokolu linky
Dialóg konfigurácia linky - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu linky:
Tab. č. 1
Plný názov | Popis | Jednotka / rozmer | Implicitná hodnota |
---|---|---|---|
Device Type | Typ zariadenia. V súčasnosti sú podporované:
| - | Raspberry PI |
Library Name | Názov knižnice s komunikačnými funkciami pre konkrétne zariadenie. Používané hodnoty sú:
| - | - |
Read Delay Ms | Oneskorenie po jednom cykle prečítania hodnôt všetkých meraných bodov. Pomocou tohto paramatra je možné riadiť frekvenciu čítania hodnôt jemnejšie, ako pomocou parametrov pollingu v konfigurácii časových parametrov stanice. | ms | 1 |
Konfigurácia komunikačnej stanice
- Komunikačný protokol: GPIO Protocol.
- Adresa stanice: nezadáva sa
Konfigurácia meraných bodov
Možné typy hodnôt bodov: Ai, Ao, Ci, Co, Di, Do.
Formát adresy meraného bodu závisí od typu zariadenia.
Adresy meraných bodov pre Raspberry PI
V nasledujúcej tabuľke id udáva číslo pinu v číslovaní BCM (Broadcom).
Obrázok prevzatý z http://pinout.xyz zobrazuje BCM číslovanie pinov na GPIO konektore:
Adresa | Popis | Typ bodu | Príklady |
---|---|---|---|
DI,id | GPIO pin bude nakonfigurovaný ako digitálny vstup. Ak bude naň privedené napätie 3.3V, hodnota vstupu bude 1. Ak bude naň privedené napätie 0V (zem), hodnota vstupu bude 0. Varianty DI_UP a DI_DOWN konfigurujú vnútorné pull-up resp. pull-down rezistory, takže na vstup je cez rezistor pripojené napätie 3.3V (DI_UP) alebo zem (DI_DOWN), takže aj bez pripojenia externého napätia je vstup v definovanom stave. Varianta DI konfiguruje pin tak, že pull-up/pull-down odpory sú odpojené. Pozn: knižnica pigpio podporuje čítanie z GPIO pinov 0-53. | Di, Ci, Ai | DI,25 DI_UP,24 |
DO,id | GPIO pin bude nakonfigurovaný ako digitálny výstup. Ak bude doň zapísaná hodnota 1, na výstupe bude napätie 3.3V. Ak bude doň zapísaná hodnota 0, na výstupe bude napätie 0V (zem). | Dout, Co, Ao | DO,24 |
TRIGGER_TOON,id[,filter] TRIGGER_TOON_UP,id[,filter] TRIGGER_TOON_DOWN,id[,filter] TRIGGER_TOOFF,id[,filter] TRIGGER_TOOFF_UP,id[,filter] TRIGGER_TOOFF_DOWN,id[,filter] TRIGGER,id[,filter] TRIGGER_UP,id[,filter] TRIGGER_DOWN,id[,filter] | GPIO pin bude nakonfigurovaný ako počítadlo udalostí s voliteľným filtrom. Počítadlo vie registrovať vzostupné hrany signálu 0V → 3.3V (TOON), zostupné hrany 3.3V → 0V (TOOFF) a ľubovolné zmeny signálu (bez TOON/TOOFF). Varianty s UP/DOWN slúžia, podobne ako v prípade DI adries, na konfigurovanie vnútorných pull-up resp. pull-down rezistorov. Parameter filter slúži na nastavenie časového filtra (v mikrosekundách), ktorý slúži na odfiltrovanie zakmitania (pokiaľ je medzi udalosťami menší časový odstup ako filter, druhá udalosť sa neberie do úvahy). Ak nie je zadaný, berú sa do úvahy všetky udalosti. Hodnota meraného bodu je rovná počtu registrovaných udalostí, pričom maximálna hodnota je 2^31-1 t.j. 2147483647 a následne počítadlo ide znovu od 0. Pozn: knižnica pigpio používa štandardne vzorkovanie vstupu s periódou 5 mikrosekúnd, t.j. s frekvenciou 200 kHz. | Ci, Ai | TRIGGER,24 TRIGGER,25,1000 TRIGGER_UP,12 TRIGGER_TOON,12 |
PWM,id | GPIO pin bude nakonfigurovaný ako PWM (pulse width modulation) výstup. Následne je doň možné zapisovať hodnoty 0-255 riadiace šírku impulzu od úplne vypnutého až po úplne zapnutý. Pozn: knižnica pigpio podporuje PWM prácu s GPIO pinmi 0-31. | Dout, Co, Ao | PWM,12 |
REVISON | Hodnota revízie hardvéru (číslo z riadku "Revision" zo súboru /proc/cpuinfo. Napr. pre RPI 3 je v tomto súbore riadok | Ci | REVISON |
Adresy meraných bodov pre NPE X500
V nasledujúcej tabuľke id udáva číslo vstupu/výstupu (napr. DI, DO, AO). Počet vstupov a výstupov závisí od konkrétneho modelu. Poznámky hovoria o modele NPE X500-M3-MAX-3G, ktorý bol testovaný.
Pozn 1: výstupné body, ktorých adresy obsahujú _BUF, používajú buffrovaný zápis. To umožňuje hodnoty takýchto objektov nielen zapisovať, aj vyčítavať, čo môže byť užitočné napr. po štarte KOM procesu.
Pozn 2: pri testovanom modele trvalo čítanie digitálneho vstupu menej ako 1ms, čítanie analógového vstupu cca 20 ms.
Adresa | Popis | Typ bodu | Príklady |
---|---|---|---|
DI,id | Digitálny vstup (DI) Pozn: testované zariadenie malo vstupy DI1-DI4. Hodnota 0 znamená, že vstup je pripojený k zemi, hodnota 1 znamená, že vstup má od zeme odpojený a má napätie 3.3 V dodávané zariadením. | Di, Ci, Ai | DI,1 DI,2 |
DO,id | Digitálny výstup (DO). Ak je buffrovaný (DO_BUFF), hodnota je aj načítavaná (po štarte aj periodicky). | Dout, Co, Ao | DO,1 |
DIO,id DIO_BUF,id | Digitálny vstup/výstup. Podľa typu bodu je GPIO port nakonfigurovaný ako vstupný (Di, Ci, Ai) alebo výstupný (Dout, Co, Ao). | Vstup: Di, Ci, Ai Výstup: Dout, Co, Ao | DIO,2 DIO_BUF,3 |
RELAY,id RELAY_BUF,id | Reléový výstup. Ak je buffrovaný (RELAY_BUFF), hodnota je aj načítavaná (po štarte aj periodicky). | Dout, Co, Ao | RELAY,1 RELAY_BUF,2 |
AI,id | Analógový vstup (AI). | Ci, Ai | AI,1 |
LED,id LED_BUF,id | LED výstup. Ak je buffrovaný (LED_BUFF), hodnota je aj načítavaná (po štarte aj periodicky). Pozn: testované zariadenie malo dve LED diódy (červená LED,1 a zelená LED,2), ktoré sa rozsvietili po zapísaní hodnoty 1 a zhasli po zapísaní hodnoty 0. | Dout, Co, Ao | LED,1 LED_BUF,2 |
BUZZER BUZZER_BUF | Bzučiak. Ak je buffrovaný (BUZZER_BUFF), stav bzučiaka je aj načítavaný (po štarte aj periodicky). Pozn: testované zariadenie malo bzučiak, ktorý začal vydávať tón po zapísaní hodnoty 1 a stíchol po zapísaní hodnoty 0. | Dout, Co, Ao | BUZZER BUZZER_BUF |
BUTTON BUTTON_BUF | Stav užívateľského tlačidla (user button). Pozn: testované zariadenie malo tlačidlo, ktoré sa chovalo ako DI - štandardne malo hodnotu 1 a v stlačenom stave malo hodnotu 0. | Di, Ci, Ai | BUTTON |
Literatúra
Blog
O protokole GPIO si môžete prečítať blog Komunikácia - GPIO protokol.
Zmeny a úpravy
Revízie dokumentu
- Ver. 1.0 - 30. august 2018 - Vytvorenie dokumentu.
Súvisiace stránky: