GPIO

Routerstation Pro

Zanim zaczniemy zabawę należy pamiętać ze maksymalne obciążenie prądowe wynosi 12mA.

Płyta Routerstation

Dostępne linie GPIO(złącze J5):

PCBGPIO w sysfs
GP1 GPIO0
GP2 GPIO1
GP3 GPIO3
GP4 GPIO4
GP5 GPIO5
GP6 GPIO6
GP7 GPIO7

Rezystor podciągający(10kom) (J33) - zwarcie 1 i 2 daje:

PCBFunkcja
GP1 PULL DOWN
GP2 PULL DOWN
GP3 PULL DOWN
GP4 PULL DOWN
GP5 PULL UP
GP6 PULL UP
GP7 PULL UP

PULL UP - zwarty do +5V

PULL DOWN - zwarty do masy

W celu używania GPIO należy zainstalować moduł:

opkg update
opkg install kmod-gpio-dev

Włączenie jakiegoś GPIO, np. GPIO0 („0” wskazuje pin GPIO, od 0 do 7, z pominięciem „2”):

echo 0 > /sys/class/gpio/export

Wyłączenie pinu GPIO (oznaczenie j.w.):

echo 0 > /sys/class/gpio/unexport

Włączenie GPIO spowoduje powstanie katalogu /sys/class/gpio/gpio0

Teraz możemy ustawić pin jako wejście(in - domyślnie) lub wyjście(out)

echo out > /sys/class/gpio/gpio0/direction

oraz wpisać stan logiczny „1” lub „0” (domyślny stan po inicjacji GPIO wynosi „1”)

echo 0 > /sys/class/gpio/gpio0/value

Przykłady zastosowań

Hello World

Prosty schemat. Dioda LED podłączona katodą(część ścięta) do masy oraz anodą do GP0. WAŻNE! Należy zastosować rezystor o wartość 200-220om, po to by zmniejszyć napięcie do wymaganego dla diody LED oraz zapobieżeniu zwarciu. Tyle „sprzętu”, programowo wygląda to tak:

echo 0 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio0/direction
echo 1 > /sys/class/gpio/gpio0/value
(dioda się zapala)
echo 0 > /sys/class/gpio/gpio0/value
(dioda gaśnie)

Push the Button

Wykorzystamy tutaj 3 piny GPIO. GP0 daje sygnał na diode, GP1 jako zasilanie 5V(brak takowego na płycie, może być zewnętrzne) oraz GP7 jak wejście. W przypadku GP7 włączamy wewnętrzny PULL UP(zwieramy piny na J5).

#/bin/sh
# wlaczamy GPIO
echo 0 > /sys/class/gpio/export
echo 1 > /sys/class/gpio/export
echo 7 > /sys/class/gpio/export
# funkcje
echo out > /sys/class/gpio/gpio0/direction
echo out > /sys/class/gpio/gpio1/direction
echo in > /sys/class/gpio/gpio7/direction
while true; do
val=`cat /sys/class/gpio/gpio7/value`
if [ $val = '0' ]; then
 echo "swieci-wysoki";
 echo 1 > /sys/class/gpio/gpio0/value
fi
if [ $val = '1' ]; then
 echo "nie swieci-niski";
 echo 0 > /sys/class/gpio/gpio0/value
fi
done

Zwieranie przycisku powoduje zapalanie diody LED. Poniżej film wideo z działania układu i programu. http://vimeo.com/15812291

Czujnik temperatury

Baza wiedzy na stronie digi-led.pl

Literatura:

[1] http://www.ubnt.com/wiki/RouterStation_OpenWRT_SW_Setup_Guide
[2] http://www.ubnt.com/wiki/RouterStation_Pro
[3] http://www.ubnt.com/forum/showthread.php?p=118162
[4] http://www.ladyada.net/learn/arduino/lesson5.html
[5] http://www.elektroda.pl/rtvforum/topic441865.html
[6] http://www.kpsec.freeuk.com/components/led.htm

technikalia/gpio.txt · ostatnio zmienione: 2010/10/23 18:44 przez arteq
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0
Profesjonalny Hosting