Um die GPIO Pins des RaspberryPi ansteuern zu können, gibt es wiringPi. Diese Programmbibliothek kann man ganz einfach in verschiedenen Programmiersprachen (C/C++, Phyton, Java oder PHP) einbinden. Die Funktionen der Libary ermöglichen unteranderem das Schalten eines High- bzw. Low-Zustandes auf den GPIO-Pins. Auch können die Pins als Eingang genutzt und mit wiringPi ausgelesen werden.
Als erstes sollte man die Linux Pakete und die Firmware des Raspberry Pi updaten, siehe dazu meinen Blog-Beitrag Raspberry Pi einrichten.
Dann lädt man wiringPi mit git herunter:
git clone git://git.drogon.net/wiringPi
Wenn der Download abgeschlossen ist sollte im aktuellen Verzeichnis ein neuer Ordner „wiringPi“ erscheinen. In diesem Ordner ist dann der Quellcode der Programmbibliothek abgelegt.
Um wiringPi verwenden zu können, müssen wir die Software im nächsten Schritt kompilieren und installieren. Zur Installation bringt die Software ein Build-Skript mit. Um es auszuführen wechselt man in das entsprechende Verzeichnis und setzen entsprechende Zugriffsrechte mit:
cd wiringBPi chmod +x build
Jetzt kann man das Build-Skript ausführen mit:
sudo ./build
Nach dem Build ist wiringPi erfolgreich installiert und kann verwendet werden. WiringPi ist sehr vielseitig und kann daher mit den Programmiersprachen C/C++, Phyton, Java oder PHP genutzt werden. Außerdem ist das Schalten der GPIO Pins direkt über die Konsole möglich.
Grundlegend ist festzuhalten dass die GPIO Pins als Eingang oder Ausgang konfiguriert werden können. Ein Pegel von 5 Volt bedeutet High und ein Pegel von 0 Volt bedeutet Low. Dies ist bei der Beschaltung der GPIO-Pins zu beachten um eine korrekte Funktionalität zu gewährleisten und um den RaspberryPi nicht zu beschädigen. Neben den Zuständen High und Low unterstützen einige Pins auch Funktionen wie PWM und UART.
Um herauszufinden wie die GPIO Pins momentan konfiguriert und beschalten sind, kann man folgenden Befehl absetzen:
gpio readall
Will man zum Beispiel den GPIO Pin 17 ansteuern ist das physikalisch Pin 11 und aus Sicht von wiringPi Pin 0. Anhand der ausgegebenen Tabelle vom Befehl gpio readall kann dies nachvollzogen werden:
Wenn man Pin 17 beschalten will, muss man diesem zunächst sagen, ob er als Eingang oder Ausgang fungieren soll. Will man zum Beispiel GPIO Pin 17 als Ausgang schalten, verwendet man dazu folgenden Befehl mit dem Parameter „out“ (als Eingang würde man „in“ nehmen):
gpio export 17 out
Anschließend soll zum Beispiel an GPIO Pin 17 ein High-Zustand (5 Volt) angelegt werden. Das geht mit folgendem Befehl:
gpio -g write 17 1
Ruft man jetzt die Pin-Übersicht mit gpio readall erneut auf, wird ersichtlich, dass der GPIO Pin 17 bzw. physikalisch 11 bzw. wiringPi Pin 0 auf Output und High geschalten ist. Wenn man anschließend vom High zum Low wechseln möchte, ersetzt man die 1 durch eine 0:
gpio -g write 17 0
Diesen Befehl zum Schalten der GPIO Pins kann man dann in beliebigen Skripten verwenden.
Zum Beispiel in einem PHP-Skript mit:
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 17 0"));