PHP sur Raspberry Pi »Raspberry Pi Geek – Bien choisir son serveur d impression
Python et Scratch sont de loin les options les plus populaires pour la programmation de Raspberry Pi. Avec un peu de travail, cependant, vous pouvez apprendre à Raspberry Pi à comprendre d'autres langages, y compris PHP. Vous voudrez peut-être utiliser PHP sur Raspberry Pi pour plusieurs raisons. Si vous avez déjà créé une application basée sur PHP et que vous souhaitez l'intégrer à Raspberry Pi, par exemple, il est logique de s'en tenir à PHP. Peut-être que vous êtes plus familier avec l'écriture de code en PHP que Python, ou peut-être voulez-vous simplement essayer un autre langage de programmation.
Avant de pouvoir travailler avec PHP sur Raspberry Pi, vous devez installer PHP lui-même sur la machine. Dans la plupart des situations, PHP est utilisé en tandem avec un serveur Web tel qu'Apache. Installer PHP et Apache sur Raspberry Pi est une question d’exécution:
sudo apt-get install apache2 php5
Au lieu d’Apache, vous pouvez installer un serveur plus léger tel que lighttpd en utilisant le
sudo apt-get installer lighttpd php5
commander.
Construire des ponts
La manière la plus simple d’utiliser PHP avec Raspberry Pi est probablement la shell_exec ()
une fonction. Cette fonction vous permet d'exécuter des commandes shell, ce qui lui permet d'agir comme une sorte de pont entre PHP et Raspberry Pi. Dans le cas le plus simple, shell_exec ()
peut appeler des scripts Python qui effectuent certaines tâches et contrôlent les broches GPIO.
Une autre approche consiste à déployer la bibliothèque Wiring Pi [1] pour travailler avec des broches GPIO et ensuite utiliser la bibliothèque avec PHP via le shell_exec ()
une fonction. Pour que cette solution fonctionne, vous devez d'abord installer Wiring Pi sur Raspberry Pi. La bibliothèque n'est pas disponible sous forme de package binaire, vous devez donc la compiler et l'installer à partir de la source. Heureusement, ce processus est relativement simple. Commencez par installer le logiciel Git en utilisant:
sudo apt-get install git-core
Ensuite, clonez le référentiel Wiring Pi Git en lançant
git clone git: //git.drogon.net/wiringPi
Basculer vers le résultat câblagePi
répertoire et utiliser le ./construire
commande pour compiler et installer Wiring Pi:
cd câblage ./construire
Pour vous assurer que Wiring Pi est installé et fonctionne correctement, exécutez la commande gpio -v
commander; il devrait renvoyer la version actuelle de Wiring Pi avec les informations de base de Raspberry Pi. Ensuite, exécutez le lecture gpio
commande pour afficher un diagramme de disposition GPIO détaillé.
Pour utiliser Wiring Pi de manière pratique, je construirai une application PHP très simple pour contrôler une LED. Connectez une LED avec une résistance aux broches 17 et GND du GPIO, comme indiqué dans la figure 1. Ouvrez le terminal de votre Raspberry Pi (ou connectez-le via SSH) et passez au / var / www
annuaire. Ensuite, utilisez le sudo nano gpio.php
commande pour créer le gpio.php
fichier pour édition. Placez le code dans le listing 1 (adapté du site Web Raspberry Pi Tutorials [2]) dans le fichier.
Application PHP simple pour contrôler une LED
01 02 03 0412 23 24Contrôle LED 05 06 Contrôle de 07 LED: 08
L'élément clé de l'application est un formulaire HTML contenant SUR
et DE
boutons. Lorsque vous appuyez sur l’un des boutons, sa valeur est transmise à l’URL (gpio.php? on = ON
et gpio.php? off = OFF
). La broche 17 de GPIO est contrôlée par le code PHP qui utilise le shell_exec ()
une fonction. La déclaration à la ligne 13 définit le mode de la broche à en dehors
; le bloc de code des lignes 14 à 21 lit la valeur actuelle de l'URL et utilise le shell_exec ()
fonction pour allumer et éteindre la broche.
Maintenant, pointez le navigateur sur http://127.0.0.1/gpio.php (remplacez 127.0.0.1 par l'adresse IP réelle du Raspberry Pi) et utilisez les boutons pour allumer et éteindre le voyant connecté au Raspberry Pi (Figure 2).
Si les boutons ne fonctionnent pas, le serveur Web ne dispose probablement pas des droits appropriés pour exécuter des commandes shell. Pour résoudre ce problème, exécutez la commande sudo visudo
commande et ajouter la ligne suivante à la sudoers
fichier:
www-data ALL = NOPASSWD: ALL
Assurez-vous également que le / var / www
le répertoire appartient à la www-data
utilisateur et groupe (utiliser sudo chown -R www-data: www-data / var / www
pour définir le propriétaire correct).
Même cette application PHP très simple peut être utilisée à plusieurs fins avec un minimum de peaufinage. Par exemple, j'utilise un simple commutateur à transistor connecté à Raspberry Pi pour contrôler mon appareil photo reflex film [3]. La solution d'origine utilisait un simple script Python pour contrôler le commutateur. Pour exécuter le script, je devais le faire via une connexion SSH, ce qui n’était pas très pratique dans de nombreuses situations. J'ai donc modifié l'exemple de script PHP à utiliser avec le commutateur à transistors (extrait 2).
Application PHP pour contrôler un commutateur à transistor
01 02 03 0411 20 21Déclencheur 05 06 07 interrupteur de déclenchement: 08
Tout ce que je devais faire était de supprimer un des boutons et de modifier les commandes du si
condition nécessaire pour allumer le commutateur, attendez 0,5 seconde (pour que la caméra enregistre le signal), puis éteignez le commutateur. Maintenant, je peux utiliser l'application PHP pour déclencher l'appareil photo à partir de n'importe quel ordinateur ou appareil mobile.
Prendre la route gpio-php
Bien que utilisant Wiring Pi via shell_exec ()
appels offre un moyen simple de contrôler les broches GPIO dans les scripts PHP. Ce n’est pas la seule option à votre disposition. Le projet php-gpio [4], par exemple, fournit une bibliothèque PHP dédiée pour accéder à la broche GPIO sur Raspberry Pi. Pour commencer à utiliser php-gpio, utilisez les commandes suivantes pour installer la bibliothèque et les fichiers qui y sont joints. / home / pi
annuaire:
wget http://getcomposer.org/composer.phar composeur php.phar create-project --stability = 'dev'ronanguilloux / php-gpio
php-gpio utilise une poignée d'appels d'API simples pour définir les broches GPIO et changer leurs états à partir d'un script PHP. Pour activer cette fonctionnalité, toutefois, le script doit contenir les instructions suivantes qui chargent la bibliothèque et configurent une broche GPIO:
nécessite 'vendor / autoload.php'; utilisez PhpGpio Gpio; $ gpio = new GPIO (); $ gpio-> setup (17, "out");
Dans cet exemple, la dernière instruction définit la broche 17 de GPIO pour la sortie. Le contrôle des broches nécessite deux commandes supplémentaires:
$ gpio-> sortie (17, 1)
$ gpio-> sortie (17, 0)
Le premier définit l'état de la broche à 1
(c’est-à-dire, l’allume), et le second change l’état en 0
(c’est-à-dire, désactive la goupille). Finalement, le $ gpio-> unexportAll ()
Cette commande réinitialise toutes les broches.
En utilisant ces commandes, vous pouvez rapidement créer un script PHP simple qui fait clignoter le voyant connecté à la broche 17 de GPIO (extrait 3).
Script PHP simple pour faire clignoter les LED
01 configuration (17, "out"); 06 while (true) 07 $ gpio-> sortie (17, 1); 08 sommeil (1); 09 $ gpio-> sortie (17, 0); 10 sommeil (1); 11
Pour exécuter le script, exécutez le sudo php blinking_led_script.php
commander. Bien que la bibliothèque php-gpio facilite le contrôle des pins GPIO à partir de scripts PHP, gardez à l'esprit que les scripts eux-mêmes doivent être exécutés à partir de la ligne de commande. En d'autres termes, vous ne pouvez pas utiliser les commandes décrites directement dans les pages PHP servies par un serveur Web.
La solution est simple: utilisez le shell_exec ()
fonction pour appeler le script depuis une application PHP. Par exemple, je lance une galerie photo simple basée sur PHP sur mon Raspberry Pi, et j’ai ajouté le shell_exec ('sudo php path / to / php-gpio / blink_led.php')
déclaration qui appelle le blink_led.php
scénario. Ainsi, lorsque quelqu'un visite ma galerie, le voyant clignote quelques secondes.
Le seul problème est que toute l'application PHP s'interrompt pendant l'exécution du script appelé. Dans le cas du script de clignotement du voyant, cela peut ne pas être un problème, mais cela pourrait aussi être un problème grave si vous appelez un script dont l'exécution est plus longue. Heureusement, une solution facile est disponible. Vous pouvez exécuter le script en arrière-plan et supprimer la sortie en le redirigeant:
shell_exec ('sudo php path / to / php-gpio / blink_led.php> / dev / null 2> / dev / null & ');
Encore une fois, comme tous les scripts PHP sur Raspberry Pi doivent être exécutés avec les privilèges root, vous devez ajouter le www-data
utilisateur à la sudoers
fichier.
La bibliothèque php-gpio peut être utilisée pour d'autres utilisations plus avancées. Le dépôt GitHub php-gpio-web, par exemple, contient une application Web simple [5] qui montre comment créer une interface Web pour contrôler une LED et le projet temperature-pi [6] montre comment lire et enregistrer les données d'un capteur de température.
Dans cet article, j'ai brièvement décrit les approches possibles pour utiliser PHP sur Raspberry Pi. Et les exemples de scripts offrent quelques indications sur le contrôle de GPIO via des scripts PHP. Donc, si vous voulez utiliser PHP avec Raspberry Pi, vous savez maintenant par où commencer.
Commentaires
Laisser un commentaire