mercredi 24 février 2021

ESP8266 et ESP32: Contrôle d'une matrice de LEDs RGB

J'avais déjà fait l'essai de ma matrice constituée de 16 rangées de 16 LEDs RGB (contrôleur WS2812B) avec un Arduino Uno. Cette fois-ci, c'est avec un module ESP32 ainsi qu'avec un module ESP8266 que j'ai pu contrôler (à distance) les LEDs de la matrice.


Alimentation et niveau logique

Il faudra choisir pour la matrice de LEDs une alimentation capable de fournir un courant de quelques ampères, particulièrement si vous prévoyez allumer ses 256 LEDs en même temps.

La fiche technique du WS2812B indique que son alimentation doit se situer entre 3,5 V et 5,3 V, et que son VIH (la plus petite tension considérée comme un niveau logique haut) est égal à 70% de la tension d'alimentation. 

Nous pouvons en conclure que:

  • Si nous alimentons le WS2812B avec une tension de 3,3 V, son fonctionnement correct n'est pas garanti, puisqu'il s'agit d'une tension plus faible que le minimum recommandé.
  • Si le WS2812B est alimenté à 5 V, un signal logique d'au moins 3,5 V est requis, en principe, pour garantir son fonctionnement; le signal de 3,3 V issu d'un ESP8266 ou d'un ESP32 pourrait donc être insuffisant.  Dans ce cas, un convertisseur de niveau logique pourrait être nécessaire pour élever à 5 V le signal généré par le microcontrôleur. 

Une autre solution consiste à diminuer un peu la tension d'alimentation de la matrice (si la tension d'alimentation du WS2812B est de 4,7 V ou moins, un niveau logique de 3,3 V se situe dans les normes recommandées par le fabricant).

Pour ma part, tout a fonctionné sans problème en utilisant directement le signal de 3,3 V généré par la broche GPIO 5 du module ESP, même quand la tension d'alimentation de la matrice était de 5 V.

Connexions

Le verso de la matrice comporte 8 fils, mais ils ne sont pas tous nécessaires (ils servent entre autre à brancher plusieurs matrices ensemble, afin d'obtenir un panneau géant).

  • Un des fils rouges marqués "5 V" est branché à la borne positive de l'alimentation de la matrice de LEDs (cette alimentation doit être capable de générer quelques ampères).
  • Le fil noir (marqué GND) est branché à la borne négative de l'alimentation de la matrice de LEDs.
  • Un des fils blancs (marqués GND) est branché à la masse (sortie GND) du module ESP32 ou ESP8266.
  • Le fil vert marqué DIN est branché à la broche GPIO 5 du module ESP32 ou ESP8266 (ça peut aussi être une autre broche, si vous modifiez le sketch ci-dessous en conséquence).


Installation des bibliothèques

J'ai conservé les deux mêmes bibliothèques que j'avais utilisées lors de l'utilisation avec l'Arduino Uno: la bibliothèque FastLED de Daniel Garcia (disponible par le gestionnaire de bibliothèques de l'IDE Arduino) et la bibliothèque LED Matrix par Jorgen - Viking God.

Sketch

Les deux sketches que j'avais rédigés lors de l'essai de la matrice de LEDs avec l'Arduino Uno fonctionnent très bien avec les modules ESP, à la condition de modifier le numéro de la broche GPIO utilisée (5 plutôt que 3).

Dans le sketch ci-dessous, j'ai choisi d'utiliser les fonctionnalités WiFi des modules ESP8266 / ESP32: une page web générée par le module ESP permet d'allumer n'importe quelle LED de la matrice avec la couleur désirée (on choisit "Noir" pour éteindre la LED).

Pour atteindre cette page web, on utilise l'adresse IP affichée sur le moniteur série de l'IDE Arduino lors du démarrage du programme.

-

-

À lire également:


Yves Pelletier (TwitterFacebook)

1 commentaire:

  1. Comment faire défiler un long texte sur une matrice flexible RGB 8*32 avec l'ESP32

    RépondreSupprimer