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

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:

  • En rouge si l’ip ne répond pas
  • En vert si elle répond.

« 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

  • La patte du milieu doit être relié a la masse comme pour une LED normale
  • La patte de droite (patte extérieure la plus courte) si elle est alimentée allumera la diode en rouge
  • La patte de gauche(patte extérieure la plus longue) si elle est alimentée allumera la diode en vert
  • Si les deux pattes (gauche et droite) sont alimentées, la diode sera à la fois rouge et vert et donnera une « lueur jaunâtre »

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:

  • Elles sont assez chères (1,03€ les 10, ok c’est pas la ruine mais pour des LED c’est cher)
    Elle ont trois pattes chacune, donc beaucoup de choses à relier quand vous avez 8 LED comme ça à brancher
    Si on compte le nombre de pattes à relier au RPI pour 8 led, ça nous fait 2*8 = 16 GPIO de pris (plus la masse qu’ont relie à toutes les pattes centrales des diodes).

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 !

  • Avantage de notre shift register :
    C’est pas cher
    C’est pas gros
    C’est assez simple d’utilisation
    Ça peut s’additionner pour multiplier le nombre de sorties indéfiniment ou presque(je vous expliquerais)
    Ça ne prends que 3 GPIO max
  • Les inconvénients :
    Ça prend tout de même 3 GPIO !!
    Ça complique légèrement le code (mais c’est pas dramatique)
    Ça ne fonctionne que pour les GPIO en sortie (donc pour les entrées il faudra prendre un autre type de shift register un peu plus complexe)

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

Le matériel :

  • Notre fidèle raspberry PI
    2 shift registers 74HC595 (je les ai commandé ici pour 3,48 les 20, vu l’utilité yen aura jamais trop)
    8 LED RV (1.03€ les 10 ici)
    Quelques fils, éventuellement une breadboard (planche à trou pour éviter les soudures) pour nous simplifier le travail, et un peu de bon sens

 

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 )

    • Récupérez le code PHP ici et placez le dans le répertoire de votre serveur http (/var/www par défaut) ce qui doit vous donner une arborescence comme : /var/www/ping/ping.php
    • Ouvrez le fichier ping.php et ajoutez les IP que vous souhaitez surveiller dans le tableau $servers en début de code, vous pouvez spécifier une IP réseau (ex : 192.168.0.10), une IP web (ex : 55.75.32.203) ou une adresse (ex : http://google.fr)
    • Ajoutez un CRON (tâche planifiée) qui vas exécuter cette page PHP toutes les minutes, pour cela tapez la commande :

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é SRCLK) qui vas ajouter le nouveau verre sur la table et pousser les autres
VALIDATEUR (en réalité RCLK) 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

Article rédigé par Idleman

