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.

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.
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

Código-fonte
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}
72Perguntas 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.
