PROJET AUTOBLOG


Idleman

source: Idleman

⇐ retour index

Raspberry PI ~ 20 : Créer un tableau de bord connecté au net (ou comment augmenter le nombre de GPIO)

samedi 4 mai 2013 à 12:33

Ce post est le vingtième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

Yop bande de trous d’nez !! (je m’en lasse pas de celle la !)

Ca fait un moment qu’on a rien bricolé d’inutile concernant le raspberry PI !!

C’est ma faute: je glande sur une thèse aussi useless que chronophage et que personne ne lira (et tant mieux aux vues de son contenu :D ) et puis accessoirement je roupille au soleil (voila pour la petite vie d’idle).

Pour passer le temps je vous propose tout de même un petit exercice de style :

On vas allumer et éteindre des diodes avec le rpi !

“Hé Idle tu nous prendrais pas pour des billes ?! On l’a déjà fait en tuto 6 !!”

C’est complètement vrai !! (c’était pour voir si vous suiviez) mais cette fois ci ce sera un peu différent :)

Nous allons construire un petit “tableau de bord” lumineux qui vas nous avertir de l’état de nos divers serveur, blog, site web, machines connectées au réseau (imprimantes,téléphone,fax etc..) en temps réel ! Chez moi ça donne ça :

image

L’objectif est donc de relier plusieurs diodes au rpi et de créer un système de “ping” (pour que la génération facebook me comprenne : c’est comme un “poke” mais pour les machines :p) régulier qui vas aller interroger certaines ip et allumer les led:

“Mais l’exercice est très simple, nous savons déjà le faire! C’est quoi l’intérêt?”

Hé bien premièrement un collègue m’a un peu taquiné sur le sujet, donc mon intérêt direct et de lui prouver qu’un IdleNaute n’est pas une trompette ! Rire (ok ça vous avance à rien mais j’ai ma fierté merde ^^)

Et deuxièmement ça vas introduire la venue de deux nouveaux éléments électroniques intéressants !

Mais d’abord le petit quart d’heure de honte traditionnel :

(Vous noterez ma toute nouvelle maîtrise de montage vidéo, c’est quasi rien mais chuis super fier de moi :D , quand on regarde la première vidéo de cette série de tuto on se dit que je suis partis de loin)

Vous l’aurez peut être remarqué, nous utilisons ici des LED qui ont la particularité de pouvoir afficher deux couleurs : vert et rouge.

Ce petit composant est assez intéressant en plus d’être très simple à utiliser, 3 pattes :

led

Ce composant est donc très intéressant et enfantin à utiliser, notez qu’il existe aussi des diodes dites RVB qui vous permettront
d’utiliser trois vrais couleurs : vert, rouge et bleu.

Nous nous contentons ici des RV (rouge vert) parce que c’est un peu moins cher, plus simple à utiliser et que ça suffit aux  besoins de l’exercice, nous reparlerons des RVB dans un prochain tuto de toute manière :) .

Mais je digresse !! revenons à nos diodes RV !!

Celles ci sont donc formidouble (doublement formidables) mais ont tout de même quelques inconvénients:

Pour le premier problème, il y a ebay, pour le second : l’huile de coude et pour le troisième : les shift registers !

“Nié ! shift what?”

C’est le second élément nouveau dont je vous parlais (le premier étant la diode RV évidemment).

Pour faire simple, un shift register est un composant électronique tout plein de papattes qui permet de multiplier vos sorties GPIO et ce, quasiment à l’infinis.

74hc595n-dscn3898

Avec le shift register que nous allons utiliser par exemple, nous n’auront besoin que de trois sorties GPIO du rapsberry PI pour simuler les 16 GPIO dont nous allons avoir besoin avec les LED.

Inutile donc de vous spécifier que dans le cadre de notre projet domotique qui pompe pas mal de GPIO, c’est un gros plus !

Assez déblatéré comme un chauve à lunette de la fac ! Il est temps de mettre les patounes dans l’cambouis !!

Le matériel :

 

Le schéma de branchement

Je tiens à préciser que j’ai honteusement pompé puis mutilé un fabuleux schéma de zem.fr pour l’adapter au rpi et vous l’afficher ci dessous, merci à lui pour ses explications sur le shift register (au passage si vous aimez l’arduino allez visiter le blog il rox du pathé comme on dis chez moi) Sourire.

 

03

L’explication sur le shift register se trouvent en fin de tuto (je ne veux pas vous embrouillez tout de suite :p, mais j’vous ai prévu un mega dessin z’allez voir ! )

Code et Installation

Vous devez déjà avoir un serveur http (apache ou lighttpd peu importe) et PHP installé (si ce n’est pas le cas suivez le tuto 4)
Vous devez déjà avoir installé la librairie wiring PI (si ce n’est pas le cas suivez le tuto 6 )

sudo crontab -e

Et ajoutez la ligne :

*/1 * * * * php /var/www/ping/ping.php

