Es muss nicht immer Python sein: Auch per PHP lassen sich auf dem RasPi die GPIO-Pins ansteuern, was das Ganze für Webapps interessant macht.
README
Der Einstieg in PHP fällt auf dem Raspberry Pi nicht schwer. Dieser Artikel zeigt, wie Sie mit einer simplen PHP-App über eine Webapplikation die GPIO-Schnittstelle ansteuern.
Python und Scratch haben sich als die beliebtesten Programmiersprachen für den Raspberry Pi etabliert. Der Mini-Rechner versteht sich aber auch auf andere Sprachen wie etwa PHP. Letzteres macht den RasPi auch für Webprogrammierer interessant, die mit der Sprache vertrauter sind als mit Python und bereits erstellte PHP-basierte Apps mit dem Rechenzwerg zusammen einsetzen wollen.
Vor dem Einstieg in PHP müssen Sie es erst einmal auf dem RasPi installieren. Nachdem die Sprache typischerweise zusammen mit einem Webserver zum Einsatz kommt, geschieht das meist mit folgendem Kommando:
$ sudo apt-get install apache2 php5
Für die typischen Einsatznischen des Raspberry Pi erweist sich Apache allerdings oft als überdimensioniert. Um einen leichtgewichtigeren Webserver wie Lighttpd einzurichten, ersetzen Sie in dem Kommando einfach apache durch lighttpd.
Brücken bauen
Den einfachsten Weg, auf dem RasPi PHP zu verwenden, stellt das Verwenden der PHP-Funktion shell_exec() dar: Sie führt, wie der Name schon vermuten lässt, Befehle in der Shell aus und schafft auf diese Weise eine Art Brücke zwischen PHP und dem RasPi.
Im simpelsten Fall rufen Sie via shell_exec() Bash- oder Python-Skripte auf, die GPIO-Pins ansteuern oder andere gewünschte Aufgaben übernehmen. Eine etwas ausgefeiltere Variante zum Ansteuern der GPIO-Schnittstelle bietet die Bibliothek WiringPi [1], die es vorab aber erst einmal zu installieren gilt. Da sie nicht als Raspbian-Paket zur Verfügung steht, müssen Sie sie aus den Quellen übersetzen. Falls die dazu benötigte Versionsverwaltung Git noch nicht auf dem RasPi läuft, richten Sie diese als Erstes ein (Listing 1, Zeile 1) und laden damit die WiringPi-Quelldateien herunter (Zeile 2). Dann wechseln Sie in das dabei neu entstandene Verzeichnis (Zeile 3) und installieren die Bibliothek (Zeile 4).
Listing 1
$ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi $ cd wiringPi $ ./build
Mithilfe des Kommandos gpio -v prüfen Sie anschließend, ob dabei auch alles geklappt hat. Als Rückgabe liefert der Befehl im Erfolgsfall die Versionsnummer des installierten WiringPi sowie einige allgemeine Informationen zum verwendeten Raspberry Pi. Als Nächstes rufen Sie den Befehl gpio readall auf, der ein detailliertes GPIO-Layout-Diagramm ausgibt.
Erste Schritte
Im Folgenden soll eine ganz schlichte PHP-App demonstrieren, wie sich eine LED ansteuern lässt. Verbinden Sie die Diode dazu über einen Widerstand mit GND und dem GPIO-Pin 17 (Abbildung 1). Öffnen Sie dann auf dem RasPi ein Terminal und wechseln Sie ins Verzeichnis /var/www. Dort legen Sie die Datei gpio.php an und öffnen sie mit einem Texteditor. Tippen Sie den Code aus Listing 2 ein – er stammt von der Raspberry-Pi-Tutorials-Webseite [2] – und speichern Sie die Datei dann ab.
Listing 2
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>LED Control</title>
</head>
<body>
LED Control:
<form method="get" action="gpio.php">
<input type="submit" value="ON" name="on">
<input type="submit" value="OFF" name="off">
</form>
<?php
$setmode17 = shell_exec("/usr/local/bin/gpio -g mode 17 out");
if(isset($_GET['on'])){
$gpio_on = shell_exec("/usr/local/bin/gpio -g write 17 1");
echo "LED is on";
}
else if(isset($_GET['off'])){
$gpio_off = shell_exec("/usr/local/bin/gpio -g write 17 0");
echo "LED is off";
}
?>
</body>
</html>
Das Herzstück der App ist ein HTML-Formular mit den Schaltern ON und OFF (Zeilen 8 bis 11). Klicken Sie einen der beiden an, übergibt das Formular dessen Wert als Teil der URL (gpio.php?on=ON oder gpio.php?off=OFF). Der PHP-Code kontrolliert über die Funktion shell_exec() den GPIO-Pin 17. Die Anweisung in Zeile 13 setzt den Pin zunächst auf OUT; der Code-Block in den Zeilen 14 bis 20 liest den aktuellen Wert aus der URL und schaltet dann den Pin mittels shell_exec() an beziehungsweise aus.
Nun können Sie in einem Webbrowser die URL http://RasPi-IP/gpio.php aufrufen (Abbildung 2) und mittels der Buttons die LED zum Leuchten bringen und wieder ausschalten.
Troubleshooting
Falls das nicht klappt, liegt das höchstwahrscheinlich daran, dass der Webserver nicht über ausreichende Rechte zum Aufruf von Shell-Kommandos verfügt. Dann müssen Sie mithilfe des Befehls sudo visudo nachhelfen und der Datei sudoers folgende Zeile hinzufügen:







