Raspberry GPIO: Unterschied zwischen den Versionen
Erich (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „==Allgemein== Der Zugriff auf die Aus- und Eingänge unter Linux allgemein erfolgt via GPIO Filesystem unter /sys/class/gpio/. Dies gilt für sämtliche Plattform…“) |
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
==Allgemein== | ==Allgemein== | ||
Der Zugriff auf die Aus- und Eingänge unter Linux allgemein erfolgt via GPIO Filesystem unter /sys/class/gpio/. Dies gilt für sämtliche Plattformen, für die Linux einen entsprechenden GPIO Kernel Treiber bereitstellt. | Der Zugriff auf die Aus- und Eingänge unter Linux allgemein erfolgt via GPIO Filesystem unter /sys/class/gpio/. Dies gilt für sämtliche Plattformen, für die Linux einen entsprechenden GPIO Kernel Treiber bereitstellt, nicht nur für den Raspberry Pi. | ||
Neben dem Zugriff auf die GPIO's via GPIO Filesystem besteht auch die Möglichkeit, diese "direkt" anzusprechen. Während der Zugriff via Filesystem für Scripte relativ nützlich ist, ist dies unter Programmiersprachen wie C, C++, Python, Perl usw relativ umständlich. Andererseits ist das direkte ansprechen der GPIO relativ umständlich und fehleranfällig. Deshalb haben sich mehrere Frameworks etabliert, die einem Programmierer hier die meiste Arbeit abnhemen und zuverlässig funktionieren. Hier soll WiringPI als Vertreter dieser Gattung beschrieben werden. | |||
==Export eines Pins== | |||
==Zugriff via Filesystem== | |||
===Export eines Pins=== | |||
Damit ein Pin via GPIO Filesystem ansprechbar ist, muss dieser erst exportiert werden. Z.B. Pin 17 beim Raspberry PI: | Damit ein Pin via GPIO Filesystem ansprechbar ist, muss dieser erst exportiert werden. Z.B. Pin 17 beim Raspberry PI: | ||
echo "17" > /sys/class/gpio/export | echo "17" > /sys/class/gpio/export | ||
Zeile 10: | Zeile 13: | ||
==Pin als Ausgang== | ===Pin als Ausgang=== | ||
Über das File "direction" wird festgelegt, ob der jeweilige Pin als Ausgang oder Eingang verwendet werden soll. Als Ausgang wird er folgendermaßen definiert: | Über das File "direction" wird festgelegt, ob der jeweilige Pin als Ausgang oder Eingang verwendet werden soll. Als Ausgang wird er folgendermaßen definiert: | ||
echo "out" > /sys/class/gpio/gpio17/direction | echo "out" > /sys/class/gpio/gpio17/direction | ||
Zeile 19: | Zeile 22: | ||
==Pin als Eingang== | ===Pin als Eingang=== | ||
echo "in" > /sys/class/gpio/gpio17/direction | echo "in" > /sys/class/gpio/gpio17/direction | ||
Der Zustand des Pins kann mittels "value" File abgefragt werden: | Der Zustand des Pins kann mittels "value" File abgefragt werden: | ||
Zeile 25: | Zeile 28: | ||
==Unexport== | ===Unexport=== | ||
Wenn der Zugriff auf einen Pin nicht mehr erforderlich ist, kann ein Pin wieder deaktiviert werden: | Wenn der Zugriff auf einen Pin nicht mehr erforderlich ist, kann ein Pin wieder deaktiviert werden: | ||
echo "17" > /sys/class/gpio/unexport | echo "17" > /sys/class/gpio/unexport | ||
==WiringPi== | |||
===Installation=== | |||
apt-get install build-essential git-core | |||
cd /usr/local/src | |||
git clone git://git.drogon.net/wiringPi | |||
cd wiringPi | |||
./build | |||
===GPIO Tool=== | |||
Neben zahlreichen Libraries zur Programmierung der GPIO's wurde auch ein Tool namens gpio installiert, das auf der Kommandozeile bequemen Zugriff auf die GPIO's erlaubt. | |||
Export des Pin 17 als Ausgang, um diesen zu verwenden: | |||
gpio export 17 out | |||
Ausgang setzen bzw. rücksetzen: | |||
gpio write 17 1 | |||
gpio write 17 0 | |||
Export des Pin 16 als Eingang, um diesen zu verwenden: | |||
gpio export 16 in | |||
Pin Wert anzeigen | |||
gpio read 16 | |||
Anzeige aller exportierter Pins und deren Wert: | |||
gpio exports |
Version vom 30. März 2014, 08:11 Uhr
Allgemein
Der Zugriff auf die Aus- und Eingänge unter Linux allgemein erfolgt via GPIO Filesystem unter /sys/class/gpio/. Dies gilt für sämtliche Plattformen, für die Linux einen entsprechenden GPIO Kernel Treiber bereitstellt, nicht nur für den Raspberry Pi.
Neben dem Zugriff auf die GPIO's via GPIO Filesystem besteht auch die Möglichkeit, diese "direkt" anzusprechen. Während der Zugriff via Filesystem für Scripte relativ nützlich ist, ist dies unter Programmiersprachen wie C, C++, Python, Perl usw relativ umständlich. Andererseits ist das direkte ansprechen der GPIO relativ umständlich und fehleranfällig. Deshalb haben sich mehrere Frameworks etabliert, die einem Programmierer hier die meiste Arbeit abnhemen und zuverlässig funktionieren. Hier soll WiringPI als Vertreter dieser Gattung beschrieben werden.
Zugriff via Filesystem
Export eines Pins
Damit ein Pin via GPIO Filesystem ansprechbar ist, muss dieser erst exportiert werden. Z.B. Pin 17 beim Raspberry PI:
echo "17" > /sys/class/gpio/export
Dadurch wird ein Directory mit Namen sys/class/gpio/gpio17 angelegt (Symlink), das folgende Dateien und Links aufweist:
active_low device direction edge power subsystem uevent value
Pin als Ausgang
Über das File "direction" wird festgelegt, ob der jeweilige Pin als Ausgang oder Eingang verwendet werden soll. Als Ausgang wird er folgendermaßen definiert:
echo "out" > /sys/class/gpio/gpio17/direction
Setzen des Zustands des Pins erfolgt via "value" file:
echo "1" > /sys/class/gpio/gpio17/value echo "0" > /sys/class/gpio/gpio17/value
um den Pin entweder auf HIGH bzw. LOW zu setzen
Pin als Eingang
echo "in" > /sys/class/gpio/gpio17/direction
Der Zustand des Pins kann mittels "value" File abgefragt werden:
cat /sys/class/gpio/gpio17/value
Unexport
Wenn der Zugriff auf einen Pin nicht mehr erforderlich ist, kann ein Pin wieder deaktiviert werden:
echo "17" > /sys/class/gpio/unexport
WiringPi
Installation
apt-get install build-essential git-core cd /usr/local/src git clone git://git.drogon.net/wiringPi cd wiringPi ./build
GPIO Tool
Neben zahlreichen Libraries zur Programmierung der GPIO's wurde auch ein Tool namens gpio installiert, das auf der Kommandozeile bequemen Zugriff auf die GPIO's erlaubt.
Export des Pin 17 als Ausgang, um diesen zu verwenden:
gpio export 17 out
Ausgang setzen bzw. rücksetzen:
gpio write 17 1 gpio write 17 0
Export des Pin 16 als Eingang, um diesen zu verwenden:
gpio export 16 in
Pin Wert anzeigen
gpio read 16
Anzeige aller exportierter Pins und deren Wert:
gpio exports