#374IntermediárioIoT

ESP32 Fita LED RGB IoT (WS2812B)

Controle a luz do cômodo pelo celular: escolha a cor, ajuste o brilho, ligue o efeito arco-íris ou respiração. Este projeto é o guia passo a passo do modelo IoT Fita LED RGB do app, montado com um ESP32 e uma fita WS2812B de 30 LEDs com três fios. Vá em Oficina › Dispositivos › Adicionar dispositivo e escolha Fita LED RGB; o Ohmi prepara o código com a sua própria chave de dispositivo. O código desta página é um exemplo: a chave e os dados do Wi-Fi são valores de exemplo.

0.0(0)
ESP32 Fita LED RGB IoT (WS2812B)
Se você quer colar uma fita de LED atrás da mesa, embaixo da cama ou na beirada de uma prateleira e controlar tudo pelo celular, este projeto é para você. Você escolhe qualquer cor na roda de cores do app, ajusta o brilho num controle deslizante e muda o clima do cômodo com o efeito arco-íris, respiração ou piscar. Cada LED pode ser controlado sozinho, então as cores correm pela fita. O app prepara o código para você; você só liga três fios e envia. Sem tomada, só 5 V.
IoT · controle remotoSeu primeiro dispositivo é grátis

Controle este dispositivo pelo app

Conecte seu ESP32 ou Raspberry Pi Pico W ao Wi-Fi, ligue e desligue pelo celular e veja as leituras ao vivo. O Ohmi prepara o código; você só informa os dados do Wi-Fi e faz o upload.

Modelo no app: Fita LED RGB

  • Onde fica no app?Adicione um novo dispositivo pela aba Ferramentas ou em Oficina › Dispositivos e escolha este modelo.
  • Biblioteca ArduinoAbra o Gerenciador de Bibliotecas no Arduino IDE, procure BlueGraysIoT e instale.
Baixe o app grátis

O plano grátis inclui 1 dispositivo, 1 gráfico e 24 horas de histórico. Com o Premium, você tem mais dispositivos, mais gráficos e histórico mais longo.

Esquema do circuito

ESP32 Fita LED RGB IoT (WS2812B) - Circuit

