Serveur d'impression

PHP sur Raspberry Pi »Raspberry Pi Geek – Bien choisir son serveur d impression

Le 5 octobre 2019 - 6 minutes de lecture

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 
04 Contrôle LED
05 
06         
Contrôle de 07 LED:
08         
09 dix 11
12 23 24




Figure 1: schéma de câblage des voyants.

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).




Figure 2: Découvrez l’application PHP simple dans toute sa splendeur.

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 
04 Déclencheur
05 
06         
07 interrupteur de déclenchement:
08         
09 dix
11 20 21

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.

Dmitri Popov écrit depuis de nombreuses années exclusivement sur Linux et les logiciels open source. Ses articles ont été publiés dans des magazines et des sites Web danois, britanniques, américains, allemands, espagnols et russes. Dmitri est un photographe amateur. Il écrit sur les outils de photographie open source sur son blog Scribbles and Snaps à l'adresse http://scribblesandsnaps.wordpress.com.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.