Connectez et contrôlez bandes LED WS2812 RGB via Raspberry Pi

Si vous êtes à la recherche de bandes LED RGB, vous tomberez probablement sur le WS2812 ou le WS2801. Ces deux bandes LED sont très différentes, mais toutes deux peuvent être contrôlées avec le Raspberry Pi. Après avoir utilisé le dernier dans un tutoriel précédent et en l’utilisant dans notre éclairage ambiant, ce tutoriel traite de l’utilisation de la Bande WS2812 RGB LED Raspberry Pi.

Les modèles WS2812B et WS2811 sont également compatibles et peuvent être traités avec ce guide.

Il faut dire qu’il ne faut pas se laisser berner par le numéro de modèle « plus petit » du WS2801. Ceci a – en plus du prix – quelques avantages, qui seront discutés plus en détail ci-dessous.

Composants

DC Steckeradapter

Un adaptateur secteur permet de brancher très facilement le câble d’alimentation à l’alimentation électrique

Toute personne ayant déjà utilisé une bande LED RVB (comme Ambilight) peut continuer à utiliser les accessoires. Cela comprend les éléments suivants, en plus d’un Raspberry Pi:

La puissance maximale de l’alimentation électrique dépend du nombre de LEDs. Selon la fiche technique, une LED à pleine charge (= luminosité maximale) nécessite environ 60mA. A 5m et 30 LEDs / m, cela fait 9 ampères. Ainsi, une alimentation électrique d’une intensité maximale de 10A est appropriée. Si vous utilisez plus de LEDs, vous pouvez avoir besoin de plus d’une alimentation électrique (plus d’informations à ce sujet plus tard).

En outre, la bande LED RGB de type WS2812 (B) ou WS2811 (également appelée NeoPixel) est bien entendu nécessaire. Celles-ci sont disponibles en trois versions différentes, qui diffèrent par le nombre de LED par mètre:

  1. Bande LED avec 30 LEDs par mètre
  2. Bande LED avec 60 LEDs par mètre
  3. Bande LED avec 144 LEDs par mètre

La longueur devrait être choisie en fonction du projet à mettre en œuvre. Mais la plupart du temps, les rouleaux de 5m sont un peu moins chers. Ma recommandation est la version intermédiaire avec 60 LEDs/m. Ceux-ci ont une plus grande densité de lumière et donc une plus grande luminosité. En termes de prix, cependant, ils sont toujours moins chers qu’une bande WS2801 aussi longue avec seulement 32 LEDs

NeoPixel WS2812B / WS2811 vs WS2801 sur un Raspberry Pi

Raspberry Pi WS2812 RGB LED Detailansicht

Avec une seule ligne de données, la fréquence doit être plus élevée pour transporter la même quantité de données.

Dans un précédent tutoriel nous avons déjà vu comment contrôler une bande LED WS2801 RGB. Cette bande diffère du WS2812B ou WS2811 et présente certains avantages, que j’aimerais d’abord énumérer ici:

  • Avoir deux lignes de données nécessite moins de calculs.
  • Par conséquent, une fréquence plus élevée peut être réalisée.
  • La luminosité du WS2801 est plus élevée.
  • Il est également possible de contrôler le WS2801 et de jouer de la musique, ce qui n’est pas possible avec le WS2812 (plus sur cela ci-dessous).

Maintenant la question surgit, pourquoi utiliser une bande LED WS2812 RGB sur le Raspberry Pi, si le WS2801 apporte néanmoins quelques avantages ? La réponse est très simple : le prix inférieur.En comparaison, un mètre de WS2801 est assez cher, c’est pourquoi vous voulez le manipuler plus économiquement. A des prix relativement bas pour plusieurs pieds d’une bande WS2812, même un grand projet peut être réalisé sans un budget important.

Cependant, il faut dire qu’il n’est malheureusement pas possible de jouer des sons simultanément via la carte son embarquée Raspberry Pi et de contrôler la bande. C’est parce que le Raspberry Pi n’est pas un système en temps réel comme l’Arduino ou l’ESP8266. Pour la reproduction sonore, PWM est utilisé, qui est également nécessaire pour contrôler le WS2812 sur le Raspberry Pi. Il n’est pas possible d’utiliser les deux en même temps, c’est pourquoi quelqu’un qui se fie à la reproduction du son devrait simplement prendre le WS2801.