Les diodes devraient se mettre à jour toutes les minutes en fonction des IP configurées, n’hésitez pas à lancer le script manuellement depuis votre navigateur (http://adresse.du.rpi/ping/ping.php) dans le cas ou ça ne fonctionne pas avec le cron :) .

L’explication

La tâche planifiée (le cron) qu’on à mis en place vas exécuter toutes les minutes le fichier php contenant notre code.

Le fichier php vas, interroger chaque IP que nous avons renseignées pour savoir si elles “répondent”.

On part alors du principe qu’une LED vas représenter la réponse d’un IP :

Si l’ip répond:  PHP vas mettre un port GPIO du shift register à 1 qui correspond à la couleur verte de la led liée.

Si l’ip ne répond pas:  PHP vas mettre un port GPIO du shift register à 1 qui correspond à la couleur rouge de la led liée.

“Tout ça c’est bien beau mais on ne comprends toujours pas comment manipuler un shift register !!”

Tu as raison jeune trublion !! Rire J’ai gardé le meilleur pour la fin !! Tire la langue

Comme c’est un concept (pourtant simple) qui ne cadre pas avec mon cerveau étriqué, j’ai fait un petit dessin pour que mes semblables trépanés du bulbe et moi on se comprenne, mémorisez bien la petite histoire suivante :

02

 

J’espère que vous avez adoré l’histoire (je sort une BD en 2014, je crois que j’ai de l’avenir dans cette branche XD) et que vous n’avez pas trop vomi Sourire.

Outre la qualité affligeante de cette image (sur laquelle j’ai pourtant bien passé 20 minutes) on notera qu’elle représente le fonctionnement exacte du shift register (du moin tel que je l’ai compris ^^), je m’explique :

Le shift register (la table) a 8 GPIO (8 Verres) qui peuvent être à 0 (vide) ou a 1 (plein).

On a pas le droit de toucher aux verres sur la table, pour modifier l’état d’un verre, on ne peux qu’en rajouter un nouveau (le fameux todd) en lui définissant une valeur (vide ou plein).

Sauf qu’en rajoutant Todd le verre, on pousse les autres et le dernier se fait éjecter de la table (die stupid glass ! die !!).

Il vas nous falloir trois “bouton” pour effectuer cette action : un bouton pour remplir ou laisser vide le verre, un bouton pour ajouter le nouveau verre sur la table (et donc pousser les autres) et un dernier bouton pour “valider” la nouvelle configuration de la table Sourire

3 bouton = 3 pattes du shift register branché au raspberry PI, il ne nous en faudra pas plus pour ouvrir/fermer les 8 GPIO du shift register de cette façon Sourire.

Maintenant voyons un ptit schéma simplifié du composant :

01

Si vous êtes comme moi vous allez vous demander en premier quel esprit démoniaque a pu penser que mettre tout les gpio d’un coté SAUF UN était pertinent… faut vraiment être le fil de personne pour imaginer des puces comme ça oO !  M’enfin :) !

Donc à ce stade je ne vous ferait pas l’affront de vous expliquer à quoi correspondent les GPIO, la MASSE et L’ALIM (si vous ne savez pas, retour au tuto 1 Tire la langue).

Les trois boutons dont nous parlions sont :

VALEUR” (en réalité nommé SER) qui vas remplir ou non le nouveau verre.
SUIVANT” (nommé en réalité RCLK) qui vas ajouter le nouveau verre sur la table et pousser les autres
VALIDATEUR (en réalité SRCLK) qui vas prendre en compte la nouvelle configuration Sourire

“Et “CONNECTEUR” alors ? Il sert à quoi?”

Il vas nous permettre de brancher d’autres shift register au premier, ce qui donnera l’équivalent d’un gros shift register de 16 GPIO avec deux shift de 8 par exemple Sourire.

CONNECTEUR devras être branché au VALEUR du shift register ajouté, il est possible de rajouter autant de shift les un sur les autre que vous le souhaitez, évidemment au bout d’un moment vous risquez d’avoir quelques problèmes de lenteur et d’alimentation si vous ne savez pas vous arrêter ^^ (je vais tapisser mes murs avec des shift register et dominer le mmooonde niark niark niark!!!).

“Et les papattes dont tu ne nous à pas parlé ?”

Dans notre contexte,elles sont un peu useless, disons qu’elles ont une fonction utile, mais que prendre un précieux gpio de plus sur le rasp pour ça c’est pas forcement nécessaire,voila le schéma avec les vrai nom des pattes :

74HC595-Shift-Register

 

(ça calme tout de suite hein ? :D )

SRCLR dont nous n’avons pas parlé, peut être passé en High puis low afin de remettre toute les pin du shift registrer à 0 (ce qui peut aussi être fait manuellement avec les 3 pin dont nous disposons déjà, d’ou le “un peu useless”)

OE quand à lui permet d’activer la sortie lorsqu’il est sur la masse (GND) et la désactive lorsqu’il est en High, on le laisse donc toujours branché à la masse.

C’est tout pour aujourd’hui ! Sourire Vous l’aurez compris, le principal intérêt de ce tuto est d’abord la notion de shift register qui vas nous permettre de jouer avec plus de GPIO sans trop d’efforts Tire la langue.

Notez qu’il existe plein de type de shift register, certains ont beaucoup plus de sorties, d’autres peuvent se comporter en entrée et en sortie (relativement pratique) etc etc..

Je vous conseille de vous en trouver un qui soit simultanément en entrée et en sortie et qui puisse se “stacker” à d’autre de ses confrères comme celui que nous avons vu, puis de vous créer une ptite carte à brancher sur le raspberry PI pour multiplier définitivement ses entrées sorties par “x” Sourire

Bien à vous,

Idle