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

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Verschlungene Pfade

    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.