Aller au contenu

Utiliser le GPIO et Interagir avec le monde réel

Tuto Raspberry pi 4 ovh
Publié dans Tutoriels · 23 Février 2017
Tags: GPIORASPBERRYAPACHE

Chez lecteurs (lectrices) nous arrivons à la partie la plus intéressante, selon moi, de l’utilisation du raspberry PI.

Il s’agit de l’utilisation des ports GPIO (les 26 broches situées en haut a droite de votre raspberry). Cela ne vous évoque rien ? Et bien dites vous qu’il s’agit simplement d’une porte permettant a vos programme d’interagir avec le monde réel…

Je souhaite donc utiliser ce dernier pour gérer dans un premier temps, mon système d’éclairage, et dans un second temps, d’autres appareils et systèmes électriques de mon appart.

Comme je suis une pipe en électronique, j’ai commencé petit en construisant une “maquette” (le terme est pompeux vu la gueule de la maquette) de mon appart (aucune ressemblance avec le réel d’ailleurs) en me fixant pour défis de le piloter depuis une interface web.

J’ai réussi, et pour vous filer l’eau a la bouche (ou vous faire carrément bailler selon vos intérêts) voici une petite démo vidéo, cliquez sur l’image ci dessous pour la télécharger :

image

Pour ceux qui ne veulent pas de la vidéo, petit récap en images :

J’ai développé une interface web PHP appelée depuis mon raspberry PI qui a cette tronche :

1

Et une “maquette” papier de mon appart avec trois diodes électroluminescentes (LED) :

image

Je peux activer/désactiver une LED de la maquette en appuyant sur la zone d’état de chaque lignes :

2

image

Je peux également appuyer sur le bouton “Joyeux noël” qui m’allumera chaque diodes pendant une seconde à tour de rôle.

Notez bien que pour suivre ce tutoriel, vous devez auparavant avoir fait le tutoriel : Raspberry PI ~ 04 : Configurer en serveur ou avoir installé le serveur web apache par vos propres moyens sur le rapsberry pi

Comment j’ai fait : 1. Partie électronique…

Je me suis intéressé aux ports GPIO du raspberry PI, ce sont de petites broches (au nombre de 26) qui peuvent se comporter en entrée comme en sortie (recevoir une information ou en envoyer une) ces broches que nous appellerons PIN, ont deux états possibles : 0 (off) ou 1 (on).

2012-08-15 01.06.58

Dans la suite de ce tutoriel, nous nommerons chaque PIN par leur numéro d’ordre de haut en bas et de gauche à droite (en prenant pour repère que la carte SD représente le haut du raspberry PI)

Ce serait une erreur de penser que chaque port GPIO est utilisable, car nombre d’entre eux sont réservés à d’autres tâches que de servir d’entrée sorties pour nous pauvres mortels.

EN réalité, seuls 8 ports sur les 26 sont vraiment disponibles, ce qui nous laisse la possibilité de contrôler 8 matériels de notre appart diffèrent maximums, a moins d’acheter une carte d’extension des ports.

Voila le schéma explicatif de chacun des PIN  (source, le wiki de raspberry):

254px-GPIOs

Ça parait peut être compliqué comme ça pour les néophytes de l’électronique comme moi, mais ça ne l’est pas, voila les choses essentielles a retenir :

  • Les numéros sur le schéma ne correspondent pas du tout aux positions “physiques” des pins (c’est vrai, pourquoi se simplifier la vie après tout?) donc considérez que je vous donnerais toujours les numéro physique et ne tenez pas compte des numéro inscrit sur le schéma
  • Les pin 1 (en jaune) et 2 (en rouge) sont réservés a fournir du courant, le pin 1 fournis du 3,3 volts, le pin 2 du 5 volts
  • Le pin 6 (en noir) est la masse (donc 0 volts), on s’en servira pour fermer notre circuit
  • Les pins 7,11,12,13,15,16,18 et 22 (en vert) sont les ports que nous pouvons utiliser pour nos magouilles
  • Les autres pins sont réservés pour des trucs qui nous dépassent, si il y a un électronicien dans la salle, je l’invite a nous fournir une petite explication Rire

Donc globalement pour allumer une diode nous utiliseront ? …

Le pin de masse (pin 6 en noir) et un des pin entrée sorties (au choix 7,11,12,13,15,16,18,22 en verts).

Nous allons monter notre circuit électronique de manière simplissime comme ça :

image

On vas utiliser la broche 11 (position physique) et la mettre a 0 ou 1 (via notre programme php), lorsqu’elle sera sur 1, le courant passera dans une petite résistance de 270 Ohms (pour protéger la Led et éviter qu’elle claque) puis directement dans notre led qui s’éclairera.

Enfin le circuit sera fermé a l’aide de la broche 6 qui sert de masse.

ça c’est l’idéal, 2 différences sur mon circuit réel:

  1. Je n’ai pas de résistance, j’ai donc fait sans, ce qui rend la LED vulnérable si elle est allumée trop longtemps (j’entends déjà les électroniciens de l’assistance grogner au fond de la salle XD)
  2. Je n’ai pas branché une, mais 3 led (pour rendre ma maquette un peu plus vivante), pour se faire, rien de plus simple, j’utilise deux ports de plus et je relie tout a la masse :

