Raspberry GPIO

Aus Wiki
Zur Navigation springen Zur Suche springen

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.


Pin Nummerierung

Raspberry Pi Rev1: Raspberry-GPIO-Rev1.png


Raspberry Pi Rev2: Raspberry-GPIO-Rev2.png


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