PHP auf dem Raspberry Pi

© Olivier Le Moal, 123RF

Sprachtalent

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.

Abbildung 1: Das Verkabelungsdiagramm für den LED-Versuchsaufbau.

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.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

02/2019
Neue Energien

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Scheibchenweise

    Zu den Stärken von Sonic Pi gehört es, mit wenigen Zeilen Code Samples dynamisch auszuwählen und zu zerlegen.

  • Unter Strom

    Für einen kleinen Spannungsmesser wie den INA3221 gibt es viele Einsatzmöglichkeiten. Wir zeigen, wie Sie den flexiblen Baustein richtig verdrahten.

  • Vermittlungsstelle

    Fischertechnik-Modelle bieten sich zum Fernsteuern an. Mit dem Ftduino schlagen Sie die Brücke zwischen dem RasPi und dem Technik-Spielzeug.

  • Durchgeschlängelt

    Mit den M0-Boards steigen Sie unkompliziert in die Welt der Mikrocontroller ein – ganz ohne C-Kenntnisse.

  • Gesiebt und gefiltert

    Filter und Werbeblocker einzurichten ist besonders auf Smartphones aufwendig. Den eBlocker hingegen schließen Sie einfach nur an Ihren Router an.

  • Es werde Licht

    Wollen Sie bei beginnender Dämmerung nicht ständig die Helligkeit der heimischen Beleuchtung nachregeln, überlassen Sie das einfach einem RasPi – der macht es automatisch.

  • Energiekontrolle

    Der Gesetzgeber erschwert das Direktvermarkten von Strom durch technische Hürden: So muss sich die Einspeisung etwa aus der Ferne abschalten lassen. Der RasPi löst das Problem.

  • H<->2<->-Power

    Gilt es, Energie aus einer regenerativen Quelle zu speichern, erweist sich die Kombi aus einer Brennstoffzelle und dem RasPi als ideale Lösung.

  • Kleine Wolke

    Lokale Cloud-Lösungen im Heimnetz finden immer mehr Nutzer. Mit dem RasPi und Seafile haben Sie eine Lösung zur Hand, die selbst professionellen Ansprüchen genügt.

  • Planvoll verdrahtet

    Die Leiterplattendesign-Software KiCad leistet trotz einer etwas umständlichen Bedienung auch Hobbybastlern gute Dienste.