Protokol GPIO
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
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, 3 a 4) 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
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 |
Komunikačný protokol: GPIO Protocol.
Adresa stanice: nezadáva sa
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. | Di, Ci, Ai | DI,25 |
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] | 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). | Ci, Ai | TRIGGER,24 |
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) | Di, Ci, Ai | DI,1 |
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 | 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 | DIO,2 |
RELAY,id | Reléový výstup. Ak je buffrovaný (RELAY_BUFF), hodnota je aj načítavaná (po štarte aj periodicky). | Dout, Co, Ao | RELAY,1 |
AI,id | Analógový vstup (AI). | Ci, Ai | AI,1 |
LED,id | LED výstup. Ak je buffrovaný (LED_BUFF), hodnota je aj načítavaná (po štarte aj periodicky). | Dout, Co, Ao | LED,1 |
BUZZER | Bzučiak. Ak je buffrovaný (BUZZER_BUFF), stav bzučiaka je aj načítavaný (po štarte aj periodicky). | Dout, Co, Ao | BUZZER |
BUTTON | Stav užívateľského tlačidla (user button). | Di, Ci, Ai | BUTTON |
Blog
O protokole GPIO si môžete prečítať blog Komunikácia - GPIO protokol.
Ver. 1.0 - 30. august 2018 - Vytvorenie dokumentu.
Súvisiace stránky: