Fita Led WS2812B (endereçável) + ESP + HA com MQTT

Venho compartilhar dessa vez minha experiência com fitas LEDs, mais especificamente leds WS2812B.

Para poder integrar com o HA você vai precisar de uma placa ESP8266 ou ESP32 e 3 jumpers macho x femêa. Não precisa soldar.

Eu já tinha fita LED integrada com o meu HA, mas são fitas leds 3528 ou 5050 (modelos mais simples), e integro com o dispositivo wifi através do APP Magic Home

Porém, meu interesse dessa vez era integrar fita led WS2812B, que nada mais é que fita com led endereçável.

Fitas LEDs Endereçável

Seu diferencial é que possui LEDs que acendem verde, vermelho e azul. Utilizando a bilbioteca apropriada para Arduino é possível mixar as três cores para se obter qualquer cor no espectro RGB e por contar com LEDs WS2812B é possível controlar qual LED deve acender, qual deve apagar e qual cor cada um dos LEDs deve mostrar de forma totalmente independente dos demais LEDs.

A fita led endereçável tem alguns modelos como: WS2815, WS2813, WS2812B e WS2811. Ainda existem os modelos SK6812 e APA102 que desconheço e não sei dizer se são compostos por led endereçável.

  • A luz de tira do WS2813 é uma versão atualizada do WS2812B, semelhante à forma como o WS2812B é uma versão aprimorada do WS2811, mas com a função de interrupção contínua, enquanto um IC está quebrado, o sinal ainda pode passar.
  • A luz de tira WS2815 é entrada DC12v em vez de entrada DC5v, é a principal diferença,
  • Com entrada de 12v, a faixa de LED WS2815 pode ser maior que a faixa de luz WS2812B devido a uma menor queda de tensão.

A fita led que comprei foi a modelo WS2812B, com 2 metros de comprimento e 30 leds por metro. Isso porque queria testar antes de investir. Comprei na Aliexpress.

WLED

Quando chegou a fita led, ainda não sabia quais opções eu poderia utilizar para integrar com o HA, e foi onde começou a saga pelo alternativa mais adequada e com algumas dicas do pessoal do Grupo do Telegram, descobri o WLED.

WLED é um projeto para uma implementação rápida e rica em recursos de um servidor da Web ESP8266/ESP32 para controlar os LEDs NeoPixel (WS2812B, WS2811, SK6812, APA102) disponibilizado no github para quem tiver interesse.

Link do projeto: https://github.com/Aircoookie/WLED

Instalação

Para aplicar o flash, utilizo o programa esphomeflasher, mas você pode utilizar outro de sua preferência.
Download: https://github.com/esphome/esphome-flasher/releases

Após baixar o programa, você precisa baixar o arquivo binário do WLED.
Download: https://github.com/Aircoookie/WLED/releases

Durante a criação desse artigo, a versão atual é a WLED version 0.8.6, e se você perceber tem várias versões, como usei o ESP8266, baixei uma versão para esse ESP.
Mesmo assim, term várias opções e eu não encontrei em algum local que mostrasse a diferença entre um e outro, inclusive testei mais de um modelo e todos funcionaram, mas a versão que deixei no meu foi a WLED_0.8.6_ESP8266.bin.

Com o arquivo para aplicar o flash e o arquivo .bin baixados no seu PC, vamos iniciar o flash que é muito simples. Basta conectar seu ESP no seu PC, identificar a porta que está conectado, executar o esphomeflasher, selecionar o arquivo .bin WLED e iniciar o flash. Simples!


