WS2812, et la lumière fût !

Salut les amis !

Je cherchais une solution pour éclairer ma chambre mais de manière pas trop violente, histoire de voir assez et pouvoir se repérer en pleine nuit pour aller au toilette par exemple sans pour autant que ça me réveil ou que je réveille madame.. Bien sur je cherchais quelque chose que je pourrais facilement intégré dans mon système domotique et que je pourrais contrôler un peu comme je veux :

  • Réglage des couleurs
  • Réglage de l’intensité
  • Choix des LED à allumer

J’ai regardé ce qui se faisait et je suis assez vite tombé sur ces bandeaux de leds WS2812 !

$(KGrHqRHJFMFCg668hfqBQ)-uNtT9g~~60_57

Ces bandeaux existent en plusieurs versions dont les variations sont entres autres la longueur, le nombre de led au mètre ou le fait qu’ils soient étanche ou non. Le principal avantage que j’y vois c’est qu’il ont une patte « data » qui une fois connecté sur un arduino pourra nous permettre de configurer couleur, intensité, ordre d’allumage..etc

J’ai peut-être vu large mais en vue de faire le tour sous le lit, j’ai acheté 5m avec 30 leds par mètre, soit un total de 150 leds (je sais, un vrai cador en math..), pour une trentaine d’euros.
En attendant que la bestiole arrive j’ai fait quelques calculs savants. D’après la datasheet, on sait qu’une led consomme environ 50mA, on multiplie donc par le nombre de led et là on se rends compte que ça fait beaucoup d’ampère (0,05 * 150 = 7,5A) et qu’on a pas d’alim aussi puissante du coup on retourne sur ebay acheter une alimentation 10A ! Et oui, quand on a pas de tête… On a une carte bancaire !

Bref j’ai maintenant tout le matériel nécessaire pour mes petits tests:

  • Un bandeau de led WS2812 de 5M
  • Une alimentation secteur avec en sortie 5V/10A
  • Un arduino pour la programmation des leds
  • Une bière pour passer le temps des tests 🙂

Allez c’est parti pour les branchements. Je vais encore une fois vous faire part de mes merveilleux schémas !

schéma_ws2812

Vous ne la voyez pas mais mon alimentation se branche sur le secteur (220V) et fournit du 5V en sortie sur une prise jack, que je connecte au même adaptateur que vous voyez sur le schéma. Et bien sur je branche mon arduino au PC.
Le bandeau est alimenté, reste à programmer l’arduino pour commander l’allumage des leds.

De base la librairie permettant de gérer les leds WS2812 n’est pas incluse, il faut donc la télécharger. Vous pouvez la récupérer ici chez nos amis Adafruit. Dézippez l’archive dans le dossier « librairies » du dossier d’installation Arduino. Voilà vous êtez prêt !

On va commencer par allumer toutes les led en blanc. Voilà le sketch que j’ai utilisé :

J’ai fait une photo, la qualité n’est pas terrible, pour ne pas dire pourrie, mais ça donne une idée !!

ws8212_blanc

Pas mal non !?

Maintenant on va allumer les 50 première led en rouge, les 50 suivantes en bleu et les 50 dernières en vert et on modifiera l’intensité pour que les led éclaire à 50%. Voici le nouveau bout de code :

Encore une superbe image… Vous devinerez les couleurs hein !

ws2812_multicolore

Voilà pour les présentations !

Ce système est top car le fait qu’il soit interfacer avec un arduino, nous laisse l’opportunité, via des modules, d’y accéder par le LAN, le wifi, bluetooth, 433MHz… et donc d’interagir à distance sur notre bandeau de led. Bref voilà de petites LED prometteuses.

Pour ne rien vous cacher j’ai fait des premiers tests avec juste un ESP8266 car nodemcu intègre une api pour contrôler ces leds WS2812. Je pensais pouvoir m’affranchir de l’arduino et programmer uniquement par l’ESP qui présenter l’avantage d’être directement accessible en wifi avec des ports GPIO, en revanche j’ai eu des comportements non maitrisés sur mes leds (mauvaise couleur, pas la bonne led qui s’allume etc…), du coup j’ai abandonnée et suis passé directement à la configuration via l’arduino qui elle s’avère concluante comme vous avez pu le constater 🙂