Código-fonte

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 Fita LED RGB IoT (WS2812B)
4// ─────────────────────────────────────────
5// O modelo IoT "Fita LED RGB" do app BlueGrays: você muda pelo celular a
6// luz, a cor, o brilho e o efeito (fixo, arco-íris, respiração, piscar) de
7// uma fita WS2812B de 30 LEDs. O Ohmi prepara o código de verdade no app
8// com a sua própria chave de dispositivo (Oficina › Dispositivos ›
9// Adicionar dispositivo); o código daqui é um exemplo, a chave do
10// dispositivo e os dados do Wi-Fi são valores de exemplo. Gerenciador de
11// bibliotecas: BlueGraysIoT (com as dependências) e Adafruit NeoPixel. A
12// placa só se conecta a redes Wi-Fi de 2,4 GHz. Para 30 LEDs no brilho
13// máximo, alimente a fita com uma fonte separada de 5 V 2 A e una os GNDs.
14//
15// Pinos:
16//   GPIO13 -> Fita WS2812B DIN
17//   5V, GND -> Fita 5V, GND
18//   Pico W: fita DIN GP2, 5V VBUS
19
20/*
21 * Fita LED RGB · BlueGrays IoT
22 * BlueGrays · bluegrays.com
23 * Não compartilhe este código: ele contém a chave do dispositivo e a senha do Wi-Fi.
24 */
25
26#include <BlueGraysIoT.h>
27#include <Adafruit_NeoPixel.h>  // Gerenciador de bibliotecas: 'Adafruit NeoPixel'
28
29const char *DEVICE_KEY = "SUA_CHAVE_DO_DISPOSITIVO";
30const char *WIFI_NAME = "SUA_REDE_WIFI";
31const char *WIFI_PASSWORD = "SUA_SENHA_WIFI";
32
33BlueGraysIoT bg(DEVICE_KEY);
34
35const int LED_COUNT = 30;
36Adafruit_NeoPixel strip(LED_COUNT, 13, NEO_GRB + NEO_KHZ800);
37bool isOn = false; uint8_t cr = 255, cg = 255, cb = 255; int brightness = 70; String effect = "sabit";
38void paint() {
39  strip.setBrightness(isOn ? map(brightness, 0, 100, 0, 255) : 0);
40  for (int i = 0; i < LED_COUNT; i++) strip.setPixelColor(i, strip.Color(cr, cg, cb));
41  strip.show();
42}
43
44void setup() {
45  Serial.begin(115200);
46  strip.begin();
47  paint();
48  bg.onSwitch("acik", [](bool on) { isOn = on; paint(); });
49  bg.onColor("renk", [](uint8_t r, uint8_t g, uint8_t b) { cr = r; cg = g; cb = b; paint(); });
50  bg.onNumber("parlaklik", [](float v) { brightness = (int)v; paint(); });
51  bg.onChoice("efekt", [](const char *e) { effect = e; paint(); });
52  bg.setDebug(Serial);
53  bg.setLanguage(BG_LANG_EN);
54  bg.begin(WIFI_NAME, WIFI_PASSWORD);
55}
56
57void loop() {
58  bg.loop();  // evite delay() longos aqui
59  if (isOn && effect == "gokkusagi") {
60    static uint16_t hue = 0; hue += 64;
61    for (int i = 0; i < LED_COUNT; i++) strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(hue + i * 2000)));
62    strip.show(); delay(5);
63  } else if (isOn && effect == "nefes") {  // apaga e acende devagar
64    float wave = (sin(millis() / 600.0) + 1.0) / 2.0;
65    strip.setBrightness((uint8_t)(map(brightness, 0, 100, 0, 255) * (0.15 + 0.85 * wave)));
66    strip.show(); delay(10);
67  } else if (isOn && effect == "yanip_sonme") {  // pisca a cada meio segundo
68    strip.setBrightness((millis() / 500) % 2 ? map(brightness, 0, 100, 0, 255) : 0);
69    strip.show(); delay(10);
70  }
71}
72

Perguntas frequentes

Posso enviar o código desta página direto para a placa?

Pode, mas ela não vai se conectar: a chave do dispositivo e os dados do Wi-Fi no código são valores de exemplo. No app, vá em Oficina › Dispositivos › Adicionar dispositivo e escolha Fita LED RGB; o Ohmi prepara o código com a sua chave, o nome da sua rede e a sua senha. Copie esse código e envie. Depois você vê o código completo em Dispositivo › Código e chave.

Funciona com um Pico W também?

Funciona. Ao adicionar o dispositivo, escolha Pico W como placa; o código continua o mesmo e só muda o pino de dados: o DIN da fita vai no GP2, o 5V no VBUS e o GND no GND. No Arduino IDE, instale o pacote "pico" pelo Gerenciador de placas e a Adafruit NeoPixel pelo Gerenciador de bibliotecas. O circuito e a foto desta página foram feitos com um ESP32.

Posso alimentar a fita pelo USB?

Para testes rápidos sim, mas cuidado: cada LED consome cerca de 60 mA no branco total, então 30 LEDs no brilho máximo podem chegar a 1,8 A. É mais do que o USB e a placa aguentam. Para uso longo ou brilho alto, alimente a fita com uma fonte separada de 5 V 2 A e ligue o GND da fonte no GND da placa. O código é para 30 LEDs; se a sua fita for maior, mude LED_COUNT e escolha a fonte de acordo.

O que eu posso mudar no app?

A tela do dispositivo tem quatro controles: o interruptor Luz liga e desliga a fita, o seletor de Cor pinta todos os LEDs da mesma cor, o controle Brilho vai de 0 a 100 e a lista Efeito oferece Fixo, Arco-íris, Respiração ou Piscar. Depois de uma queda de energia, a última cor, o brilho e o efeito voltam assim que a placa se reconecta.