PHP dans le monde du matériel : comment écrire du code embarqué sans microcontrôleurs

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

PHP et l'embarqué : un cocktail inattendu de matériel et de scripts



Quand on entend « Développement embarqué », on imagine généralement du C, du C++ ou du Rust tout frais. PHP, quant à lui, est associé aux sites web, aux CMS et aux formulaires collants. Mais que diriez-vous si je vous disais que PHP peut contrôler des LED, interroger des capteurs de température ou même fonctionner avec un bus I2C ? Oui, ce n'est pas une blague. À l'intersection du web et des systèmes embarqués, il existe tout un créneau — le développement embarqué en PHP.



Bien sûr, personne ne suggère d'écrire des pilotes Linux en PHP. Il s'agit d'autre chose : lorsque vous avez besoin de monter rapidement une interface web pour une maison intelligente, un prototype d'appareil IoT ou d'automatiser la collecte de données à partir d'équipements industriels, PHP s'avère être la colle idéale. Il fonctionne sous Linux, lit/écrit facilement dans les fichiers de périphériques, et ses bibliothèques permettent de communiquer avec les ports COM, GPIO et même Arduino. Analysons des scénarios réels d'utilisation de PHP dans les systèmes embarqués, avec du code et des conseils pratiques.



Pourquoi PHP pour l'embarqué ? Mythes et réalité



Le principal argument des détracteurs : « PHP est lent et ne convient pas au temps réel ». Et c'est vrai si vous essayez de contrôler un moteur pas à pas avec une précision à la microseconde. Mais dans la vraie vie, 90 % des tâches embarquées ne nécessitent pas de temps réel strict. La collecte de données d'un capteur une fois par seconde, la journalisation de la température, l'envoi d'une commande via UART — tout cela, PHP le fait facilement.



Les avantages du développement embarqué avec PHP :

  • Démarrage rapide — pas besoin d'apprendre les pointeurs et la mémoire en C. Il suffit d'ouvrir un fichier et d'écrire.
  • Interface web « prête à l'emploi » — tout script PHP peut être immédiatement enveloppé dans du HTML+CSS+JS.
  • Communauté immense — il existe des bibliothèques prêtes à l'emploi pour travailler avec le matériel (php-serial, php-gpio, php-i2c).
  • Multiplateforme — le script fonctionne sur Raspberry Pi, Orange Pi, un PC classique sous Linux.


Il y a aussi des inconvénients : PHP ne convient pas aux systèmes à forte charge avec des interruptions fréquentes. Mais pour le prototypage, la maison intelligente ou la surveillance industrielle — c'est un excellent choix.



Travailler avec GPIO via PHP : allumer des LED



La façon la plus simple de « tâter » le matériel est de contrôler les broches GPIO sur un Raspberry Pi ou un Orange Pi. Sous Linux, les GPIO sont représentés comme des fichiers dans /sys/class/gpio/. PHP peut les ouvrir comme des fichiers texte ordinaires. Voici un exemple de clignotement d'une LED en PHP :



<?php// Définir le numéro de la broche GPIO (par exemple, GPIO17 — broche physique 11 sur RPi)$gpio_pin = 17;

// Exporter la broche (si pas encore exportée)if (!file_exists("/sys/class/gpio/gpio$gpio_pin")) { file_put_contents("/sys/class/gpio/export", $gpio_pin);}

// Définir la direction — sortiefile_put_contents("/sys/class/gpio/gpio$gpio_pin/direction", "out");

// Clignoter 5 foisfor ($i = 0; $i < 5; $i++) { // Allumer (1) file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "1"); sleep(1); // Éteindre (0) file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "0"); sleep(1);}

// Libérer la brochefile_put_contents("/sys/class/gpio/unexport", $gpio_pin);echo "LED blinking finished!";?>


Ce code est la base de tout contrôle de périphériques via PHP. Vous pouvez facilement ajouter la lecture d'un bouton (il suffit de changer la direction en "in" et de lire la valeur). Ainsi, PHP se transforme en un outil complet pour travailler avec des signaux discrets.



Utilisation de la bibliothèque php-gpio



Pour ne pas avoir à écrire l'exportation/désexportation à chaque fois, utilisez une bibliothèque prête à l'emploi. Installez-la via Composer :

composer require piwik/gpio


Exemple avec la même bibliothèque :

<?phprequire 'vendor/autoload.php';

use Piwik\\Gpio\\Gpio;

$gpio = new Gpio();$pin = $gpio->getPin(17);

// Configurer comme sortie$pin->setDirection(Gpio::DIRECTION_OUT);

// Allumer

Blogs

Book Recommendations