Raspberry Pi : Apprendre à réaliser une lampe à LED connectée

Internet des Objets - Contrôler des LED avec Twitter

Dans ce tutoriel, vous apprendrez comment réaliser avec des LED une boule lumineuse dont la couleur d'ambiance change en fonction des tweets. Aucune connaissance préalable en codage ou en électronique n'est requise.

NDLR : ce tutoriel s'appuie sur le projet CheerLights, « un projet de l'Internet des Objets créé par Hans Scharler qui permet de synchroniser des éclairages du monde entier sur une seule couleur grâce à Twitter. http://www.cheerlights.com ».

Pour contrôler CheerLights, un tweet doit être adressé à @cheerlights ou inclure « cheerlights » quelque part dans le message avec un nom de couleur, par exemple avec le tweet : « @CheerLights Paint the town red ». Cela provoquera une réaction en chaîne qui modifiera en rouge la couleur de tout dispositif lumineux ou application contrôlés par CheerLights, en même temps.

Commentez Donner une note à l'article (5)

Article lu   fois.

Les deux auteur et traducteur

Site personnel

Traducteur :

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Configuration matérielle

  • Un Raspberry Pi connecté à Internet
  • Une carte d'extension LedBorg(1), mais à défaut, un jeu de LED rouge, verte et bleue, des résistances électriques (100 Ω, 220 Ω et 270 Ω), une plaque d'essai et des câbles feront bien l'affaire. (NDLR : encore mieux, une LED multicolore à cathode commune)
Image non disponible
Image du montage avec trois LED rouge, verte et bleue

II. Introduction