Connecter le NeoPixel WS2812 au Raspberry Pi

Avant de connecter le Raspberry Pi à la bande LED WS2812, nous terminons l’alimentation électrique. Si votre bande a moins de 20-30 LEDs, l’alimentation externe n’est pas nécessaire. S’il y a plus de LED, l’alimentation du Pi n’est plus suffisante et une alimentation externe est nécessaire.

L’alimentation elle-même dépend du type choisi. Pour un adaptateur secteur avec adaptateur CC supplémentaire (débutants), seul l’adaptateur CC doit être raccordé, qui sera suivi par les câbles d’alimentation du WS2812B. Une fois que vous avez choisi cette méthode, vous pouvez passer au point suivant. Une alimentation à découpage (pour les utilisateurs expérimentés) est cependant un peu plus complexe.

Avant, cependant, la remarque : Quand on travaille avec une tension de 230V, la prudence est nécessaire à cause du danger mortel ! Demandez l’aide d’un électricien ou retournez à la version sécuritaire de l’alimentation électrique normale ! Effectuez tous les travaux avec une connexion réseau séparée.

Tout d’abord, nous avons besoin d’un câble d’alimentation standard qui peut supporter 10A. La plupart du temps, une note correspondante (230V, 10A) se trouve sur la partie inférieure de la fiche. Nous coupons soigneusement ce câble avec un couteau utilitaire ou similaire, il contient deux ou trois câbles de couleurs différentes. Ces câbles doivent également être soigneusement dénudés.

Aufgeschnittenes Netzkabel mit abgetrennter Isolation

Câble d’alimentation avec isolation séparée et deux câbles internes (black => L, blue => N).

Mon câble n’a que deux câbles intérieurs, mais c’est suffisant. Pour le raccordement à l’alimentation à découpage, les couleurs des câbles intérieurs servent d’orientation. L’alimentation à découpage possède les connexions « L », « N » et « PE » ou un symbole de mise à la terre.

  • Le noir ou marron câble interne arrive au conducteur externe « L ».
    Le bleu câble intérieur arrive au conducteur neutre « N ».
    Le vert-jaune câble interne est raccordé au conducteur protecteur « PE » ou symbole de mise à terre.
Multimeter am Schaltnetzteil des WS2801 LED Strip

La tension doit être d’environ 5V.

Après avoir serré les vis de verrouillage, le cordon d’alimentation peut être branché dans la prise et la tension d’alimentation peut être mesurée à l’aide d’un multimètre. Bien que cela ne soit pas obligatoire, mais peut être fait comme une couverture. VCC est connecté à V+ et GND à COM. Si la tension n’est pas exactement 5V, ce n’est pas un problème.

Théoriquement, il est également possible d’alimenter le Raspberry Pi à partir de cette alimentation. Certains utilisateurs (selon les commentaires du tutoriel WS2801) l’ont également fait. Pour des raisons d’espace, ceci ne sera pas discuté ici.

Connexion entre Raspberry Pi et les bandes NeoPixel WS2812

Si l’alimentation électrique est déjà en place, nous connectons le Raspberry Pi à la bande LED WS2812 RGB. L’alimentation (à interrupteur) électrique doit d’abord être déconnectée du secteur.

Puisqu’ il n’y a qu’une seule ligne de données, nous n’avons besoin que d’une broche (GPIO 18). Il est important que les connexions à la terre du Raspberry Pi et l’alimentation électrique de commutation soient branchées, mais pas les tensions de 5V ! Dans l’ensemble, seulement deux câbles relient le Raspberry Pi à la bande LED WS2812 : GPIO 18 (selon DIN) et GND à COM de l’alimentation et GND de la bande.

Raspberry Pi WS2812 Steckplatine

Connexion schématique entre Raspberry Pi, WS2812 et l’alimentation électrique externe

Dépendant de la longueur de la bande LED, la connexion d’alimentation externe doit être installée à plusieurs endroits. Idéalement, le VCC et le GND seront connectés en parallèle avec l’alimentation à découpage sur environ chaque mètre (de sorte que de nombreux câbles mèneront à l’entrée de l’alimentation).