Voilà je vous quitte ici pour aujourd’hui !

24 commentaires

  1. Je sais que ce tuto date d’il y a 2 ans, mais franchement super ! je viens de faire l’acquisition des ces strip leds ws2812 en 60 leds/m, ça fonctionne du tonnerre !
    Maintenant c’est parti pour l’ambilight…
    Petite précision pour les questions posées pour les condos, un conseil que je peux donner à tout le monde, sauf si vous achetez une alim haut de gamme en Europe, pour toutes les alims qui viennent de Chine (Aliexpress, Ebay, DX.com, Bangood,…) un petit PCB en sortie avec un 2200µF et un 100nF ça permet de bien lisser la tension, et surtout d’éviter tous les parasites !

    1. Bonjour,
      Je suis enseignant en techno et jaimerai proposer ce projet a mes eleves. C’est possible d’avoir le code, plan et les documents technique pour monter a bien ce projet.

      1. Bonjour ,
        j’ai besoin d’aide pour faire un programme pour 5 panneaux ws2812 8*8 mis à l’horizontal ,
        j’ai essayer mais j’arrive pas à faire défiler un message normalement de gauche à droite.
        Cordialement .

  2. Bonsoir,
    Super tuto ! Dis moi, j’aimerais mettre beaucoup de LEDs en fonction (environ 3 000Leds), piloté par une arduino. J’ai vu qu’il fallait mettre un condensateur mais je ne vois pas du tout comment le dimensionner, aurais-tu une formule ou un conseil pour le calculer en fonction du nombre de LEDs derrière ?
    D’avance merci 🙂

        1. alors 1000µF en entrée d’un groupe de 200 leds devrait être suffisant.
          par contre, commander 3000 leds d’un coup va falloir soit travailler en parallèle avec plusieurs zones. sinon tu vas te retrouver bloqué par les limites de la bibliothèque sur microcontrôleur 8bits. ou le plus simple étant de travailler à partir d’un pc envoyant à plusieurs arduinos le morceau qu’il a besoin en utilisant jinx

          1. Okay, juste comment trouves tu ce condensateur ? (J’aimerais bien à l’avenir y arriver par moi même:) )
            Exact, l’arduino est limité à 8 bits.. A voir si je mets pas 3 cartes à échanger entre elles ou si je passe directement sur raspberry

        2. y’a pas de formule, c’est l’expérience. on aurait pu mettre 2000µF ou plus avec plus de leds… c’est juste une réserve d’énergie pour faire tampon et bien stabiliser le 5V de l’alim malgré les commutations de leds.
          dans ce cas qui peut le plus peut le moins, mais il est commun de mettre cette valeur pour un usage d’un adressage complet en 8 bits on va dire. si ça plante, bah t’en rajoutes en parallèle jusqu’à ce que ça marche.

          1. D’accord, au feeling en fait ahah
            Qu’est ce que tu me conseilles entre coupler des arduino pour avoir au moins 13 bits de données pour couvrir les 3000leds ou directement utiliser une raspberry 64bits ?

  3. Bonsoir,
    Tout d’abord bravo pour tout tuto, il est top. J’ai juste deux questions, j’ai qu’une alim de 12V, 5A, est ce que tu penses qu’avec un pont diviseur de tension, je peux alimenter une strip de 60 LEDS WS2812 ?
    Est ce qu’il n’est pas préférable de mettre un condensateur à l’entrée de la strip pour éviter l’appel de tension à l’allumage ?
    D’avance merci 🙂

  4. votre problème de mauvaises couleurs est dût un soucis de précision dans les timings très rigoureux à respecter pour commander ses leds. le moindre retard fait un paramètre erroné. Et les gpio ne sont pas vraiment les mieux adaptés pour ça. l’arduino est par contre parfaitement adapté, mais pour respecter les dits timings il faut utiliser la library fastled qui agit au niveau assembleur pour justement avoir les bons timings.

    c’est une bonne solution polyvalente pour un éclairage, mais si c’est juste pour choisir sa couleur, c’est démesuré. un simple ledstrip rgb suffit. Les leds adressables c’est surtout pour faire des trucs plus évolués.

    pour les escaliers, je fais un peu ma pub, mais y’a nicekits.fr comme solution 🙂

Laisser un commentaire

Votre adresse de messagerie 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.