Matrice de LEDs (ws2812) pour Noël

Les fêtes arrivent et vos voisins vous lancent des défis pour les décorations de Noël. Et comme vous êtes compétiteurs dans l’âme, vous acceptez le challenge… En tout cas, c’est ce qui m’est arrivé cette année. Du coup, j’ai réfléchi longuement sur ce que je pourrais faire pour me démarquer. Bien entendu, un truc à faire soi-même.

En naviguant et faisant des recherches, je suis tombé sur un concept qui m’a plu:

Faire une matrice de LEDs pour en faire une « sorte d’écran ».

Achats

Pour effectuer une matrice de LEDs vous aurez besoin de :

1x  Bandeau de LEDs à base ws2812 panier-acheter-ecommerce-shopping-icone-8314-4838.88€
 1x  1 NodeMcu ou Arduino panier-acheter-ecommerce-shopping-icone-8314-486.5€
 1x  Alimentation 5VDC 2/3A panier-acheter-ecommerce-shopping-icone-8314-4810.99€
 1x  1 dalle de plexiglass blanc panier-acheter-ecommerce-shopping-icone-8314-4819.5€

Vous aurez en plus besoin de cartons (pour faire la matrice par exemple), de la colle chaude, du fil électrique, une station de soudage et de l’étain.

Total ~= 75€

Réalisation

Pour bien comprendre comment la matrice va fonctionner, je vais vous faire brièvement faire la description de la LED de type WS2812 qui compose le bandeau:

Ce type de LED est muni d’un driver intégré qui permet la gestion des couleurs et de la luminosité. Elle permet aussi d’être adressée (c’est fait de manière transparente, la première LED après le micro est adressée en 1 puis 2, 3, etc …), ce qui vous permet sur un bus type « série », de cascader autant de LEDs que possible. Mises en série, sur un bandeau, vous pourrez piloter indépendamment toutes les LEDs, avec pour chacune, une couleur et une luminosité distincte.

Pour fonctionner, il faut alimenter la LED avec du 5VDC comme pour le bus de données (on verra que l’on peut mettre moins sur des courtes distances). D’ailleurs, Le bandeau de LED possède en entrée :

  • un VIN
  • un DIN
  • un GND

En sortie:

  • un VOUT
  • un DOUT
  • un GND

Le bandeau de LEDs que j’ai acheté mesure 5 mètres avec 30 LEDs / mètre. Ce qui nous fait 3.3cm entre chaque LED. Ces dimensions vous donnent donc la taille d’un pixel 3.3cm².

Du coup, j’ai décidé de faire une matrice de 15pixels X 10 pixels.

Il faut prévoir un carton (assez rigide ou prendre une plaque de medium fine) de 50cm X 33cm.

Découper votre bandeau toutes les 15 LEDs au bon endroit (voir l’intersection sur la photo).capture

Vous obtenez donc 10 bandeaux de 15 LEDs à placer sur votre carton. Vous remarquerez aussi que sur le bandeau, il y a une indication très utile, le sens des LEDs. En effet, il faut respecter un sens pour le bus de données de sorte que la sortie de l’élément N soit reliée à l’entrée de l’élément N+1.

Pour relier les 10 bandeaux, j’ai choisi de les placer de manière horizontal en mode « ZigZag » ce qui me permet d’économiser du fil et respectant une certaine logique (la même que la lecture occidentale)

Il faut donc souder le GND avec le GND le 5V avec le 5V et le DO avec le DI et vous obtiendrez le résultat suivant :

Bandeaux LEDs Ws2812 en matrice

Afin d’améliorer la tenue et éviter les dessoudures intempestives, je vous recommande d’appliquer de la colle chaude sur les connexions.

soudure + colle chaude LEDs WS2812

Votre nouveau bandeau prêt, il faut le coller sur votre carton de manière à créer des pixels de 3.3cm. Sur la partie horizontale, c’est déjà fait mais sur la partie verticale, non… Disposez donc le premier bandeau à 1.65cm (la moitié de 3.3) du bord et décalez de 3.3cm. Personnellement j’ai utilisé du scotch double face pour fixer le bandeau.( Sachant qu’après il sera retenu par la matrice).

img_20161202_182002

Une fois votre tableau terminé, je vous recommande de faire une première série de test avant d’aller plus loin. Cela vous permettra de vérifier vos soudures et d’éviter de tout démonter à postériori.

Le logiciel