Após finalizar, com o ESP ligado na energia (5v)/PC, você pode acessar via interface web pelo IP 4.3.2.1 (http://4.3.2.1).

Interface WEB

Dentro da Interface, você pode controlar a sua fita led (porém você ainda não conectou no seu ESP) e você pode ajustar as configurações conforme o modelo da sua fita.

Abaixo, segue as configurações que precisei realizar para funcionar de forma correta o controle da fita led.

WIFI
image

LEDS

Você também pode baixar um APP e fazer o controle através do APP, basta adicionar o IP que seu ESP estará conectado. Android.

Conectar o ESP com a fita LED WS2812B

Como dito anteriormente, a fita WS2812B é alimentada por 5v, então não precisei colocar nenhum conversor ou adaptador para ligar do ESP.

A única coisa que você precisa realizar, é ligar os pinos corretamente no seu ESP conforme a imagem abaixo.

  • Conecte a faixa DIN de led ao GPIO2 (NodeMCU / Weos pin D4).
  • Conecte a faixa GND de led ao GND (qualquer um).
  • Conecte a faixa 5v de led ao 3v3.

Não soldei e funcionar sem nenhum problema.

Com a fita led conectado ao ESP e alimentado por uma fonte 5v, e tudo configurado conforme as explicações anteriores, você já consegue controlar sua fita led através do WLED (Interface web ou APP).
Você pode testar trocando cores, brilho, aplicando efeitos, etc.

Se tudo está OK, podemos começar a integrar com o HA. A integração será realizado através do MQTT, para isso você precisa ter o Broker configurado, no meu caso utilizo o Mosquitto através do Add-on do Hass.io.

Dentro da interface do WLED (menu Sync Interfaces), você precisa configurar as informações do seu MQTT para poder integrar com seu HA.

image

Código para o MQTT

Agora que está tudo configurado, abaixo compartilho o código para você colocar dentro do light: e criar sua fita led no seu HA.

  - platform: mqtt
    name: "Fita Led"
    state_topic: "wled/b40141/g"
    command_topic: "wled/b40141/api"
    rgb_state_topic: "wled/b40141/c"
    rgb_command_topic: "wled/b40141/col"
    brightness_command_topic: "wled/b40141"
    brightness_state_topic: "wled/b40141/g"
    brightness_value_template: "{{value }} "
    rgb_command_template: "{{ '#%02x%02x%02x' | format(red, green, blue)}}"
    rgb_value_template: "{{ value[1:3] | int(base=16) }},{{ value[3:5] | int(base=16) }},{{ value[5:7]| int(base=16) }}"
    qos: 2
    optimistic: true
    on_command_type: "first"
    payload_on: "T=1"
    payload_off: "T=0"
    effect_list:
      - "[FX=00]  STATIC"
      - "[FX=01]  BLINK"
      - "[FX=02]  BREATH"
      - "[FX=03]  COLOR_WIPE"
      - "[FX=04]  COLOR_WIPE_RANDOM"
      - "[FX=05]  RANDOM_COLOR"
      - "[FX=06]  COLOR_SWEEP"
      - "[FX=07]  DYNAMIC"
      - "[FX=08]  RAINBOW"
      - "[FX=09]  RAINBOW_CYCLE"
      - "[FX=10]  SCAN"
      - "[FX=11]  DUAL_SCAN"
      - "[FX=12]  FADE"
      - "[FX=13]  THEATER_CHASE"
      - "[FX=14]  THEATER_C_RAINBOW"
      - "[FX=15]  RUNNING_LIGHTS"
      - "[FX=16]  SAW"
      - "[FX=17]  TWINKLE"
      - "[FX=18]  DISSOLVE"
      - "[FX=19]  DISSOLVE_RANDOM"
      - "[FX=20]  SPARKLE"
      - "[FX=21]  FLASH_SPARKLE"
      - "[FX=22]  HYPER_SPARKLE"
      - "[FX=23]  STROBE"
      - "[FX=24]  STROBE_RAINBOW"
      - "[FX=25]  MULTI_STROBE"
      - "[FX=26]  BLINK_RAINBOW"
      - "[FX=27]  ANDROID"
      - "[FX=28]  CHASE_COLOR"
      - "[FX=29]  CHASE_RANDOM"
      - "[FX=30]  CHASE_RAINBOW"
      - "[FX=31]  CHASE_FLASH"
      - "[FX=32]  CHASE_FLASH_RANDOM"
      - "[FX=33]  CHASE_RAINBOW_WHITE"
      - "[FX=34]  COLORFUL"
      - "[FX=35]  TRAFFIC_LIGHT"
      - "[FX=36]  COLOR_SWEEP_RANDOM"
      - "[FX=37]  RUNNING_COLOR"
      - "[FX=38]  RUNNING_RED_BLUE"
      - "[FX=39]  RUNNING_RANDOM"
      - "[FX=40]  LARSON_SCANNER"
      - "[FX=41]  COMET"
      - "[FX=42]  FIREWORKS"
      - "[FX=43]  RAIN"
      - "[FX=44]  MERRY_CHRISTMAS"
      - "[FX=45]  FIRE_FLICKER"
      - "[FX=46]  GRADIENT"
      - "[FX=47]  LOADING"
      - "[FX=48]  DUAL_COLOR_WIPE_IN_OUT"
      - "[FX=49]  DUAL_COLOR_WIPE_IN_IN"
      - "[FX=50]  DUAL_COLOR_WIPE_OUT_OUT"
      - "[FX=51]  DUAL_COLOR_WIPE_OUT_IN"
      - "[FX=52]  CIRCUS_COMBUSTUS"
      - "[FX=53]  HALLOWEEN"
      - "[FX=54]  TRICOLOR_CHASE"
      - "[FX=55]  TRICOLOR_WIPE"
      - "[FX=56]  TRICOLOR_FADE"
      - "[FX=57]  LIGHTNING"
      - "[FX=58]  ICU"
      - "[FX=59]  MULTI_COMET"
      - "[FX=60]  DUAL_LARSON_SCANNER"
      - "[FX=61]  RANDOM_CHASE"
      - "[FX=62]  OSCILLATE"
      - "[FX=63]  PRIDE_2015"
      - "[FX=64]  JUGGLE"
      - "[FX=65]  PALETTE"
      - "[FX=66]  FIRE_2012"
      - "[FX=67]  COLORWAVES"
      - "[FX=68]  BPM"
      - "[FX=69]  FILLNOISE8"
      - "[FX=70]  NOISE16_1"
      - "[FX=71]  NOISE16_2"
      - "[FX=72]  NOISE16_3"
      - "[FX=73]  NOISE16_4"
      - "[FX=74]  COLORTWINKLE"
      - "[FX=75]  LAKE"
      - "[FX=76]  METEOR"
      - "[FX=77]  METEOR_SMOOTH"
      - "[FX=78]  RAILWAY"
      - "[FX=79]  RIPPLE"
      - "[FX=80]  TWINKLEFOX"    
      - "[FX=81]  Twinklecat"    
      - "[FX=82]  Halloween Eyes" 
    effect_command_topic: "wled/b40141/api"
    effect_state_topic: "wled/b40141/api"
    effect_value_template: "{{ value }}"

Atualmente o projeto WLED tem 82 efeitos configurados, mas como podem ver, há várias versões já lançadas e sempre vem aumentando esse número de efeitos, então pode vir surgir mais opções, mas os 82 efeitos configurados já da para interagir bastante.

Observação: Para fitas com mais de 5 metros, sugiro verificar a instalação de um profissional, pois a maioria já exige uma fonte mais adequada.

Se você tem esse projeto configurado, compartilhe sua experiência, quem sabe pode ter mais detalhes que possam ajudar a todos que tem interesse.

Agradecimentos ao @Leonardo que ficou na saga me ajudando a configurar. Obrigado!

4 Likes

Muito top!! :grinning: Parabéns pelo tutorial, quando comprar a minha fita eu vou seguir… Eu mais aprendi que ajudei :clap::clap::clap:

1 Like

Muito bom, ficou legal seu tutorial!

1 Like

Fala Douglas!

Alimentar a Led diretamente pelo Node MCU não é muito legal. A não ser que a quantidade de pixels (leds) seja bem pequena. O ideal é você ligar no Node MCU somente o cabo de dados PIN4 e o GND (Neutro) e puxar o positivo diretamente da fonte de 5V. Dessa forma você pode colocar corrente acima de 1000ma (1A) e ter mais luminosidade na sua fita e não forçar o NODE MCU.

Outra coisa é que o WLED já está totalmente integrado ao HA em versão beta já lançada e em breve na versão estável. O que ainda falta nessa integração são os controles de velocidade, paleta de cores e intensidade dos efeitos.

No mais, o WLED é realmente um software fantástico e que pode ser implementado com um custo muito baixo como os NODE MCU 8266 :slight_smile:

1 Like

Show de bola Edgar, vou puxar a alimentação diretamente da fonte de 5V. Eu comprei fita led 12v (ainda não chegou) ae mesmo precisarei puxar direto da fonte.

Estou usando um fita 6803 de 12V. Para facilitar estou usando uma base para NodeMCU onde tem pinos com saídas de 3.3V, 5V e 12V desta forma fica fácil ligar a fita led se precisar de varias fontes.
Obs.: Tamanho da fita 5Mts com 150 Leds

Show de bola, Seria interessante compartilhar imagem do projeto se possível.

Chegaram minhas fitas LED’s mode ws2815 - 5m 60led ip67 (12v).

Fiz um novo projeto WLED para essas fitas, baixei a versão mais atual do WLED para utilizar em um outro ESP, o que mudou é que após aplicar o arquivo binário é criado um ponto de rede (Wifi) chamado WLED-AP com a senha wled1234. Com isso você terá acesso aos paineis de configurações conforme o tutorial.

Desta vez eu utilizei fontes separadas para a fita led e para o ESP, ficou dessa forma (ligando 20 metros)

WLED - Configurações do LED

Nas configurações do LED eu defini da seguinte maneira
image

image

Coloquei GRB para as cores ficarem corretas.

1 Like

Qual fonte está utilizando? Está ligando em 2 tomadas? Uma para o nodeMCU e outra para o LED?

Isso. Conforme a imagem duas tomadas. Uma para a fonte que energiza as fitas (ligada numa fita e as outras são conectadas uma nas outras) e uma tomada apenas para o nodeMCU.

A fonte varia da qtde e potencia dos leds. Tem um cálculo que eu não lembro mais. Eu estou usando uma de 30A.

Boa Douglas! Estou desenhando os projetos, o primeiro vai ser na cabeçeira da minha cama com no máximo 1,5m de fita mas não sei se vou pra fita simples branco quente ou pra WS2812B, o segundo um “abajur” vertical pra ficar no canto da sala, essa com certeza com a WS2812B. O ideal é comprar uma fita de 5m, cortar e montar cada uma com no nodeMCU, certo? Se fizer com a simples branco quente, ainda será possivel dimmerizá-la?

Obrigado!

Olá Acácio.

Sempre recomendo dar uma olhada no site oficial: https://github.com/Aircoookie/WLED

Segundo o site:
Uma implementação rápida e rica em recursos de um servidor da Web ESP8266 / ESP32 para controlar os LEDs NeoPixel (WS2812B, WS2811, SK6812, APA102) ou também chipsets baseados em SPI como o WS2801!

Esses modelos acima são compatíveis, se você comprar algo nos modelos acima deve funcionar sem problema.

E sim, você terá um nodeMCU para cada led que você quer controlar. Até pode usar um só, mas as fitas terão que ficar interligadas e não vai poder ligar ou desligar individualmente.