Configurer des NeoPixels avec Vixen Lights et Arduino : Guide étape par étape
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Nano R3 | 1 |
| Arduino UNO | 1 |
| Bande de pixels 60 pixels/mètre (WS2812B) | 1 |
| Résistance 470 Ω | 1 |
| Alimentation 5 V, 40 A | 1 |
| Plaque d'essai (breadboard) | 1 |
| Câbles Dupont | 1 lot |
Outils et machines nécessaires
- Fer à souder (générique)
- Étain pour soudure
Applications et services en ligne
- Vixen Lights (version 3.4u2 64 bits utilisée dans ce tutoriel)
- Arduino IDE
À propos de ce projet
Ce tutoriel est disponible en anglais et en español (descendez pour la version espagnole).
Qu'est-ce que Vixen Lights ?
Vixen Lights est un logiciel d'automatisation d'éclairage pour les projets DIY. La version 3.x a été entièrement repensée pour prendre en charge les lumières « pixel » adressables. Vous pouvez le télécharger sur vixenlights.com.
Qu'est-ce qu'un pixel ?
Un pixel est un groupe de 3 diodes électroluminescentes (DEL) comprenant les trois couleurs primaires (rouge, vert et bleu). L'intensité de ces trois couleurs peut être variée pour créer d'autres couleurs. Les pixels WS2812B utilisés ici intègrent une puce IC qui reçoit les données sur un port, affiche l'information qui lui est adressée et transmet les données au pixel suivant. Pour cet exemple, j'ai acheté des bandes de 5 mètres avec 30 pixels par mètre, soit 150 pixels au total. Les bandes RGB adressables « pixel » s'identifient facilement car elles ont 3 fils : un pour l'alimentation, un pour la masse et un pour les données. En revanche, les bandes RGB « non adressables » en ont 4 : un pour l'alimentation et un par couleur (rouge, vert, bleu).
Alimentation
Les pixels RGB consomment beaucoup d'énergie. Bien que l'Arduino puisse alimenter quelques pixels via son régulateur intégré, vous serez rapidement limité. Il faut donc une alimentation externe. La tension dépend de vos LED (ici 5 V). Chaque pixel au blanc plein consomme environ 60 mA. Pour 150 pixels, cela représente environ 9 A.
Les fines pistes de cuivre des bandes LED créent une résistance qui fait chuter la tension. Si la tension chute trop, vous aurez scintillement, lumière faible ou extinction. Pour éviter cela, il faut « réinjecter » l'alimentation à intervalles réguliers dans la bande : coupez la bande, reliez le fil DATA en jumper, et ajoutez de nouveaux fils d'alimentation et de masse vers l'alimentation. Attention : la longueur des fils d'alimentation cause aussi une chute de tension. Utilisez des fils suffisamment gros selon vos besoins en courant. Plus l'alimentation est puissante, mieux c'est. J'utilise des alimentations de 40 A et 60 A. Si vous utilisez plusieurs alimentations, reliez toutes les masses ensemble.
Contrôleur Arduino
La plupart des cartes Arduino grand public peuvent servir de contrôleur entre l'ordinateur exécutant Vixen Lights et les bandes de pixels RGB. Les limitations matérielles (vitesse processeur, RAM, stockage) existent, mais le facteur limitant principal est la vitesse du port série. La plupart des Arduino ne dépassent pas 115 200 bauds. Pour 150 pixels (450 canaux de couleur), la transmission prend environ 45 ms, permettant un rafraîchissement toutes les 50 ms (20 Hz).
Le code de ce tutoriel est basé sur le travail de David Hunt (blog.huntgang.com).
Configuration du port série dans Vixen
Pour utiliser l'Arduino comme contrôleur, vous devez le configurer dans Vixen 3.x.
Étape 1 : Ajouter un contrôleur série générique
Dans le menu en haut à droite, ajoutez un « Generic Serial Controller ».
Étape 2 : Définir le nombre de sorties
Le nombre de sorties doit être 3 × le nombre de pixels. Pour 30 pixels, réglez sur 90 sorties.
Étape 3 : Configurer le port COM
Cliquez sur l'icône d'engrenage en bas à droite. Sélectionnez le port COM de votre Arduino (ex: COM13) et réglez le baud rate à 115 200. Laissez les autres paramètres par défaut.
Étape 4 : Ajouter le nombre de pixels dans l'en-tête
Entrez le nombre de pixels (≤ 300) sur 3 chiffres. Pour 30 pixels, entrez « 030 ». L'Arduino devrait maintenant clignoter, indiquant qu'il reçoit les données série.
Configurer l'élément pour les pixels
Étape 5 : Créer l'élément « Pixel Strip »
Dans le menu déroulant en haut à gauche, sélectionnez « Single Item », cliquez sur le bouton vert « + » et nommez-le « Pixel Strip ».
Étape 6 : Ajouter les pixels individuels
Faites un clic droit sur « Pixel Strip » → « Add Multiple ». Sélectionnez « Numbered Items », nommez (ex: « Pixel Strip ») et définissez le nombre de pixels (30 ici). Validez.
Étape 7 : Configurer la gestion des couleurs
Sélectionnez « Pixel Strip », puis dans « Configure » → « Color Handling », choisissez : « They can be any color: they are full RGB and mix to make any color. »
Étape 8 : Associer l'élément au contrôleur (Patch)
Sélectionnez « Pixel Strip » à gauche et le contrôleur série générique à droite. Le nombre de « Unconnected Patch Points » doit correspondre. Cliquez sur « Patch Elements to Controllers ».
Étape 9 : Vérification
La vue graphique devrait ressembler à ceci :
Créer ma première séquence
Étape 10 : Nouvelle séquence
Ouvrez Vixen et cliquez sur « New Sequence… »
Étape 11 : Importer l'audio
Menu Tools → Import Audio (format MP3 recommandé).
Étape 12 : Ajuster la timeline
Utilisez les outils de zoom (+/-) pour ajuster la timeline.
Étape 13 : Détecter les temps (Beat/Bar Detector)
Tools → Audio → Beat/Bar Detector. Des lignes blanches apparaissent, alignées sur les temps de la musique.
Étape 14 : Ajouter un effet « Chase »
Menu Effects → Basic Lighting ou Pixel Lighting → Chase. Glissez-déposez sur la ligne « Pixel Strip », redimensionnez avec la souris.
Étape 15 : Personnaliser l'effet
Sélectionnez l'effet, le menu de droite permet de modifier direction, couleur, pulsation, profondeur, etc. Activez « Effect Preview » pour visualiser.
Étape 16 : Lecture
Cliquez sur « Play » en haut à gauche. Amusez-vous ! De nombreux exemples sont sur YouTube.
Note : Une fois l'Arduino connecté et Vixen ouvert, la LED RX de l'Arduino clignote, indiquant qu'il attend les instructions de Vixen.
Español - Versión en español
El tutorial completo en español se encuentra al final de la page originale. Les étapes sont identiques : configurar el puerto serial, crear el elemento Pixel Strip, hacer el patch, y crear la secuencia con efectos.
Code
Bibliothèque FastLED
Installez la bibliothèque FastLED via le gestionnaire de bibliothèques de l'Arduino IDE (recherchez « FastLED ») ou téléchargez-la depuis fastled.io.
Code pour Arduino
/* Vixen Lights 3.x - Arduino Generic Serial for Addressable Pixels
* Branchez la ligne de données (WS2811 ou WS2812) sur la broche 6 de l'Arduino.
* Installez la bibliothèque FastLED depuis https://fastled.io
* Alimentez vos bandes de pixels depuis une alimentation externe.
* Configurez un Generic Serial Controller dans Vixen Lights 3.x avec 3 x pixels pour le nombre de canaux.
* Configurez le contrôleur à 115200, 8, none, 1.
* Créez votre élément et ajoutez "Multiple Items (1 x number of pixels)".
* Sélectionnez vos éléments pixels et définissez-les comme pixels RGB avant de les patcher aux sorties du contrôleur.
* Tutoriel complet : blog.huntgang.com
* Créé le 8 novembre 2014 par Richard Sloan - www.themindfactory.com et David Hunt - blog.huntgang.com
* Version 1.4
*/
#include <FastLED.h>
#define NUM_LEDS 300
#define DATA_PIN 6
CRGB leds[NUM_LEDS];
void setup() {
Serial.begin(115200);
}
void loop() {
int cnt;
unsigned int num_leds;
unsigned int d1, d2, d3;
for(;;) {
cnt = 0;
// Attendre l'en-tête '>>'
while(!Serial.available());
if(Serial.read() != '>') continue;
while(!Serial.available());
if(Serial.read() != '>') continue;
// Lire les 3 chiffres du nombre de pixels
while(!Serial.available()); d1 = Serial.read();
while(!Serial.available()); d2 = Serial.read();
while(!Serial.available()); d3 = Serial.read();
// Attendre la fin d'en-tête '<<'
while(!Serial.available());
if(Serial.read() != '<') continue;
while(!Serial.available());
if(Serial.read() != '<') continue;
// Calculer le nombre de pixels
num_leds = (d1-'0')*100 + (d2-'0')*10 + (d3-'0');
if(num_leds > NUM_LEDS) continue;
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, num_leds);
// Lire les valeurs RGB pour chaque pixel
do {
while(!Serial.available()); leds[cnt].r = Serial.read();
while(!Serial.available()); leds[cnt].g = Serial.read();
while(!Serial.available()); leds[cnt++].b = Serial.read();
} while(--num_leds);
FastLED.show();
}
}
Schémas
Utilisez une résistance de 470 Ω sur la ligne de données.
Processus de fabrication
- Contrôler la Luminosité de LEDs par PWM avec un Bouton Poussoir sur Arduino Mega
- Construire un dispositif de lévitation ultrasonique avec Arduino – Guide étape par étape
- Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
- Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
- Mesure Précise de Fréquence et Rapport Cyclique avec Arduino UNO
- Mesurer la masse de la Terre avec Arduino : Guide DIY étape par étape
- Construire une Boussole Numérique Temps Réel avec Arduino et Processing