Développer sur Raspberry PI en C

Voici bien longtemps que j’ai mis de côté l’électronique. Pour repartir dans ce domaine, il me semble intéressant d’utiliser le Raspberry Pi. Ce petit ordinateur à 40€ qui permet de brancher toute sorte de choses sur son port GPIO et d’expérimenter facilement.

Étant développeur, mon langage de prédilection est le PHP. Celui-ci étant plutôt de haut niveau, il est impossible de l’utiliser pour écrire un programme pour un microcontrôleur Microchip ou ATmega. Pour ces derniers, il faut se tourner vers l’assembleur, le basic ou le C pour Microchip.

Il y a quelques mois, j’ai réalisé un petit montage pour lire le télérelevé client de mon compteur EDF. Le programme qui réalise la lecture des données du compteur et qui gère le stockage de ces données est écrit en PHP. J’ai compilé la version 7.0 pour le Raspberry Pi modèle A, afin de bénéficier des améliorations de cette version. Cela se ressent très vite avec un processeur peu puissant.

Maintenant, je m’intéresse aux interactions possibles avec le Raspberry Pi via son port GPIO. Et je me lance le défi d’utiliser PHP 7.0 pour écrire des programmes qui utilise le GPIO du Raspberry PI.

Mais comment avoir accès au hardware via PHP ?
J’ai trouvé deux façons de faire. La première est un très gros bricolage. Il s’agit de passer par des commandes système pour exécuter un programme qui réalisera les actions. Il y a deux grosses limitations à cela, d’une part les temps sont mauvais et d’autre part piloter la ligne de commande et en interpréter les résultats reste complexe. C’est beaucoup de travail pour quelques choses qui semblent plutôt simples.
La seconde façon est de réaliser une extension à PHP. Ce dernier est écrit en C et Pascal Martin a écrit un livre en français sur “Développer une extension PHP”. Reste à trouver une librairie C qui gère le GPIO du Raspberry Pi. J’en ai trouvé deux, la première “pigpio” semble très complète, mais je me la garde sous le coude pour plus tard. La seconde est “wiringPi”. Elle est composée de deux librairies et d’un exécutable permettant l’interaction avec le GPIO via la ligne de commande.

Avant de me lancer dans l’écriture de l’extension, je vais commencer par jouer un peu avec la librairie et mon banc d’essai.

Quel accueil !
Quel accueil !

Voici ce que je compte tester avant d’écrire une extension pour PHP :

  • Faire clignoter une LED
  • Lire l’état d’un bouton (pull Up)
  • Écrire des informations sur un écran LCD 16×2 ou 20×4
  • Lire des informations via le bus i2c

Pour le moment, seul le dernier point n’est pas atteint. Le but de ces tests réalisés en langage C est simple : obtenir un étalon permettant la validation des tests de l’extension PHP et éliminer les problèmes matériels.

Voici une petite vidéo du programme écrit en C.

Mon projet vous intéresse, ou vous avez des questions ? Je me ferais une joie de vous répondre dans les commentaires.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *