OpenWrt - GPIO
Obsługa GPIO w OpenWrt
Ostatnia zmiana: 2013-05-02 13:48

1. Włączenie obsługi GPIO
2. Linia wyjściowa
3. Linia wejściowa
4. Zwolnienie linii


GPIO (General Purpose Input/Output) są uniwersalnymi liniami wyprowadzonymi z procesora, 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 od innych celów. Takie linie są zwykle programowalne i można jest ustawić jako wejście lub wyjście. Lini jest zwykle 8 do 22, część jest całkowicie wolna i można je wykorzystać do własnych celów.

Najważniejsze aby system miał wkompilowaną obsługę GPIO. Jeżeli istnieje katalog /sys/class/gpio to 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, to naciskając do można odczytać jego stan (włączone 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 zastosowaniach

Zobacz także obsługę przycisków oraz LED - one także są sterowane przez GPIO!