wiringPi ist ein Programm, dass es ermöglicht auf einfache Art und Weise die GPIOs des Raspberry Pi zu steuern. Als Programmbiblothek kann es mit den verschiedensten Programmiersprachen wie C, C++, Python, Java und PHP eingebunden werden. Zusätzlich kann man mit dem mitgeleiferten gpioutility mit kurzen Befehlen die GPIOs aus der Konsole heraus ansteuern, was ein Testen erheblich vereinfacht. Es gibt grundsätzlich zwei Möglichkeiten wiringPi zu installieren. Zum einen ist das die Installation über das so genannte Versionsverwaltungstool GIT, zum anderen über den Quellcode. Hört sich kompliziert an, ist es aber nicht.


GIT

Für die erste Möglichkeit müssen wir mit dem Internet verbunden sein, da wir die Dateien die wir benötigen online verfügbar haben. Um mit GIT zu arbeiten müssen wir es einmalig installieren. Dazu öffnen wir aus der grafischen Oberfläche die Administratorterminal oder bleiben in der Terminalansicht, wenn die grafische Oberfläche nicht gestartet wurde. Wir können auch Programme installieren, wenn wir kein Administrator sind, müssen dann aber vor jeden Befehl noch das Wort "sudo" setzen, das sparen wir uns mit dem Administratorterminal.

Im Terminal tippen wir nun folgende Befehle ein. Nicht vergessen immer mit "Enter" bestätigen!

sudo apt-get update
sudo apt-get upgrade

Macht man immer, um das System aktuell zu halten. Das eigentliche Programm GIT installiert man mit:

sudo apt-get install git-core

Jetzt haben wir die Voraussetzungen geschaffen und können wiringPi über GIT installieren:

git clone git://git.drogon.net/wiringPi

Nun befindet sich die aktuellste Version von wiringPi auf dem Raspberry Pi, muss aber noch installiert werder. Und zwar wechseln wir in das wiringPi-Verzeichnis mit:

cd wiringPi

und führen das Installationsscript aus:

./build

Damit wird dann wiringPi automatisch eingerichtet.


Manuell

Das Ganze geht auch manuell, ohne GIT und ohne Internetverbindung. Dazu müssen wir vorher mit einem anderen Rechner die Quelldaten herunterladen und in das Verzeichnis /tmp kopieren oder direkt mit dem Raspberry Pi aus dem Internet:

wget http://project-downloads.drogon.net/files/wiringPi.tgz

Zum Installiern dann nacheinander folgende Befehle eingeben:

tar xfz wiringPi.tgz
cd wiringPi/wiringPi
make
make install
cd ../gpio
make

Hat das geklappt, können wir wiringPi benutzen. Da wir gerade im Terminal sind schauen wir uns als erstes das mitgelieferte GPIO utility an.


GPIO utility

Ein kleines Programm namens gpio kann uns das Leben richtig leicht machen. Es steht nach der Installation von wirigPi zur Verfügung und kann in der Kommandozeile aufgerufen werden. Eines seiner wichtigsten Merkmale ist, dass es keine root-Rechte benötigt also von jedem Benutzer ausgeführt werden kann. Wichtig wird das zum Beispiel, wenn die GPIOs über das Netzwerk oder von anderen Programmen aus gesteuert werden soll, denn ein Programm oder einen Internetnutzer als root zuzulassen ist äußerst gefährlich.

Mit gpio können wir folgendes anstellen:

  • GPIOs über das Verzeichnis /sys/class/ zur Verfügung stellen ohne spezielle Rechte zu benötigen
  • flankengetriggerte Interrupts über /sys/class/ ermöglichen
  • das PiFace und Gertboard teilweise kontrollieren
  • SPI und I²C-Module mit verschiedenen Parametern zur Verfügung stellen
  • die Hardwareversion des Raspberry Pi bestimmen

Wollen wir genaues über die Befehlsstruktur erfahren können wir wie bei Linux üblich den man-Befehl nutzen um eine Anleitung (engl.: manual) abzurufen . Also im Terminal einfach mal eingeben:

man gpio

Gehen wir die Befehle nun einfach mal durch.

gpio -v

gibt die Versionsnummer aus.

gpio -g Befehl

weist an, dass nicht die Pinnummern von wiringPi zum Ansteuern genutzt werden, sondern die vom Chip des Raspberry Pi (Merke: die unterscheiden sich), das kann in einigen Fällen nützlich sein. Wir kennzeichnen im folgenden den Parameter -g als optional indem wir ihn in eckigen Klammern setzten, also [-g]. Das ist übrigens in vielen Beschreibungen in Linux, z.B. auch beim man-Befehl so üblich.

gpio mode [-g] <Pin> in / out / pwm / up / down / tri

mode legt fest, in welcher Weise der gpio mit der Pinnummer <Pin> benutzt werden soll. <Pin> ist die Nummer des Pins auf der Steckleiste die in wiringPi festgelegt ist. Die weiteren Parameter legen das Verhalten des angesprochenen Pins fest.

  • in - Der Pin wird als Eingang (engl.: input) benutzt
  • out - Der Pin wird als Ausgang (engl.: output) benutzt
  • pwm - Der Pin kann pulsmoduliert als Ausgang benutzt werden
  • up - Der interne Widerstand am Pin wird als pull-up genutzt
  • down - Der interne Widerstand am Pin wird als pull-down genutzt
  • tri - Der Pin wird mit offenem Kollektor betrieben

Um einen GPIO mit der Pinnummer <Pin> auf 1 (high) oder 0 (low) zu schalten nutzen wir write

gpio [-g] write <Pin> 0 / 1

Mit pwm können wir den Pin <Pin> durch Pulsmodulation "dimmen", es ist ein Wert <Wert> von 0 - 1023 möglich.

gpio [-g] pwm <Pin> <Wert>

Auslesen des Zustandes eines Pins <Pin> ist, sofern der Pin vorher auf Eingang (gpio mode in) gesetzt wurde, ist mit read (dt.: lesen) möglich.

gpio [-g] read <Pin>

Ein Pin, der nirgendwo angeschlossen ist, hat übrigens den Zustand 1 (high). Erst wenn man ihn mit 0V (GND) verbindet hat er den Zustand 0 (low).

Um eine Liste der Bezeichnungen und Zustände der Pins in wiringPi- und Prozessorbezeichnung zu erhalten nutzen wir readall

gpio readall

 

 

wird fortgesetzt ...