Les picots qui se dressent sur le bord de la carte du Pi (ou les deux rangées de trous à l'emplacement du connecteur GPIO sur le Pi Zero) forment une passerelle avec des objets du monde physique et permettent d'interagir avec eux. Suivez les instructions pour utiliser ce port d'entrées-sorties (ou GPIO : General Purpose Input Output) avec l'outil de programmation visuelle Node-RED(2) et réaliser quelque chose de magique dont vous pourrez faire étalage avec fierté.

Quand vous maîtriserez votre système d'éclairage à LED et ses changements de couleur, il n'y aura plus de limites dans vos applications : l'allumer quand vous recevez un tweet, l'utiliser comme feux de signalisation pour surveiller l'énergie domestique consommée, ou encore prévenir que le bus que vous devez prendre va arriver.

III. Étape 1 : installation

Avant d'allumer votre Pi, connectez le matériel. Si vous utilisez la carte d'extension LedBorg, connectez-la selon les instructions du site du constructeur. Si vous utilisez des LED classiques, connectez-les comme indiqué sur l'image précédente du montage.

Vous devrez démarrer sur la distribution Raspbian Jessie et avoir votre Pi connecté à Internet. Ouvrez Node-Red - cliquez sur Menu, Programming, puis Node-RED - et une console s'ouvrira. La console devrait afficher un message du type :

« Once Node-RED has started, point a browser at http://192.168.X.XXX:1880 »

Si vous êtes sur un Raspberry Pi 2, vous pouvez ouvrir Node-RED dans un navigateur à l'adresse http://127.0.0.1:1880, ou encore localhost:1880, à condition d'être connecté à un réseau. Si vous êtes sur une version plus ancienne du Pi, il serait sans doute plus confortable de s'y connecter à partir du navigateur d'un poste distant, avec l'adresse IP du Pi.

IV. Étape 2 : préparer le flux

Faites glisser un nœud inject depuis la section Input de la palette à gauche, et déposez-le dans la fenêtre de travail au centre. Le nom du nœud devrait changer en timestamp. Poursuivez avec un nœud debug depuis la section Output, nœud de couleur verte et qui prendra le nom msg.payload. Reliez les deux nœuds, pour cela cliquez sur le petit bouton gris à droite du nœud timestamp et faites glisser jusqu'au petit bouton à gauche du nœud msg.payload. Un fil va alors relier les deux nœuds. Cliquez sur l'onglet debug dans la fenêtre en haut à droite. Des cercles bleus au-dessus de chaque nœud indiquent que le flux n'a encore été ni sauvegardé ni déployé. Cliquez sur le bouton rouge Deploy situé en haut à droite, et les cercles bleus disparaissent. Activez l'injection de données dans le flux en cliquant sur le petit carré sur le côté gauche du nœud timestamp. Le message résultant (« payload ») apparaît dans l'onglet debug à droite (NDLR : par défaut, le temps écoulé en millisecondes depuis 1970).

Image non disponible
Node-RED : un premier flux déployé

V. Étape 3 : modifier le flux

Double-cliquez sur le nœud d'injection timestamp. Une boîte de dialogue apparaît. Déroulez la liste Payload et sélectionnez « string ». Juste en dessous de « string », saisissez « red » qui sera le message envoyé. Dans le champ « name », complétez afin de renommer le nœud en « red », puis cliquez sur OK. Déployez à nouveau puis injectez la donnée en cliquant sur le carré sur le côté gauche du nouveau nœud « red ». Le message injecté (ici, « red ») apparaît dans l'onglet debug.

Ajoutez quatre nœuds inject supplémentaires et modifiez les messages injectés en « green », « blue », « white » et « black ». Connectez-les tous à un nœud msg.payload, puis déployez.

Injectez tour à tour chacune des couleurs, les messages injectés successivement dans le flux apparaissent dans l'onglet debug.

Image non disponible
Node-RED : injection de couleur dans le flux

VI. Étape 4 : allumer les LED

Que vous utilisiez la carte LedBorg ou des LED séparées, faites défiler le contenu de la palette à gauche et faites glisser un nœud ledborg dans le flux courant. Connectez les nœuds d'injection au nœud ledborg. Déployez le flux et injectez les couleurs dans le flux en cliquant sur les nœuds, les LED devraient maintenant s'allumer de la couleur correspondante.

Image non disponible
Node-RED : nœud LedBorg

VII. Étape 5 : connecter à Twitter

Ajoutez un nœud d'entrée twitter depuis la section social dans la palette, celui avec un petit bouton à droite. Double-cliquez sur le nœud et complétez avec l'identifiant de connexion Twitter (credentials) ; vous aurez besoin de vous connecter à Twitter. Dans le champ « for », ajoutez « cheerlights ». Afin de remettre de l'ordre dans les fils de connexion, ajoutez maintenant un nœud function, puis renommez-le en « spaghetti junction ». Dans ce tutoriel, les messages traverseront ce nœud sans être modifiés, mais du code JavaScript peut être saisi pour de futurs traitements.

Supprimez tous les fils reliant les nœuds, puis refaites les connexions en reliant les nœuds d'injection de couleur ainsi que le nœud twitter à l'entrée du nœud spaghetti junction. Connectez un nœud debug en sortie du nœud spaghetti junction.

Image non disponible
Node-RED : connecter Twitter au flux

VIII. Étape 6 : extraire la couleur

Le nœud LedBorg n'accepte que certaines couleurs, et certains messages qui lui seront passés via Twitter comme « cheerlights » ne seront pas reconnus. Pour extraire les couleurs passées dans les messages, connectez un nœud switch (couleur jaune) en sortie du nœud spaghetti junction. Dans la liste déroulante de sa boîte de dialogue, sélectionnez « matches regex », puis à la suite tapez « red », et enfin cochez la case « ignore case ».

Cliquez sur « + rule » et répétez l'opération pour toutes les couleurs reconnues par le nœud ledborg dont vous trouverez la liste dans l'onglet info.

Connectez un nœud change (couleur jaune) à chaque sortie du nœud switch. Double-cliquez sur chacun d'entre eux et définissez leur nom et message à la couleur requise.

Connectez toutes les sorties des nœuds change à un autre nœud spaghetti junction, suivi d'un nœud ledborg avant de déployer. Vous pouvez avoir d'autres flux déployés sur le Pi (dans les différents onglets Sheet), mais assurez-vous qu'il y a un seul nœud ledborg de déployé et que les broches 11, 13 et 15 ne sont pas utilisées dans d'autres flux.

Image non disponible
Node-RED : le flux complet

Debugs

Ajoutez des nœuds debug pour afficher les différents messages qui parcourent le flux.

_____

Watchdog timer

Ajoutez un nœud trigger en parallèle :

Image non disponible

_____

Delay

Ajoutez un nœud delay pour limiter le nombre de messages par minute (ici, on limite à quatre messages par minute).

Image non disponible

Pour récupérer le flux complet, copiez le code JSON ci-dessous dans le presse-papiers et importez-le dans Node-RED. Pour cela, cliquez sur l'icône du menu principal Image non disponible, puis import et clipboard. Collez le code dans la fenêtre et cliquez sur OK.

Cheerlights Ledborg Orb
CacherSélectionnez
Image non disponible
Sur la photo, les LED sont recouvertes d'une balle de ping-pong percée et décorée à l'occasion pour diffuser une lumière d'ambiance colorée.

IX. Notes de la Rédaction de Developpez.com

Cet article est une traduction adaptée de l'article paru dans le n° 41 du magazine Image non disponibleTheMagPi, sous le titre Image non disponibleCheerLights Orb.

Nous remercions les membres de la Rédaction de Developpez pour le travail de traduction et de relecture qu'ils ont effectué, en particulier :

Merci également à Claude Leloup pour sa relecture orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   


LedBorg : une petite carte d'extension avec trois LED rouge, verte et bleue que l'on peut brancher directement sur le port d'entrées-sorties GPIO du Pi. https://www.piborg.org/ledborg
Node-RED : un outil open source développé par IBM permettant de mettre au point des applications IoT en un tournemain. Avec Node-RED, il est possible de gérer le flux de données de façon visuelle, en assemblant des briques (des nodes) dans l'interface. L'outil s'appuie sur des technologies issues du web, dont Node.js. Node-RED est maintenant installé par défaut sur Raspbian avec les modules supplémentaires pour interagir avec le port d'entrées-sorties GPIO du Pi. http://nodered.org/

  

Licence Creative Commons
Le contenu de cet article est rédigé par TheMagPi et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.