Anthias
mail

nextion

Leds programmables WS2812

Nextion


Présentation des leds
Particularités techniques
Adressage
Consommations
Hardware
Firmware
Conclusion

Maj : 30/10/21

Abstract :
WS2812 are fantastics programable diodes assembled in ribbons or panels. You can diplay very bright texte and pictures on panels visible at long distance (enseigns, plates at the back of the car,…)

Résumé :
Les WS2812 sont de fantastiques diodes programmables assemblées en rubans ou panneaux. Vous pouvez afficher du texte et des images très lumineux sur des panneaux visibles à longue distance (enseignes, plaques à l'arrière de la voiture,…)

nextion  Présentation des leds

Cette page sans prétention n’est là que pour faire découvrir ce composant intéressant à ceux qui sont passés à côté… Il y a beaucoup d’informations sur le Net.

Une WS2812 comporte 3 leds RVB (Red, Green Blue) indépendantes. Chaque couleur est réglable de 0 éteinte) à 255 (pleine puissance) et la luminosité globale de l’ensemble se règle de 10 (minimum) à 255.
L’astuce est que ces modules ne sont commandés que par un seul fil série et sont cascabables.
La première led a l’adresse 0, la suivante 1, et la dernière d’un panneau 8x32 = 255.
Vous pouvez chaîner autant de panneaux que vos voulez. Un panneau 8*32 revient à 16€ commandé en Chine, c’est un très bon rapport qualité/prix pour ces produits très performants.

 Haut de page

nextion Particularités techniques

Le temps de remplissage d’un panneau 8*32 n’est que de 8mS, c’est très rapide et vous permet de faire des animations style dessin animés (modestes !).
Si vous devez assembler un grand nombre de panneaux pour des affichages muraux, il peut plus intéressant de ne pas les chaîner  mais d’utiliser un port GPIO par panneau pour ne pas réduire la vitesse d'affichage.

Nextion

Haut de page

nextion  Adressage

Attention au sens !
Pour notre panneau 8*32, considérons que la position 0 est en haut à gauche.

Le balayage est en zigzags, les colonnes paires descendent, les colonnes impaires montent.

0 Haut Gauche 15 16 31 255 Haut droite
1 14 17 30 254
.. .. .. ..  
6 9 24 27 ..
7 8 25 26 ..
A

Ce zigzag est gênant quand on veut afficher des fonts ou transposer des images bmp car on s’attend à ce que toutes les colonnes descendent ainsi :

0 Haut Gauche 8 16 26 ..
1 9 17 27 ..
.. .. .. ..  
6 14 24 30 254
7 15 25 31 .255 Bas droite
v
Ma petite routine résout ce problème qui est montré dans "WS2812_fonts_....ino" (fichiers joints).

 

 

 

int reverse (int pos)  {
if ((pos/8)%2==0)
     return pos ;
else
     return ((pos+7)-2*(pos%8)) ;   }

Haut de page

nextion  Consommations

Après avoir commandé mon premier panneau 8*32 , j’ai lu dans la documentation chinoise que la consommation était de 16 A en 5 V !
’avais rien d’aussi puissant et j’ai commandé une alim de 30A (à 17 € !). J’ai commencé mes essais, mais surprise, l’ampèremètre ne décollait pas…

Pour le développement, j’ai considérablement réduit la luminosité » (255 -> 10) et baissé la tension (5V ->2.7V) car le panneau est trop éblouissant.

Les mesures réelles ont donné :
Toutes leds allumées (blanc), Brightness 5 : // 316 mA at 5V  // 69 mA at 2.7 V.
Vous pouvez dont n’alimenter que par une vieille 18650 ou un petit chargeur USB de téléphone…
Si vous poussez,  Brightness = 255, alors cela devient un puissant projecteur blanc consommant 5 A en 5 V, mais il est peu probable que le panneau sera utilisé ainsi.
C’est bien loin des 16A du document absurde chinois.

Haut de page

nextion  Hardware

L’alimentation étant vue, reste le hardware. J’ai utilisé un ESP32, GPIO 17, comme pour le Nextion.
La documentation indique qu’il est préférable d’utiliser un « level switcher, » pour passer la commande de 3.3 V à 5 V de manière fiable en exploitation.
Pour le développement, surtout en travaillant en tension réduite, c’est inutile, le branchement direct convient.


Colorimétrie:

Par contre, en tension réduite et avec brightness très bas, les couleurs s’altèrent, les trois diodes réagissant différemment à très faible courant.
La colorimétrie comparée avec une charte RGB de référence (Pantone) n’est pas cellle attendue, mais on s’adapte.
Il faut remarquer que l ’incrément des niveaux R ou G ou B n’est que de 16 ! Ainsi en rgb : (15,15,15) équivaut strictement à (0,0,0). (16,16,16) est le premier pseudo gris que l’on peut obtenir.
Inutile de chercher à ajuster les couleurs avec des pas inférieurs à 16. La couleur d’un canal est donc de : couleurCanal = 16 * ((int) (macouleur/16) ).

Haut de page

nextion  Firmware

J’ai choisi sur Github la très bonne bibliothèque Adafruit_NeoPixel. On peut tout faire avec un minimum de commandes simplistes:
 begin, clear, setBrightness, show et surtout : setPixelColor(position, r,g,b)

Pour m’amuser, j’ai voulu tout refaire à la main en C++, sans regarder le travail des autres.
J’ai simplement récupéré un font tout fait pour afficher des textes et programmé quelques animations partant de dessins BMP.
Petit problème, mon font est en 5*7 (largeur variable suivant le caractère), et donc la dernière ligne reste vide.

Haut de page

nextion  Conclusion


Que peut-on faire de ce panneau ?
S’amuser à le programmer pour découvrir ces leds extraordinaires, mais il est difficile de trouver une utilisation pratique…
La résolution est trop faible et limite les applications. Sur un panneau 8*32, on ne peut afficher que 4 ou 5 caractères, c’est insuffisant pour être exploitable. Il faudrait coupler plusieurs panneaux en horizontal et vertical pour arriver à un résultat, genre enseigne animée de pharmacie (bien qu’elles n’utilisent que le vert).
Installer un bandeau de texte derrière la lunette arrière de sa voiture (les panneaux ne sont pas étanches) pour injurier ceux qui collent de trop près, n’est pas la meilleure idée…

Tous les détails sont dans les logiciels joints.

Vous trouverez tous les logiciels à jour dans cette page :

eclate

Haut de page

© Christian Couderc 1999-2021     Toute reproduction interdite sans mon autorisation


* Page vue   260   fois       IP : 52.23.219.12

 Haut de page         Dernière retouche le 30 Octobre 2021 á 09 h         Retour page précédente

   Collector