Raspberry Pi GPIOs mit wiringPi auslesen und steuern
Es existieren mehrere Möglichkeiten, die GPIO-Ports eines Raspberry Pi zu steuern oder deren Stati auszulesen. Den herkömmlichen und recht umständlichen, oder mit Verwendung der wiringPi-Bibliothek. wiringPi ermöglicht die Einbindung in Programmiersprachen wie PHP, Java oder Python. Als weiteres Hilfsmittel steht ein Kommandozeilentool zur Verfügung, mit welchem aus der Konsole heraus GPIO-Ports gesteuert oder gelesen werden können.
Hier möchte ich zunächst drei Wege der Installation sowie die Verwendung des Kommandozeilentools aufzeigen.
Installation
Installation via Repository
Die einfachste Methode, wiringPi zu installieren, ist
, da wiringPi mittlerweile in den Repositories vorhanden ist.
Installation via GIT
Vor der Installation stellen wir mit den Befehlen
sicher, dass sich unser Raspberry mitsamt allen Paketen auf dem aktuellsten Stand befindet.
Anschließend installieren wir GIT und eine Abhängigkeit via
Nun kann wiringPi aus dem GIT-Repository „heruntergeladen“ werden:
Anschließend führen wir das Installationsscript aus:
Dies konfiguriert und installiert wiringPi.
Manuelle Installation
Sollte GIT oder gar eine Internetverbindung nicht zur Verfügung stehen, besteht auch die Möglichkeit einer manuellen Installation von wiringPi.
Das gepackte Archiv mit wiringPi laden wir zunächst (an einem anderen Rechner?) herunter (und verschieben es auf den Raspberry):
Anschließend wird eine Abhängigkeit installiert, das heruntergeladene Paket entpackt, kompiliert und installiert:
Anwendung
Das Kommandozeilentool
Nach der erfolgreichen Installation von wiringPi steht uns das Kommandozeilentool „gpio“ zur Verfügung. Ein Vorteil dieses Tools ist, dass es von jedem Nutzer des Systems ausgeführt werden kann und im Gegensatz zu der herkömmlichen Weise, die GPIO-Ports anzusprechen, keine root-Rechte benötigt.
Die aktuell installierte Version des Tools wird ausgegeben mit
wiringPi nutzt eine andere Nummering der GPIO-Ports als das System. Daher ist immer auf die korrekte Bezeichnung des zu behandelnden Ports zu achten. Dazu gibt es in diesem Beitrag eine grafische Tabelle, die die Umsetzung der Nummerierung verdeutlicht.
Diese Tabelle kann für das System passend (verschiedene Versionen und Revisionen der Raspberrys) auf der Konsole angezeigt werden mit dem Aufruf:
Sollte dennoch der Wunsch bestehen, die Nummerierung seitens des Raspberrys zu nutzen, kann dies mit einem vorangestellten „-g“ durchgeführt werden. Beispiel:
Um nun einen GPIO-Port zu schalten, nutzen wir das Tool wie folgt. Ein Port (im folgenden Beispiel wiringPi-GPIO 7) wird auf „high“ (1) geschaltet mit
und auf „low“ (0) geschaltet mit
Zudem ist ein Dimmen durch Pulsweitenmodulation (PWM) möglich. Dies wird realisiert mit dem Befehlsaufruf
wobei in diesem Beispiel der wiringPi-Port 7 angesprochen wird und ein PWM-Wert von 500 gesetzt wird. Gültige Werte liegen im Bereich von 0 bis 1023.
Auch ist das Auslesen des Zustanden eines GPIO-Ports mit diesem Tool möglich:
liest in diesem Beispiel den Schaltzustand des System-GPIO-Ports 4 (=wiringPi Port 7) aus. Dies kann der Zustand 1 (high) oder 0 (low) sein.
Mit diesem Tool sind nun unzählige Anwendungsfälle vorstellbar, die u.a. mit Shell-Scripten realisiert werden können. Eine Möglichkeit wäre das Auslesen von Reed-Kontakten oder Schwimmern, wie in diesem Beitrag beschrieben. Vorstellbar wäre auch eine Übergabe eines jeweiligen GPIO-Status an die Hausautomatisierungsplattform openHAB, wie in diesem Beitrag ausführlich beschrieben.
17.08.2015 @ 09:42
Nach dem Neustart verschwindet aber die Einstellung :(
Wie kann man die Eistellung speichern.
17.12.2014 @ 05:25
Danke für den Hinweis. Der Artikel wurde entsprechend korrigiert.
16.12.2014 @ 22:54
Kleiner Schreibfehler in der URL. Es muss wohl drOgon statt drAgon sein. Dann klappt’s auch mit dem download :)
git clone git://git.drogon.net/wiringPi