74 réflexions au sujet de « Raspberry PI ~ 20 : Créer un tableau de bord connecté au net (ou comment augmenter le nombre de GPIO) »

  1. Firimeldaie

    Haaaa je savais que ça servait de trainer H24 sur ce blog :) Bravo en tout cas idleman, j’ai un pavé écrit à t’envoyer sur le tuto 10 (tu as due avoir ta boite mail spammer par mes comments désolé, mais j’ai pleins de remarques)

    Répondre
  2. Kiwii

    Bonjour, je suis depuis quelques temps le blog et je me suis penché sur les installations possibles en utilisant le raspberry comme serveur domotique. Ma question est toute bête : existe-t-il des cartes sur lesquelles souder ces shift register ? (excusez mon ignorance). Ceci dans le but de faire une installation définitive et propre. Merci d’avance :)

    Répondre
    1. Idleman Auteur de l’article

      Tu peux utiliser des protoboard : https://www.sparkfun.com/products/8812 ce sont des plaques pcb dont tu dois relier les trous, certaines sont déjà reliée à la manière des breadboard, d’autres sont totalement isolé d’un trou à l’autre, a toi de voir ce que tu préfère.

      Sinon solution plus propre : tu créé ton typon sur un logiciel comme eagle et tu commande tes plaques insolées en lignes (mais ça coûte une fortune la plupart du temps)

      Répondre
  3. NoNameZ

    SUPER !!!

    petite question, c’est dispo en vente déjà tout fait ? :D

    Répondre
    1. Idleman Auteur de l’article

      Bientôt :p, si j’arrive au bout de cette thèse et si ça intéresse deux ou trois internautes je m’amuserais peut être à vendre des ptits kits

      Répondre
  4. H3

    Classe la chemise :)

    Une question, le petit boitier avec les LEDs dedans, tu as fait ça comment ?

    Répondre
    1. Idleman Auteur de l’article

      Une feuille A4 plastifiée et un génie du pliage/collage inégalé ! :D

      Répondre
      1. H3

        Une future carrière de profs d’arts plastiques ? :-p

        Répondre
        1. Idleman Auteur de l’article

          J’avais une super moyenne la dedans au collège ! Je me souvient je renais des déchets dans une poubelle je les collais ensemble et j’essayai d’inventer un discours cohérent expliquant la signification de l’œuvre à mon prof, je crois que l’art se situait alors plus dans l’improvisation du discours quand dans l’œuvre mais bon…

          Répondre
  5. Mouflette

    Hello, super tuto! Je découvre le Raspberry depuis le début de la semaine, c’est une merveille (le RPI et ce blog :) ). En ce qui concerne le tuto, je bloque, je n’ai que les 3 premières LEDs qui s’allument (sur 7, avec 2 shift register) ; si j’enlève le deuxième et fais le test sur 4 LEDs, c’est pareil, seulement 3… Le câblage est niquel pour l’avoir vérifié plusieurs fois, les composants aussi pour les avoir changé… Me manque juste une pile pour faire marcher mon multimètre, je rage^^.
    A la base, je voulais modifier le script php pour que le RPI teste aussi des services, des nouveaux mails, etc… On verra ce WE quand je pourrais tester mes tensions!

    Répondre
    1. Idleman Auteur de l’article

      Ca ne doit pas être grand chose :), soit un courant trop faible pour alimenter plus de 3 leds, soit un branchement qui ne correspond pas au code (ou réciproquement) et qui du coup ouvre des ports du shift qui ne sont reliés à rien :), effectivement le test au multimètre peut être d’une grande aide :)

      Répondre
  6. Guillaume

    Salut,

    Je viens de découvrir ton blog (et cet univers) ce matin et depuis j’en décroche pas.
    Par contre, question débutante car je trouve pas une réponse claire.
    Quelles sont les différences entre Raspberry Pi et Arduino ? Qu’est-ce qui va faire que tu vas plutôt choisir l’un ou l’autre ?

    Merci,
    Guillaume

    Répondre
    1. Idleman Auteur de l’article

      Il y a une comparaison des deux systèmes sur le tuto 15 : http://blog.idleman.fr/?p=2161

      Le mieux état de ne pas choisir entre l’un ou l’autre mais d’allier les deux afin de cumuler la rapidité, la simplicité et le bas cout de l’un et la gestion à plus haut niveau et la puissance de l’autre

      Répondre
  7. seb1395

    Salut, je viens de recevoir les Led et les Shifts. N’y connaissant rien en électronique, aurais-tu une photo de la raspeberry avec les branchements phisyques (plutot que schématique) et où pourrais-je me procurer une breadboard et des fils? Merci beaucoup pour ton éclaircissement. Hate de commencer la programmation!

    Répondre
    1. Idleman Auteur de l’article

      Non je n’ai plus le montage sous la patte, je désassemble une fois le tuto terminé historie de réutiliser les composants pour le tuto d’après :), cela dit une photo n’aurait rien donné crois moi c’est toujours plus clair en schéma :) (sinon tu peut regarder sur la vidéo).

      Tu peux te procurer la breadboard et les fils : http://forum.idleman.fr/discussion/2/electronique-breadboard

      Répondre
  8. rodnugent

    Il n’y a aucune résistance de limitation du courant, donc les sorties du registre fonctionnent à donf, il doit chauffer comme un brasero, il va finir par cramer en entraînant les Leds rouges dans son sillage (le seuil des vertes est plus élevé, mais elles prennent bien quand même). Evidemment, ça fonctionne pour l’instant, mais ça ne durera pas.*

    Répondre
    1. Idleman Auteur de l’article

      Oui je ne met jamais les résistances sur les LED et je sais que ce n’est pas bien :), je n’ai pas le matériel qu’il faut et je me contente de proposer des montages à améliorer comme je l’ai plusieurs fois spécifié au longs de mes tutos, aussi n’hésite pas à proposer des solutions dans les commentaires pour améliorer les circuits, ça eux en aider plus d’un :)

      Répondre
  9. Valentin

    Pourquoi ne pas utilisé un Mux/Demux a la place ?

    j’ai que des connaissances théorique (les joies d’apprendre l’électronique sur simulateur).
    merci
    Valentin

    Répondre
    1. Idleman Auteur de l’article

      Réponse au choix :
      Réponse A. Parce que je ne connais pas Mux/Demux
      Réponse B. Parce que de ce que j’en ai vu ça me semble plus compliqué, plus cher et moins approprié
      Réponse C. Parce que si j’avais utilisé Mux/Demux on m’aurait demandé « Pourquoi ne pas juste utiliser un shift register »
      Réponse D. La réponse D

      :D

      Répondre
  10. jbam

    Merci merci pour ce tuto très pratique (je viens juste de tomber dessus) je débute sur le raspberry et dans le bidouillage électronique .
    Je me suis mis dans la tête de réaliser un cube LED piloter par le pi (et oui des fois mon cerveau deviens fou :) )
    et maintenant je comprend mieux comment gérer beaucoup de sortie . MERCI
    Bien sur si vous avez plus d’explication sur ce genre de construction je suis preneur ^^

    Répondre
    1. Idleman Auteur de l’article

      J’ai toujours voulu en faire un moi aussi ^^, je m’y mettrais un jour (*un jour ou j’aurais du temps, soupir*) je ne peux pas t’en dire plus sur le sujet mais si tu habite près de bordeaux on à un expert des branchements en lignes de led au hackerspace :)

      Répondre
      1. jbam

        merci pour la proposition mais je suis un peu loin ^^
        bon je viens de commander tous le matériel pour faire un 4*4*4
        je vais prendre une grande série de photo et écrire un tuto
        donc si cela t’intéresse je pourrais le partager .
        mais faut pas être presse car je fais cela sur le peu de temps libre que je possède :)

        Répondre
        1. Idleman Auteur de l’article

          Evidemment que le partage nous intéresse :), j’ai ouvert une section sur le fofo pour ça dès que tu aura quelque chose de construit n’hésite pas à y poster :)

          Répondre
  11. Kelias

    Simple question, est il possible d’utiliser les pin 12,13 et 14 ( d’apres WiringPi, soit les 19,21,23 physiques) pour le shift register ?

    Répondre
    1. Idleman Auteur de l’article

      Techniquement tu peux utiliser les pin que tu veux, mais je te conseille de te cantonner à ceux qui sont GPIO, de manière à laisser les pin serie, UART, I2C etc libres pour des applications futures

      Répondre
  12. Daniel

    Salut à toi, grand maître du RPI !
    Ton blog est juste génial! J’ai commandé mon RPI hier et je deviens déjà fou en l’attendant!
    J’ai une question: je veut l’utiliser(entre autres) pour faire un miroir entre deux disques dur réseaux… Penses-tu que cela soit possible?
    Gros bisous d’un électronicien qui aura quand même deux mots à te dire sur certains articles… lol

    Répondre
    1. Idleman Auteur de l’article

      Oui je pense que c’est possible, je te conseille d’attendre le tuto de geoffrey enjolras qui devrait sortir sur ce blog sous peu, il fait un raid entre deux disque je crois (ou du moins une sauvegarde) via le rpi, alors j’ignore si ça passe par le réseau mais tu pourra au moins t’en inspirer :)

      Répondre
      1. Daniel

        Merci pour cette réponse et pour ton blog !
        Je n’ai pas encore eu le temps de tout lire, mais c’est prometteur !!

        Répondre
  13. jef

    Salut !
    Tout d’abord énoooorme merci pour tous ces tutos, j’en use et en abuse, le degré de WAF de ma copine devient dangereusement bas :D
    J’ai suivi avec succès tes tutos (sais plus les numéros) concernant les ondes radios et les leds et je voudrais faire de même pour celui-ci :p
    Par contre, le lien vers Ebay est mort :-( (apparemment ça arrive souvent). J’ai trouvé d’autres leds mais soit le prix de livraison est 2 fois supérieur à celui des leds soit ce sont des RVB où là ça risquerait de compliquer les choses (je suis une bouse en électronique j’ai découvert la plaque de prototypage y a 2 jours :D).
    Est ce que tu aurais un autre lien ?
    Merci

    Répondre
    1. Idleman Auteur de l’article

      Pas sous la main non, mais j’aurais cherché sous ebay aussi ^^, essaye avec les filtres « dans le monde entier + achat immédiat + tri par prix + livraison les moins chers » généralement ça donne de bons résultats :)

      Répondre
  14. Nico33

    Salut et encore une fois, un super blog très inspirant ! Grâce à toi, j’ai pu domotiser toute ma piscine et mon portail (pompe, rideau, lumière et ouverture du portail) ce qui était inaccessible à cause de la trop forte distance pour le zwave.
    Je voudrais donc étendre les GPIOS mais en entrée aussi. Tu conseillerais quel modèle de shift register ?

    Répondre
    1. Idleman Auteur de l’article

      Je n’en connais pas de particuliers ^^, je sais juste que tu peux en trouver de bien plus performants que celui présenté dans ce tutos, mais le prix augmente ^^ après tout dépends de tes besoins :)

      Répondre
  15. Doudou

    Tout d’abord je tiens à dire que ce blog est juste énormissssiiiiiiimmmmmmmmme. Le saint Gral du RPi si je puis dire.

    Ensuite, j’étais également à la recherche du ShiftReg en mode I/O. Je suis tombé sur ce lien
    http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/two.html
    si cela peut également servir à quelqu’un d’autre.

    Ps: j’en suis au stade « je branche la led directement sur le gpio » mais ce week-end j’ai faist chauffé la carte de crédit. J’attends les livraisons comme un enfant attend le père Noël !!!!

    Question, un tuto pour la communication xbee à l’horizon ?

    Bonne soirée à tous.
    Dou

    Répondre
    1. Idleman Auteur de l’article

      Non le xbee n’est pas prévu, c’est trop cher pour rentrer dans le cadre de mes tuto domotique & low cost, et il y a déjà énormément de tuto la dessus un peu partout sur le web :).

      Répondre
  16. nitrosurf

    Salut idleman
    je tente de reproduire ton tableau de bord, mais je bloque sur un truc bete
    les led rv ont 3 pattes, or sur le schema il n’y a que deux pattes représentées
    je branche les pattes centrales sur la masse, je branche la patte longue sur une patte « gpio » du shift register, par contre la derniere patte de la led, je ne sais pas ou la brancher.
    je pense à la patte « valeur » sur ton schema , ce qui voudrais dire que toutes les led sont reliées à la meme patte (valeur) du shift register?
    peux tu confirmer le branchement
    merci d’avance

    Répondre
    1. Idleman Auteur de l’article

      Effectivement j’ai merdé sur le schéma j’avais pas vu dsl.

      en gros pour reproduire la boite de monitoring, il faut que tu utilise 8 led (et non 16) à 3 pattes avec
      – la patte centre branchée au ground
      – la patte de gauche branchée sur le shift register 1
      – la patte de droite branchée sur le shift register 2

      Répondre
  17. Petit_Champignon

    T’as l’air très sympa comme gars, puis pas prise de tête.

    Puis j’aime bien ta voix et ton prénom. Valentin.

    <3

    Répondre
    1. Idleman Auteur de l’article

      Commentaire aussi étrange qu’agréable merci :) (mais je précise que je suis hétérosexuel :p)

      Répondre
  18. Zeverybest

    l’idée me plait bien

    Il y a cependant un truc qui me choque dans ton script PHP
    Je n’ai peut etre rien compris, mais dans le script, tu valides par SRLCK apres chaque passage de la boucle ?

    J’aurai eu tendance a fixer la valeur de chaque sortie, faire un suivant (RCLK) apres chaque valeur, et une validation (SRLCK) a la fin de la boucle

    Pourquoi cette methode?

    Répondre
  19. TobiasBora

    Bonjour,

    Premièrement merci beaucoup pour ce tuto, il m’a permis de comprendre pas mal de choses que j’avais mal compris dans la datasheet du shift register. J’ai deux petites remarques/questions :

    1) Dans le code php, tu as écris
    ————————————————-
    //Définis le numéro wiring PI du GPIO du raspberry PI qui est branché à la patte RCLK du shift register
    DEFINE(‘RCLK_Pin’,6);
    // …
    function writeRegisters(){
    digitalWrite(RCLK_Pin, LOW);
    for($i = numOfRegisterPins – 1; $i >= 0; $i–){
    digitalWrite(SRCLK_Pin, LOW);
    $val = $GLOBALS[‘registers’][$i];
    digitalWrite(SER_Pin, $val);
    digitalWrite(SRCLK_Pin, HIGH);
    }
    digitalWrite(RCLK_Pin, HIGH);
    }
    ————————————————-
    Comment se fait-il que ce soit le pin RCLK (= suivant) que tu ouvres pour valider, et que tu décales avec SRCLK (= valider) ? Je crois que le code fonctionne parce que tu as aussi inversé le nom des entrées (l’entrée RCLK est branchée en fait sur le pin SRCLK), mais je voulais en être sûr.

    2) J’ai essayé un branchement semblable, mais je me suis heurté à un problème : lorsque j’alimente le shift register en 5V, la différence de potentiel entre l’entrée 3.3V et le 5V (3.3 < 0.7*5 V) fait que le shift register à un comportement totalement aléatoire (parfois il détecte bien l'entrée comme un H, parfois non…). J'ai donc essayé d'alimenter en 3.3V avec un port GPIO, ça fonctionne a merveille, mais on m'a dit que ces ports n'étaient pas fait pour fournir de la puissance et que c'était dangereux pour ma rasperberry. De plus j'ai besoin d'alimenter une centaine de LEDs, donc il faut que j'alimente mes shift registers avec une alimentation externe (je vais prendre un adaptateur secteur/usb) qui elle aussi est en 5V. Comment ce fait-il que tu n’ais pas eu de problème à ce niveau ? As tu une solution pour ce problème ?

    3) (un peu hors sujet) J'ai fait le calcul et avec mes 100 LEDs, j'ai besoin d'environ 2A de courant… Ce qui fait beaucoup ^^ Est-ce qu'en alimentant les LEDs unes par unes pendant un temps très court le résultat visuel sera le même, ou est-ce que si je les alimentent moins fréquemment elles brilleront moins fort de toute façon ?

    Répondre
  20. Jo

    Bonjour,

    câblage fini près à tester le code,
    merde un .rar,
    j’ai pas unrar,
    j’installe unrar :
    Extracting ping/ping.php Failed
    1 Failed

    C’est moche je ne trouve pas le bout de code autre part.

    Ma question: pourquoi rar c’est devenu rare non ? :)

    Répondre
    1. Idleman Auteur de l’article

      C’est pas faux, j’ai mis le lien en zip :)

      Répondre
  21. Lutty

    Salut Idleman,
    Ton blog m’inspire beaucoup, j’aurai juste une suggestion pour l’utilisation des shift register.

    La fonction system de PHP est très longue à s’exécuter. Point de vu performance je te conseillerai de t’appuyer sur un script shell de type :
    —————-
    #!/bin/sh
    /usr/local/bin/gpio write 6 0
    for i in $*
    do
    /usr/local/bin/gpio write 5 0
    /usr/local/bin/gpio write 7 $i
    /usr/local/bin/gpio write 5 1
    done
    /usr/local/bin/gpio write 6 1
    —————-
    Et tu passe en paramètre les valeurs que tu veux attribuer (de 0 a 255 valeur mais dans ton cas 16)
    exemple : ./control.sh 0 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1

    Du coup tu limiterai énormément tes appels à la commande system (Au lieu d’appeler 16*3 fois la commande system, je l’appelle une fois :p)

    Point de vus performance je suis passer de 2 secondes pour mettre a jour les 16 pins a 80ms ;)

    Répondre
    1. Lutty

      Petite correction après debuggage je suis a 500 ms, mais c’est toujours 4 fois moins long ;)

      Répondre
    2. Idleman Auteur de l’article

      Oui, c’est une idée intéressante, généralement pour les projets qui ont besoin de réactivités j’utilise du cpp plutôt qu’un shell :)

      Répondre
  22. Bastien

    Ca serait pas mal d’avoir un petit plugin yana pour gerer les shift ? :)

    Répondre
    1. Idleman Auteur de l’article

      Tu sais ce qu’il te reste à faire :D ! (hé hé hé)

      Répondre
  23. Marc

    Salut et merci pour ce tuto bien sympatique !
    Cela dit, je rencontre un petit problème pour récupérer le code, impossible de le télécharger :/
    Peux-tu le remettre stp ?

    Répondre
    1. Idleman Auteur de l’article

      Normalement c’est bon, peux tu réésayer ? :)

      Répondre
  24. Marc

    Et re-salut !
    Alors j’ai fais quelques tests, brancher tout tel que je l’avais compris (donc pas forcément bien du coup :P).
    Si j’ai bien capté dans le fichier ping.php, la patte longue d’une première diode doit être relié sur le “1er” shift register à l’entrée 1 et sa patte courte toujours sur le “1er” shift register à l’entrée 2 et ainsi de suite. Ce qui fait que la 4ème du “1er” shift register verra ses pattes longues et courtes respectivement en 7 et 15, tout ça, si j’ai bien compris :P

    Alors finalement j’ai trouvé où ça clochait (enfin je pense).
    Il y a du avoir une maj de wiringpi ou tu t’es trompé d’une case sur le schéma du raspberry :o
    Pour le pin7, il faut qu’il soit un pin plus loin sur la droite quand on regarde ton schéma.
    Merci en tout cas pour ce super tuto.

    Répondre
  25. Papillon

    Bonsoir !
    Je suis débutant en RPI et je me demandais si ton petit composant miracle (shift) pouvait augmenter le nombre de sortie PWM et si oui comment le brancher ?
    Papillon

    Répondre
  26. Guillaume

    Bonjour!

    Voila je me suis lancé depuis peu dans la robotique / domotique sous raspberry pi.
    Je programme et je bidouille depuis quelques temps maintenant, et je tiens d’abord à préciser que vos travaux m’ont beaucoup aidé!

    J’ai cependant remarqué une contradiction entre le code fournit sur votre lien (ping.php) et le shéma que vous décrivez sur le blog (à cette même page).

    Vous écrivez ici:
    RCLK = Suivant
    SRCLK = Validateur

    MAIS si on regarde le second schéma qui présente les noms « scientifiques » des pattes, on s’aperçoit que la correspondance est en fait la suivante:
    RCLK = Validateur (et non Suivant)
    SRCLK = Suivant (et non Validateur)

    Le code « ping.php » confirme ce fonctionnement lorsque l’on étudie la fonction « writeRegisters() ».
    Bref, si je tiens tant à vous signalez cette contradiction, c’est que je me suis moi même emmêlé les pinceaux à la première lecture xD
    Voila voila! Une petite modif et cette page sera parfaite!

    Bonne continuation, et merci pour les tutos, votre travail m’a évité bien des tracas, car le web est vaste, et pas évident de trouver des tutos simples et aussi facilement adaptables qu’ici. Vous nous « machez le travail » en nous proposant des raccourcis bien pratiques, vous donnez des pistes d’améliorations, vous proposez des idées, et vos explications sont claires. Bref, à mon point de vue une des références du net sur le sujet « raspberry », un grand bravo!
    Cordialement, Guillaume.

    Répondre
    1. Idleman Auteur de l’article

      Bien vu l’aveugle (le chauve était de mèche dit le muet au sourd…) !! Ce fonctionnement était initialement bon, mais un lecteur m’as ensuite induit en erreur, et dans ma grande paresse je n’ai pas vérifié avant d’éditer ! merci encore pour cette remarque, c’est modifié :)

      Répondre
    1. Idleman Auteur de l’article

      Oui, pour les avoir testé les chinuido sont identiques en tout point aux ardui, sauf pour la couleur et le prix :)

      Répondre
      1. Florian

        Yes! Merci!
        Je l’ai eu à 4.90€ sur ebay en enchère il y a 1 semaine.
        (Je n’ai pas pu résister :))
        Merci bien en tous cas ;)

        Répondre
  27. Lucas Maurice

    Salut idle, et merci pour tes magnifiques tutoriels.

    J’ai remarqué sur le schema du shift register une broche VCC, est ce qu’il est possible d’utiliser une alimentation externe a notre précieux ordinateur, pour éviter de trop tiré d’intensité et de le faire planter ?

    Merci d’avance, Lucas

    Répondre
    1. Idleman Auteur de l’article

      Très honnêtement je n’en sais rien mais je suppose que c’est possible en fonction du modèle utilisé :), normalement ça doit être spécifié sur la datasheet :)

      Répondre
  28. raspitef

    Bonjour,
    Malgré mes efforts, je n’arrive pas à exécuter le script php via crontab.

    j’ai raspbian, php5 et php5-cli, le propriétaire de tout le dossier www est root chmodé en 755.

    j’ai essayé un tas de conf pour le crontab mais mes leds ne s’allument pas automatiquement

    Si quelqu’un a une solution elle est la bienvenue. Merci

    Répondre
    1. Idleman Auteur de l’article

      Tu a mis un log sur ton cron voir si il s’execute bien ?

      Répondre
  29. flo

    Bonjour,

    Vraiment très cool ton site, une mine de bonnes informations … continue!
    Je souhaite domotiser mes 8 volets rolants (dans un premier temps) à base RPI.
    Il faut donc 16 GPIO …. ou une carte de 16 relais … mais elles sont cheres.
    Du coup, j’ai compris qu’il me fallait un truc du genre :
    RPI
    + breadboard
    + shift register
    + 2x carte 8 relais 5v 10A
    Par contre, impossible de trouver un schéma de ce genre de montage … quelqu’un en a un sous la main (je ne pense pas etre le seul ni le premier ) ?

    Répondre
    1. Idleman Auteur de l’article

      C’est ça ! :)
      Reprend le tuto sur les shifts register et au lieu de relier des led tu relie aux pins digitaux de tes relais, tout simplement :)

      Répondre
      1. Nicogluck

        IDEM pour moi !

        J’ai même deux cartes de 16 relais à piloter.
        J’ai bien suivi le tuto (merci et bravo encore), mais j’utilise Domoticz. Je ne vois pas trop comment intégrer ce système dans le soft qui tourne sur le Raspberry.

        Si quelqu’un a une idée, je suis preneur !

        Répondre
  30. Cocop4p's

    Salut,

    Petite question. Je sais pas si ça a déjà été dit.
    Peut-on utiliser d’autres gpio du RPi ?
    Si oui n’importe lesquels ?

    Merci.

    Répondre
  31. Mathieu

    Bonjour à tous. Je découvre ce site très intéressant, un énorme merci à l’auteur.

    Je voulais vous parler d’une autre méthode qui ne coûte qu’une poignée de composants et qui permet d’ augmenter le nombre d’entrées. Il s’agit de coder l’entrée considérée à l’aide de diodes (des vulgaires 1N4148 feront parfaitement l’affaire) selon ce schéma : http://i39.servimg.com/u/f39/18/87/29/50/mux_gp10.jpg

    Les entrées sont numérotées de 1 à 7 et les GPIO de A à C.

    Attention, avec ce montage, UNE SEULE entrée doit être sollicitée à la fois, sinon, le résultat ne sera pas cohérent.

    Les 3 résistances à droite sont des pull down, je ne sais pas si elles sont nécessaires sur le PI, les connaisseurs confirmeront, je découvre tout juste la bêbête !

    NB : excusez le côté ‘paint’ du schéma, je n’avais que àa sous la main !

    Répondre
  32. EMERIAUD

    bonjour,

    petite question idiote : on fait comment pour télécharger le dossier ping et et me mettre dans /var/www ?

    merci d’avance. oO

    Répondre
    1. vandercoff

      j’ai trouvé la réponse dans un autre des tuto.

      Répondre
  33. vandercoff

    bonjour à tous et merci pour le tuto qui fonctionne bien chez moi.
    je souhaiterais piloter 4*7 leds via le raspberry pi grâce à un programme en C et le seul problème est que je n’arrive pas à adapter ton programme php en programme C malgré mes heures de recherche sur internet.
    En gros je cherche de l’aide pour débuger mon semblant de programme.

    cordialement.

    Répondre
  34. vandercoff

    bonjour à tous. et merci pour ce tuto je voudrais piloter 4*7 leds grâce aux shift registers. quelqu’un pourrais m’aider a débuger mon programme en C ? adapté du programme php ?

    merci d’avance.

    Répondre
  35. Daniel FERMONT

    Salut à toi, ô grand maître de la framboise!
    Je sais que j’arrive après la guerre, mais, en tant qu’électronicien, je t’annonce fièrement que tu peut gagner la moitié de tes pinouilles de sortie sur ce montage !
    En effet, avec un montage à 2 transistors par sortie (1 NPN et 1 PNP), tu peut allumer la led verte sur un état haut de ta sortie, et la rouge sur l’état bas ! (ou l’inverse, je ne suis pas raciste)
    N’hésite pas à me contacter si tu veut un schéma !
    bisous framboiseux !

    Répondre
    1. Idleman Auteur de l’article

      Merci pour cet ajout :). C’est une bonne solution pour économiser du pin :D

      Répondre
  36. Vivien

    Juste une petites question car je compte réaliser ce montage en le soudant directement a une tablette d’essais,
    je souhaite savoir si sur le 1er SM c toute les led verte et sur le 2eme toute les led rouge? ou bien c une verte un rouge une verte une rouge ect…?
    (SM1 Gauche SM2 Droite)
    en tous cas c tuto son juste géniaux merci beaucoup ^^

    Répondre

Laisser un commentaire

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

Xo ^_^ :siffle: :p :-( :evil: oO :) T_T <3 :D more »