Pour ma part, ça fait parti des inconvénients, mais le bandeau de LEDs n’est pas autonome (en même temps c’est assez logique). L’alimenter ne suffira pas à le faire fonctionner. Il faut absolument un micro-contrôleur qui génèrera un flux de données sur le bandeau. En effet, C’est le micro qui gère la couleur et la luminosité.

Prenons donc, un Arduino ou un ESP8266 pour faire les tests.

Personnellement, j’ai pris un NodeMCU que j’avais sous la main (bien pratique pour des prototypes). Aussi, J’ai utilisé l’IDE Arduino pour développer. (je pars du principe que vous avez installé déjà les librairies correspondant à votre hardware).

Il vous reste donc à installer la librairie FastLeds et faire le montage suivant :

Afin de tester rapidement, choisissez dans les exemples déjà fournis, un « Sketch » qui vous plait (juste avec les noms parfois c’est pas facile). Bref, « compilez », « téléversez » et vous devez voir vos LEDs s’allumer:

Exemple :

Bingo !!!! ça marche. Nous pouvons désormais passer à l’étape suivante …

ASTUCE : Il se peut que, sur 5 mètres, quand on met toutes les LEDS à blanc (RGB allumés), les dernières LEDs du bandeau se mettent à scintiller un peu. Il est donc recommandé de réinjecter du 5Vdc en milieu ou fin de bandeau pour stopper le phénomène.

Si sur la fin du bandeau, les couleurs sont erronées, c’est sur le bus de données qu’il y a un problème. Normalement, il faudrait injecter du 5Vdc mais les micros fournissent la plupart du temps que du 3.3v. Pour palier au problème, il est recommandé de mettre en place un « level shifter » (bon tutoriel ici). Personnellement, je n’ai pas eu le phénomène sur 5mètres de LEDs (150 LEDs)

La matrice de pixels

Pour moi c’était la partie la plus complexe. Je ne savais pas comment m’y prendre et j’étais trop pressé dans la réalisation. Je suis finalement partis sur la méthode suivante, mais qui à postériori, ne me satisfait pas entièrement. Je vous expliquerai pourquoi en conclusion.

J’ai donc découpe 15 bandes de cartons de 2cm de hauteur et 33 cm de longueur.

Comme vous pouvez le voir, je l’ai fait un peu rapidement et c’est pas super droit. Ensuite, à l’aide la colle chaude j’ai disposé et coller toutes les bandes entre deux LEDs sur le sens de la hauteur. Puis j’ai découpé pleins de petites portions de cartons alvéolés de 3cm pour effectuer le quadrillage, comme sur la photo suivante :

Voici le résultat final (c’était long et pas super droit mais pour une décoration de noël, ça suffira. Je ferai beaucoup mieux et autrement la prochaine fois)

Une fois cette étape terminée, il ne reste plus qu’à découper la dalle de plexiglass à la bonne dimension et de la fixer sur la matrice. J’ai aussi utilisé de la colle chaude (pas idéale parce qu’elle peut laisser des traces sur le plexiglass).

Voici le résultat :

une petite vidéo de fonctionnement.

Afin de terminer ma décoration de Noël, j’ai décidé de me faire une petite carte rapide pour que ce soit plus propre.

Face arrière

Sur le dessus

L’ensemble

PS : Pour l’alimentation, j’ai utilisé une alimentation 220vac-12vdc puis 12vdc-5vdc. En effet, dans ma décoration, j’ai un bandeau de LEDs qui fonctionne en 12VDC et les WS2812 qui fonctionne en 5VDC.

Conclusion

C’était la première fois que je m’intéressais aux pilotages de LEDs (WS281X) et je dois dire que c’est bien fichu et enfantin par rapport aux anciennes technologies de LEDs. Malgré tout, ce système reste encore cher surtout si vous souhaitez réaliser des grands écrans de LEDs avec des petits pixels…

De plus, la réalisation de la matrice est complexe et doit être parfaite si vous voulez un rendu de pixel parfait.

Bref si on cherche sur Internet, on retrouve énormément de projets avec ces LEDs et il ne sera pas dur de trouver de l’aide, des vidéos et autres tutoriels pour achever votre projet comme vous le désirez.

Dans cette article, je n’ai mis en avant que la partie produit. Maintenant, il y a beaucoup à dire sur la partie logiciel. Dès que j’aurai du code et un projet sympa (ce ne serait tarder), je referai un article plus orienté sur cette partie.

Bien entendu je partagerai tout le code sur mon github

Click to rate this post!
[Total: 17 Average: 3.2]

One comment

Leave a Reply

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.