Obsługa GPIO w OpenWrt
Ostatnia zmiana: 2023-09-05 18:12
GPIO (General Purpose Input/Output) są uniwersalnymi liniami wyprowadzonymi z układu SoC, które zwykle wykorzystywane są przez system operacyjny do sterowania innymi komponentami systemu. Może to być przełącznik, może to być realizacja magistrali np. i2c lub 1-wire, SDMOD albo do innych celów. Takie linie są zwykle programowalne i można jest ustawić jako wejście lub wyjście. Lini jest zwykle kilkadziesiąt, część z nich zwykle nie jest wykorzystywana i można je wykorzystać do własnych celów.
Jeżeli istnieje katalog
/sys/class/gpio to najprawdopodobniej możemy programowo sterować liniami z wykorzystaniem mechanizmu tzw. "sysfs".
Włączenie obsługi GPIO
Aby sterować linią należy je najpierw udostępnić do przestrzeni użytkownika ("wyeksportować"). Robi się to podając odpowiedni numer GPIO do pliku
export w w/w katalogu (w tym przykładzie gpio o numerze 2):
# echo "2" > /sys/class/gpio/export
Powinien pojawić się katalog o nazwie /sys/class/gpio/gpio2. Jeżeli takiego nie ma - najprawdopodobniej GPIO o numerze 2 jest wykorzystywane przez system i nie można z niego skorzystać.
Linia wyjściowa
Linię można zdefiniować jako wyjście poleceniem:
# echo out > /sys/class/gpio/gpio2/direction
Linię zdefiniowaną jako
wyjście można sterować ustawiając odpowiednią wartość w pliku
value
# echo 1 > /sys/class/gpio/gpio2/value
# echo 0 > /sys/class/gpio/gpio2/value
Jeżeli podłączymy pod tą linię np. diodę LED lub przekaźnik to można tak dane urządzenie włączyć i wyłączyć.
Należy pamiętać że włączona linia ma napięcie zwykle 3.3V (takie jak router), oraz ma niewielką obciążalność prądową (rzędu kilku - kilkunastu mA).
Linia wejściowa
Linię można zdefiniować jako wejście poleceniem:
# echo in > /sys/class/gpio/gpio2/direction
Stan linii zdefiniowanej jako
wejście można odczytać tak samo z pliku
value
# cat /sys/class/gpio/gpio2/value
Jeżeli podłączymy pod tą linię np. przycisk i odpowiednie np. podciągnięcie do VCC, to naciskając go można odczytać jego stan (załączony lub nie).
Zwolnienie linii
Jeżeli nie używamy już linii można "oddać" ją systemowi poleceniem
# echo "2" > /sys/class/gpio/unexport
Patrz także
GPIO w zastosowaniachZobacz także obsługę
przycisków oraz
LED - one także są sterowane przez GPIO!