PHP und Embedded: Ein unerwarteter Cocktail aus Hardware und Skripten
Wenn man „Embedded-Entwicklung“ hört, stellt man sich normalerweise C, C++ oder das frische Rust vor. PHP assoziiert man hingegen mit Websites, CMS und klebrigen Formularen. Aber was, wenn ich Ihnen sage, dass PHP LEDs steuern, Temperatursensoren abfragen oder sogar mit dem I2C-Bus arbeiten kann? Ja, das ist kein Scherz. An der Schnittstelle von Web und eingebetteten Systemen gibt es eine ganze Nische – die Embedded-Entwicklung mit PHP.
Natürlich schlägt niemand vor, Linux-Treiber in PHP zu schreiben. Es geht um etwas anderes: Wenn man schnell eine Weboberfläche für ein Smart Home, einen Prototypen eines IoT-Geräts aufbauen oder die Datenerfassung von Industrieanlagen automatisieren muss, erweist sich PHP als idealer Klebstoff. Es läuft unter Linux, liest/schreibt problemlos in Gerätedateien, und seine Bibliotheken ermöglichen die Kommunikation mit COM-Ports, GPIO und sogar Arduino. Lassen Sie uns reale Szenarien der Verwendung von PHP in Embedded-Systemen mit Code und praktischen Tipps durchgehen.
Warum PHP für Embedded? Mythen und Realität
Das Hauptargument der Gegner: „PHP ist langsam und für Echtzeit ungeeignet.“ Und das stimmt, wenn Sie versuchen, einen Schrittmotor mit Mikrosekunden-Genauigkeit zu steuern. Aber im realen Leben erfordern 90 % der Embedded-Aufgaben keine harte Echtzeit. Das einmal pro Sekunde erfolgende Auslesen eines Sensors, das Protokollieren von Temperaturen, das Senden eines Befehls über UART – all das erledigt PHP problemlos.
Vorteile der Embedded-Entwicklung mit PHP:
- Schneller Start – man muss keine Zeiger und Speicherverwaltung in C lernen. Einfach eine Datei öffnen und loslegen.
- Weboberfläche „out of the box“ – jedes PHP-Skript kann sofort in HTML+CSS+JS verpackt werden.
- Riesige Community – für die Arbeit mit Hardware gibt es fertige Bibliotheken (php-serial, php-gpio, php-i2c).
- Plattformunabhängigkeit – das Skript läuft auf Raspberry Pi, Orange Pi, einem normalen PC mit Linux.
Nachteile gibt es auch: PHP ist nicht für hochbelastete Systeme mit häufigen Interrupts geeignet. Aber für Prototyping, Smart Home oder industrielle Überwachung ist es eine ausgezeichnete Wahl.
Arbeit mit GPIO über PHP: LEDs zum Leuchten bringen
Der einfachste Weg, Hardware zu „berühren“, ist die Steuerung von GPIO-Pins auf einem Raspberry Pi oder Orange Pi. Unter Linux sind GPIOs als Dateien in /sys/class/gpio/ dargestellt. PHP kann sie wie normale Textdateien öffnen. Hier ist ein Beispiel für das Blinken einer LED mit PHP:
<?php// Definiere die GPIO-Pin-Nummer (z.B. GPIO17 – physischer Pin 11 auf dem RPi)$gpio_pin = 17;
// Exportiere den Pin (falls noch nicht exportiert)if (!file_exists("/sys/class/gpio/gpio$gpio_pin")) { file_put_contents("/sys/class/gpio/export", $gpio_pin);}
// Setze die Richtung – Ausgangfile_put_contents("/sys/class/gpio/gpio$gpio_pin/direction", "out");
// Blinke 5 Malfor ($i = 0; $i < 5; $i++) { // Einschalten (1) file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "1"); sleep(1); // Ausschalten (0) file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "0"); sleep(1);}
// Pin freigebenfile_put_contents("/sys/class/gpio/unexport", $gpio_pin);echo "LED-Blinken beendet!";?>Dieser Code ist die Grundlage für jede Gerätesteuerung mit PHP. Sie können problemlos das Lesen eines Tasters hinzufügen (einfach die Richtung auf "in" ändern und den Wert lesen). So wird PHP zu einem vollwertigen Werkzeug für die Arbeit mit diskreten Signalen.
Verwendung der Bibliothek php-gpio
Um nicht jedes Mal den Export/Unnexport schreiben zu müssen, verwenden Sie eine fertige Bibliothek. Installieren Sie sie über Composer:
composer require piwik/gpioBeispiel mit derselben Bibliothek:
<?phprequire 'vendor/autoload.php';
use Piwik\\Gpio\\Gpio;
$gpio = new Gpio();$pin = $gpio->getPin(17);
// Als Ausgang konfigurieren$pin->setDirection(Gpio::DIRECTION_OUT);
// Einschalten