ESP32 Ruban LED RGB IoT (WS2812B)
Commande la lumière de ta pièce depuis ton téléphone : choisis la couleur, règle la luminosité, lance l'effet arc-en-ciel ou respiration. Voici le guide pas à pas du modèle IoT Ruban LED RGB de l'appli, monté avec un ESP32 et un ruban WS2812B de 30 LED en trois fils. Va dans Atelier › Appareils › Ajouter un appareil et choisis Ruban LED RGB ; Ohmi prépare le code avec ta propre clé d'appareil. Le code de cette page est un exemple : la clé et les infos Wi-Fi sont à remplacer.

Contrôlez cet appareil depuis l'app
Connectez votre ESP32 ou Raspberry Pi Pico W au Wi-Fi, allumez-le et éteignez-le depuis votre téléphone et suivez les mesures en direct. Ohmi prépare le code ; vous saisissez seulement vos identifiants Wi-Fi et vous le téléversez.
Modèle dans l'app : Ruban LED RGB
- Où le trouver dans l'app ?Ajoutez un nouvel appareil depuis l'onglet Outils ou Atelier › Appareils, puis choisissez ce modèle.
- Bibliothèque ArduinoOuvrez le gestionnaire de bibliothèques de l'Arduino IDE, cherchez BlueGraysIoT et installez-la.
L'offre gratuite comprend 1 appareil, 1 graphique et 24 heures d'historique. Premium ajoute plus d'appareils, plus de graphiques et un historique plus long.
Schéma du circuit

Code source
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// ESP32 Ruban LED RGB IoT (WS2812B)
4// ─────────────────────────────────────────
5// Le modèle IoT "Ruban LED RGB" de l'appli BlueGrays : tu changes depuis
6// ton téléphone la lumière, la couleur, la luminosité et l'effet (fixe,
7// arc-en-ciel, respiration, clignotement) d'un ruban WS2812B de 30 LED.
8// Ohmi prépare le vrai code dans l'appli avec ta propre clé d'appareil
9// (Atelier › Appareils › Ajouter un appareil) ; le code ici est un
10// exemple, la clé d'appareil et les infos Wi-Fi sont à remplacer.
11// Gestionnaire de bibliothèques : BlueGraysIoT (avec ses dépendances) et
12// Adafruit NeoPixel. La carte ne se connecte qu'aux réseaux Wi-Fi 2,4 GHz.
13// Pour 30 LED à pleine luminosité, alimente le ruban avec un adaptateur 5
14// V 2 A séparé et relie les masses.
15//
16// Broches :
17// GPIO13 -> Ruban WS2812B DIN
18// 5V, GND -> Ruban 5V, GND
19// Pico W : ruban DIN GP2, 5V VBUS
20
21/*
22 * Ruban LED RGB · BlueGrays IoT
23 * BlueGrays · bluegrays.com
24 * Ne partage pas ce code : il contient la clé de ton appareil et ton mot de passe Wi-Fi.
25 */
26
27#include <BlueGraysIoT.h>
28#include <Adafruit_NeoPixel.h> // Gestionnaire de bibliothèques : 'Adafruit NeoPixel'
29
30const char *DEVICE_KEY = "TA_CLE_APPAREIL";
31const char *WIFI_NAME = "TON_RESEAU_WIFI";
32const char *WIFI_PASSWORD = "TON_MOT_DE_PASSE_WIFI";
33
34BlueGraysIoT bg(DEVICE_KEY);
35
36const int LED_COUNT = 30;
37Adafruit_NeoPixel strip(LED_COUNT, 13, NEO_GRB + NEO_KHZ800);
38bool isOn = false; uint8_t cr = 255, cg = 255, cb = 255; int brightness = 70; String effect = "sabit";
39void paint() {
40 strip.setBrightness(isOn ? map(brightness, 0, 100, 0, 255) : 0);
41 for (int i = 0; i < LED_COUNT; i++) strip.setPixelColor(i, strip.Color(cr, cg, cb));
42 strip.show();
43}
44
45void setup() {
46 Serial.begin(115200);
47 strip.begin();
48 paint();
49 bg.onSwitch("acik", [](bool on) { isOn = on; paint(); });
50 bg.onColor("renk", [](uint8_t r, uint8_t g, uint8_t b) { cr = r; cg = g; cb = b; paint(); });
51 bg.onNumber("parlaklik", [](float v) { brightness = (int)v; paint(); });
52 bg.onChoice("efekt", [](const char *e) { effect = e; paint(); });
53 bg.setDebug(Serial);
54 bg.setLanguage(BG_LANG_EN);
55 bg.begin(WIFI_NAME, WIFI_PASSWORD);
56}
57
58void loop() {
59 bg.loop(); // évite ici les longs delay()
60 if (isOn && effect == "gokkusagi") {
61 static uint16_t hue = 0; hue += 64;
62 for (int i = 0; i < LED_COUNT; i++) strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(hue + i * 2000)));
63 strip.show(); delay(5);
64 } else if (isOn && effect == "nefes") { // s’éteint et se rallume doucement
65 float wave = (sin(millis() / 600.0) + 1.0) / 2.0;
66 strip.setBrightness((uint8_t)(map(brightness, 0, 100, 0, 255) * (0.15 + 0.85 * wave)));
67 strip.show(); delay(10);
68 } else if (isOn && effect == "yanip_sonme") { // clignote toutes les demi-secondes
69 strip.setBrightness((millis() / 500) % 2 ? map(brightness, 0, 100, 0, 255) : 0);
70 strip.show(); delay(10);
71 }
72}
73FAQ
Puis-je téléverser directement le code de cette page ?
Tu peux, mais il ne se connectera pas : la clé d'appareil et les infos Wi-Fi qu'il contient sont à remplacer. Dans l'appli, va dans Atelier › Appareils › Ajouter un appareil et choisis Ruban LED RGB ; Ohmi prépare le code avec ta clé, le nom de ton réseau et ton mot de passe. Copie ce code et téléverse-le. Tu retrouves le code complet plus tard dans Appareil › Code et clé.
Ça marche aussi avec un Pico W ?
Oui. Choisis Pico W comme carte en ajoutant l'appareil ; le code reste le même, seule la broche de données change : le DIN du ruban va sur GP2, le 5V sur VBUS et le GND sur GND. Dans l'Arduino IDE, installe le paquet "pico" depuis le gestionnaire de cartes et Adafruit NeoPixel depuis le gestionnaire de bibliothèques. Le circuit et la photo de cette page ont été faits avec un ESP32.
Puis-je alimenter le ruban par USB ?
Pour de courts essais oui, mais attention : chaque LED consomme environ 60 mA en blanc complet, donc 30 LED à pleine luminosité peuvent monter à 1,8 A. C'est plus que ce que l'USB et la carte supportent. Pour un usage prolongé ou une forte luminosité, alimente le ruban avec un adaptateur 5 V 2 A séparé et relie son GND au GND de la carte. Le code est prévu pour 30 LED ; si ton ruban est plus long, change LED_COUNT et choisis l'adaptateur en conséquence.
Que puis-je changer dans l'appli ?
L'écran de l'appareil a quatre commandes : l'interrupteur Lumière allume et éteint le ruban, le sélecteur Couleur peint toutes les LED de la même couleur, le curseur Luminosité va de 0 à 100 et la liste Effet propose Fixe, Arc-en-ciel, Respiration ou Clignotement. Après une coupure de courant, ta dernière couleur, ta luminosité et ton effet reviennent dès que la carte se reconnecte.