image

Pour monter votre circuit, de simples fils suffisent, cependant je vous conseille très vivement d’acheter ou de dégoter quelque part des connecteurs adaptés aux broches afin d’éviter les faux contacts avec le pin, un câble d’imprimante démonté comme le mien ferait l’affaire aussi :

2012-08-15 01.08.27

pour relier l’autre bout de mes fils aux diodes, j’ai utilisé une table de connexion que j’avais acheté pour faire un peut d’électronique amateur, évidemment vous n’avez pas a investir vous aussi la dedans, c’est juste plus pratique que d’entortiller voir souder les fils autour des pattes de chaque led.

Comment j’ai fait : 2. Partie programmation

Une fois le montage électronique effectué, vous allez devoir signaler au raspberry PI  d’ouvrir ou fermer les PIN (7 11 et 12 dans mon exemple) pour allumer/éteindre les LED que vous souhaitez.

Pour  nous faciliter la vie, nous allons installer une petite librairie toute bête qui nous permettra de faire ce genre de commandes dans la console du raspberry PI :

qui signifiera : met l’état de la pin 11 à 1

Une fois cette librairie installée, nous utiliserons mon petit script gratuitement mis a votre disposition afin de donner une interface web plus conviviale a ces lignes de commandes.

La librairie se nomme wiring PI, pour l’installer depuis la ligne de commande de votre raspberry, suivez les instructions du lien.

Si tout se passe bien et que votre circuit électronique est correctement monté,  lorsque vous taperez :


Cette ligne définira le PIN 11 comme une sortie

La diode connectée a la PIN 11 devrait s’allumer, tapez alors

Pour l’éteindre Rire

Et la si vous suivez vous êtes en train de vous dire : “Attends un peu, il a mis “0” et pas “11” comme numéro de pin ?!!”

C’est juste, seulement rappelez vous que les électroniciens “adorent” les numéro de PIN “logiques” qui ne correspondent pas aux numéro “physiques”, notre pin qui se situe physiquement a la 11 eme position est représenté dans l’ordinateur comme le numéro 0

“Han mais comment savoir qui correspond à quoi maintenant?”

A l’aide d’une super table de correspondance fournie par notre amis créateur de wiringPi :

pins

Les numéros centraux sont les positions physiques des PIN, les numéro de la colonne “wiringPI Pin” sont les correspondances que vous devrez appeler dans vos lignes de commandes, le reste ne vous en souciez pas ça risque de bien vous embrouiller.

ainsi pour parler du pin 15 j’utiliserais le chiffre 3, pour le pin 12 le chiffre 1, pour le 11 le 0 etc…

“Ca vas être vraiment chiant à gérer tout ça”

C’est la que ma petite interface PHP vous facilite la vie, j’y ai intégré la table des correspondances, vous n’aurez donc à vous soucier que des positions physiques des PIN.

Mon script est disponible a l’adresse  : http://idleman.fr/ressources/PHP/pihome.zip

Téléchargez le et décompressez le dans le dossier /var/www de votre raspberry PI

Puis accédez a l’adresse internet de votre raspberry PI (en tapant 127.0.0.1 dans un navigateur si vous êtes depuis le raspberry PI ou en tapant l’adresse IP réseaux du raspberry PI si vous êtes sur un autre PC du réseau).

Si vous voulez ajouter/supprimer/modifier le nombre de LED, les ports utilisés etc… vous avez juste a modifier le fichier configuration.php aux lignes suivantes

image

Ajoutez le libellé de la led et son numéro physique de PIN associé.

C’est tout pour aujourd’hui, cette partie du rasp n’est pas facile à appréhender pour les gens qui ne viennent pas du monde informatique ou du monde électronique, n’hésitez donc pas a poser vos questions ici si vous avez le moindre soucis Sourire.

Dans un prochain tuto, nous tenterons d’agrandir l’expérience et de contrôler non pas des LED mais de véritables lampes d’appartement en utilisant le même principe (mais un tout petit peu plus d’électronique)

Edit : Si vous avez installé lightppd au lieu d'apache, ça ne fonctionnera que si vous faites la manip suivante :

Hello,
Suite à l’installation de Lighttpd, je me retrouve avec ce tuto ici qui ne fonctionne plus.
Après plusieurs heures de recherches, le problème vient du fait que Lighttpd exécute la commande system() uniquement pour les applications placées dans /usr/bin, or, en suivant ce tuto, la commande gpio est lancée à partir de /usr/local/bin…
La solution a été de déplacer « l’application » gpio dans le bon dossier, ce qui n’est pas propre du tout mais je n’ai pas trouvé comment changer le dossier dans la config du serveur.
Si ça peut en aider d’autres :)




Mentions Légales - raspberry-pi.ovh 2022 © Copyright- Raspberry Pi est une marque déposée de la Raspberry Foundation - Les contenus rédigés par raspberry-pi.ovh sont distribués sous license open source.
Retourner au contenu