#374IntermedioIoT

ESP32 Tira LED RGB IoT (WS2812B)

Controla la luz de tu habitación desde el móvil: elige el color, ajusta el brillo, activa el efecto arcoíris o respiración. Esta es la guía paso a paso de la plantilla IoT Tira LED RGB de la app, montada con un ESP32 y una tira WS2812B de 30 LED con tres cables. Ve a Taller › Dispositivos › Añadir dispositivo y elige Tira LED RGB; Ohmi prepara el código con tu propia clave de dispositivo. El código de esta página es un ejemplo: la clave y los datos del Wi-Fi son de relleno.

0.0(0)
ESP32 Tira LED RGB IoT (WS2812B)
Si quieres pegar una tira LED detrás del escritorio, debajo de la cama o en el borde de una estantería y controlarla desde el móvil, este proyecto es para ti. Eliges cualquier color en la rueda de colores de la app, ajustas el brillo con un deslizador y cambias el ambiente con el efecto arcoíris, respiración o parpadeo. Cada LED se puede controlar por separado, así los colores fluyen a lo largo de la tira. La app prepara el código por ti; tú solo conectas tres cables y lo subes. Sin corriente de casa, solo 5 V.
IoT · control remotoTu primer dispositivo es gratis

Controla este dispositivo desde la app

Conecta tu ESP32 o Raspberry Pi Pico W al wifi, enciéndelo y apágalo desde el móvil y mira las lecturas en directo. Ohmi prepara el código; tú solo pones los datos de tu wifi y lo subes.

Plantilla en la app: Tira LED RGB

  • ¿Dónde está en la app?Añade un dispositivo nuevo desde la pestaña Herramientas o en Taller › Dispositivos y elige esta plantilla.
  • Librería de ArduinoAbre el Gestor de librerías en el Arduino IDE, busca BlueGraysIoT e instálala.
Descarga la app gratis

El plan gratis incluye 1 dispositivo, 1 gráfica y 24 horas de historial. Con Premium tienes más dispositivos, más gráficas y un historial más largo.

Diagrama del circuito

ESP32 Tira LED RGB IoT (WS2812B) - Circuit

Código fuente

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 Tira LED RGB IoT (WS2812B)
4// ─────────────────────────────────────────
5// La plantilla IoT "Tira LED RGB" de la app BlueGrays: cambias desde el
6// móvil la luz, el color, el brillo y el efecto (fijo, arcoíris,
7// respiración, parpadeo) de una tira WS2812B de 30 LED. Ohmi prepara el
8// código real en la app con tu propia clave de dispositivo (Taller ›
9// Dispositivos › Añadir dispositivo); el código de aquí es un ejemplo, la
10// clave del dispositivo y los datos del Wi-Fi son de relleno. Gestor de
11// bibliotecas: BlueGraysIoT (con sus dependencias) y Adafruit NeoPixel. La
12// placa solo se conecta a redes Wi-Fi de 2,4 GHz. Para 30 LED a pleno
13// brillo, alimenta la tira con un adaptador aparte de 5 V 2 A y une las
14// masas.
15//
16// Pines:
17//   GPIO13 -> Tira WS2812B DIN
18//   5V, GND -> Tira 5V, GND
19//   Pico W: tira DIN GP2, 5V VBUS
20
21/*
22 * Tira LED RGB · BlueGrays IoT
23 * BlueGrays · bluegrays.com
24 * No compartas este código: contiene la clave de tu dispositivo y la contraseña del Wi-Fi.
25 */
26
27#include <BlueGraysIoT.h>
28#include <Adafruit_NeoPixel.h>  // Gestor de bibliotecas: 'Adafruit NeoPixel'
29
30const char *DEVICE_KEY = "TU_CLAVE_DE_DISPOSITIVO";
31const char *WIFI_NAME = "TU_RED_WIFI";
32const char *WIFI_PASSWORD = "TU_CONTRASENA_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();  // evita aquí los delay() largos
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") {  // se apaga y se enciende despacio
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") {  // parpadea cada medio segundo
69    strip.setBrightness((millis() / 500) % 2 ? map(brightness, 0, 100, 0, 255) : 0);
70    strip.show(); delay(10);
71  }
72}
73

Preguntas frecuentes

¿Puedo subir el código de esta página directamente a la placa?

Puedes, pero no se conectará: la clave del dispositivo y los datos del Wi-Fi que lleva son de relleno. En la app ve a Taller › Dispositivos › Añadir dispositivo y elige Tira LED RGB; Ohmi prepara el código con tu clave, el nombre de tu red y tu contraseña. Copia ese código y súbelo. Más tarde puedes ver el código completo en Dispositivo › Código y clave.

¿Funciona también con una Pico W?

Sí. Al añadir el dispositivo elige Pico W como placa; el código es el mismo y solo cambia el pin de datos: el DIN de la tira va a GP2, 5V a VBUS y GND a GND. En Arduino IDE instala el paquete "pico" desde el Gestor de placas y Adafruit NeoPixel desde el Gestor de bibliotecas. El circuito y la foto de esta página se hicieron con un ESP32.

¿Puedo alimentar la tira por USB?

Para pruebas cortas sí, pero con cuidado: cada LED consume unos 60 mA en blanco total, así que 30 LED a pleno brillo pueden llegar a 1,8 A. Eso es más de lo que aguantan el USB y la placa. Para uso prolongado o brillo alto, alimenta la tira con un adaptador aparte de 5 V 2 A y conecta el GND del adaptador al GND de la placa. El código es para 30 LED; si tu tira es más larga, cambia LED_COUNT y elige el adaptador en consecuencia.

¿Qué puedo cambiar en la app?

La pantalla del dispositivo tiene cuatro controles: el interruptor Luz enciende y apaga la tira, el selector de Color pinta todos los LED del mismo color, el deslizador Brillo va de 0 a 100 y la lista Efecto ofrece Fijo, Arcoíris, Respiración o Parpadeo. Tras un corte de luz, tu último color, brillo y efecto vuelven en cuanto la placa se reconecta.