Remarque: Pour des longueurs inférieures à 1m, l’alimentation peut également être supprimée et la tension d’entrée de la broche RV 5V du Raspberry Pi est fournie.

Préparation et Installation

Avant d’installer la bibliothèque Raspberry Pi pour les LEDs WS2812, quelques préparatifs doivent être faits :

  1. Les sources du paquet sont mises à jour:
    sudo apt-get update
  2. Nous installons les paquets requis (confirmer avec Y):
    sudo apt-get install gcc make build-essential python-dev git scons swig
  3. La sortie audio doit être désactivée. Pour cela, nous éditons le fichier
    sudo nano /etc/modprobe.d/snd-blacklist.conf

    Ici nous ajoutons la ligne suivante:

    blacklist snd_bcm2835

    Puis, le fichier est sauvegardé en appuyant sur CTRL + O et CTRL + X ferme l’éditeur.

  4. Nous devons également éditer le fichier de configuration:
    sudo nano /boot/config.txt

    Ci-dessous se trouvent les lignes avec le contenu suivant (avec Ctrl + W vous pouvez chercher):

    # Enable audio (loads snd_bcm2835)
    dtparam=audio=on

    Cette ligne du bas est commentée avec un hashtag # au début de la ligne: #dtparam=audio=on

  5. Nous redémarrons le système
    sudo reboot

Maintenant nous pouvons télécharger la bibliothèque.

git clone https://github.com/jgarff/rpi_ws281x

Dans ce répertoire sont d’une part quelques fichiers C inclus, qui peuvent être facilement compilés. L’exemple de code est facile à comprendre. Pour les utiliser en Python, nous avons besoin de les compiler:

cd rpi_ws281x/
sudo scons

Cependant, dans ce tutoriel, nous nous intéressons principalement à la variante Python et passons donc au dossier Python:

cd python

Ici, nous procédons à l’installation:

sudo python setup.py build
sudo python setup.py install

Cela nous permettra d’effectuer un premier test dans la prochaine étape.

Testez la bande LED WS2812 RGB Raspberry Pi

Dans le dossier d’exemple se trouvent quelques fichiers d’exemple, avec lesquels les bandes LED peuvent être testées. De plus, même deux bandes LED WS2801 peuvent être commandées indépendamment par Raspberry Pi (multistrandtest.py).

Nous nous intéressons initialement à la version simple. Pour cela, nous devons compléter quelques détails avant le test et donc nous éditons le fichier d’exemple.

sudo nano examples/strandtest.py

Le fichier ressemble à ceci, où nous devons indiquer LED_COUNT (nombre de LEDs à adresser) et LED_PIN (18 us).

Puis nous sauvegardons (CTRL + O) et retournons au terminal (CTRL + X). Maintenant le fichier peut être exécuté (passer le répertoire vers les fichiers compilés est important):

sudo PYTHONPATH=".:build/lib.linux-armv7l-2.7" python examples/strandtest.py

Les LEDs de la bande WS2812 doivent s’allumer comme dans la vidéo ci-dessous. Dans le code supérieur, seuls quelques effets (arc-en-ciel, etc.) sont définis, mais il est également possible de créer d’autres effets par analogie (toute personne qui veut poster son code pour les effets en commentaire est la bienvenue).

Quelque chose de plus

Pimoroni pHAT für Raspberry Pi WS2812B

Le pHAT est disponible pour Raspberry Pi 3 modèle B et Zéro.

Les LED NeoPixel WS2812 sont également utilisées dans de nombreux autres projets (principalement conçus pour Arduino), vous pouvez donc certainement porter certains d’entre eux.

De plus, la boutique Pimoroni de Raspberry Pi a fait une pièce jointe pour le modèle B (à partir de la version B +) et le Raspberry Pi Zero et appelle ceci unicorn pHAT. Cependant, cette matrice LED RVB utilise son propre logiciel pour son fonctionnement.

Incidemment, la bibliothèque que j’utilise est aussi offerte par un autre développeur comme une application de serveur.

Leave a Comment

Your email address will not be published.