
Les rubans de LED WS2812B offrent un potentiel énorme pour les projets créatifs, allant de l’éclairage décoratif aux animations complexes et installations interactives. Ces rubans de LED adressables individuellement permettent de contrôler la couleur et l’intensité de chaque diode LED, ce qui les rend particulièrement prisés pour des projets de domotique, de décoration ou même d’art numérique.
Fonctionnement et caractéristiques des WS2812B
Les rubans de LED WS2812B se distinguent par leur capacité à être pilotés de manière individuelle grâce à une puce intégrée dans chaque LED. Cette puce reçoit et interprète les signaux pour ajuster la couleur et la luminosité de chaque diode de manière indépendante. Cela permet de créer une large gamme d’effets visuels, allant du simple changement de couleur à des animations synchronisées complexes.
Caractéristiques techniques
- Contrôle adressable : chaque LED peut être programmée indépendamment pour afficher une couleur spécifique.
- Protocole de communication : le contrôle se fait par un signal numérique, généralement transmis par un microcontrôleur ou un ordinateur (via des cartes comme Arduino ou Raspberry Pi).
- Puissance et intensité lumineuse : chaque LED est composée de trois diodes (rouge, vert et bleu), permettant de reproduire une vaste palette de couleurs.
- Alimentation : ces rubans fonctionnent souvent sous une tension de 5V, mais des alimentations externes sont recommandées pour les installations de grande taille.
Une led consomme au maximum 0.06 ampère; ainsi un ruban de 300 leds peut avoir besoin de300*0.06 ampères soit 18 ampères sous 5 volts, ce qui correspond à une puissance de 90 watts. Il convient en général d’utiliser une alimentation extérieure.
Dans cet article nous allons illustrer le fonctionnement de ce type de ruban avec un raspberry pi5.
Protocole de communication
Les rubans de LED WS2812B utilisent un protocole de communication à un fil (One-Wire), conçu pour transmettre des données de couleur et de luminosité à chaque LED individuellement. Ce protocole repose sur un timing précis pour encoder les bits et transmettre les informations nécessaires à chaque LED.
Les modules python tels que rpi_ws281x ne fonctionne pas à ce jour sur le modèle pi5. Néanmoins il existe un module utilisable pour les pi5 : https://github.com/niklasr22/rpi5-ws2812
Il s’agit d’une interface simple pour la bande LED WS2812 du Raspberry Pi 5. Actuellement, elle ne prend en charge que la communication via l’interface SPI.
Cette bibliothèque a été créée pour le Raspberry Pi 5 car la précédente bibliothèque incontournable rpi_ws281x n’est pas (encore ?) compatible. Cela devrait également fonctionner sur d’autres modèles de Raspberry Pi, mais cela n’a pas été testé.
Préparation
Activez SPI sur le Raspberry Pi 5 :
sudo raspi-config
Accédez à Options d’interface -> SPI et activez-le.
Facultatif : ajoutez votre utilisateur au groupe spi pour éviter d’exécuter le script en tant que root :
sudo adduser YOUR_USER spidev
Installation
pip installer rpi5-ws2812
Câblage
Connectez la broche DIN (Data In) de la bande WS2812 à la broche MOSI (Master Out Slave In) du Raspberry Pi 5. La broche MOSI est la broche 19 / GPIO10 du Raspberry Pi 5.




Module LEDController
Ce module est particulièrement adapté aux projets d’éclairage dynamique, aux décorations festives et à l’intégration dans des installations interactives.
1. Installation et Pré-requis
Module nécessaire :
rpi5_ws2812
: Ce module contientWS2812SpiDriver
etColor
, indispensables pour le fonctionnement du ruban LED.
2. Initialisation du Module
Pour utiliser le module, commencez par créer une instance de LEDController
avec le nombre de LEDs de votre ruban.
led_count : nombre de LEDs sur votre ruban.
spi_bus et spi_device : paramètres SPI pour le Raspberry Pi. Par défaut, SPI bus 0 et device 0 sont utilisés.
3. Utilisation des Animations LED
Ajouter une animation
La méthode add_animation
permet d’ajouter une animation avec des paramètres personnalisés :
- start : LED de début de l’animation.
- end : LED de fin de l’animation.
- colors : Liste de couleurs pour l’animation, chaque couleur étant un objet
Color
. - frequency : Intervalle en secondes entre les cycles d’animation.
- animation_type : Type d’animation (voir les types ci-dessous).
- name : Nom unique pour identifier l’animation (obligatoire).
Types d’animations disponibles
Voici les types d’animations intégrés dans LEDController
:
- static : Affiche une couleur fixe.
- blink : Clignote entre une couleur et le noir.
- caterpillar : Déplace une couleur spécifique comme une chenille.
- fire : Simule un effet de flamme avec des variations de rouge.
- rainbow : Dégradé arc-en-ciel sur le ruban.
- breathe : Effet de respiration (variation de l’intensité).
- wave : Onde lumineuse de couleur.
- color_wipe : Remplit progressivement les LED de la couleur choisie.
4. Contrôle des Animations
Vous pouvez ajouter plusieurs animations simultanément sur différentes sections du ruban en leur attribuant des noms uniques. Chaque animation s’exécute dans un thread séparé.