LEDs de endereço coloridos para o novo ano sem programação e solda

O ano novo está chegando em breve, mas o clima por várias razões às vezes não é o ano novo, e aqui a iluminação do ano novo vem em socorro. Quero falar sobre minha experiência com guirlandas e fitas de LED endereçáveis. É improvável que descubra a América, mas ficou bonito e barato.



Vou considerar duas opções - separadamente, sem a automação residencial existente e trabalhar em conjunto com uma “casa inteligente”.


Muitas informações estruturadas apareceram em fitas LED endereçáveis ​​e, portanto, você pode facilmente fazer uma escolha informada. Por exemplo, antes de comprar, assisti atentamente aos vídeos correspondentes dos canais DrZzs (em inglês) e The Hook Up (em inglês) e tirei conclusões sobre o custo das fitas necessárias - porque o resultado do trabalho das fitas no meu caso é um - destaque colorido.


Ele optou por duas opções baratas da China:


  1. Fita WS2812B - 300 LEDs - 5 metros.
  2. WS2811 Garland - 50 LEDs x 3 peças - aproximadamente 10 metros (3 x 3,3 m)


Pixels de endereço no interior de um escritório


Nos dois casos, são necessários 5 volts para alimentar minhas fitas. Não contei com energia, mas instalei a fonte de alimentação Mean Well RS-150-5 existente e acessível.



Fonte de alimentação Mean Well RS-150-5


E a parte mais importante para gerenciar o programa de Ano Novo é o controlador. Escolhi o microcontrolador ESP8266 do fabricante chinês Espressif Systems, ou seja, no meu caso, usei uma miniplaca LOLIN (WEMOS) D1 de baixo custo.



LOLIN (WEMOS) D1 mini-psiquiatra conectado a uma fita na árvore de Natal


Hardware


Para fitas e guirlandas, há uma escolha muito ampla - há um grande número de chipsets diferentes e você precisa procurar para que o controlador suporte as fitas que você vai comprar.
Minha tarefa era usar fitas de pixel de endereço como parte da automação baseada no Home Assistant da plataforma de código aberto. A opção mais acessível para isso é usar o ESP8266. Há um grande banco de dados de controladores fabricados de fábrica compatíveis (seção LED Controller), compilados pelos autores do firmware Tasmota.
Na minha opinião, Tasmota é um bom firmware, mas para pixels controlados e motores de passo não é muito adequado.



LOLIN (WEMOS) D1 mini conectado a uma guirlanda


De software


Opção sem automação residencial


Se você deseja um início rápido "sem registro e SMS", a solução mais razoável é o firmware ESP8266 do projeto WLED (driver de efeitos de iluminação WiFi) . O firmware possui seu próprio aplicativo que permite controlar facilmente os LEDs, além de uma enorme lista de efeitos predefinidos para fitas de endereço e guirlandas. O WLED também suporta muitos protocolos de gerenciamento, incluindo MQTT , se necessário.
A solda para conectar a fita ao WEMOS não é necessária.



Interface WLED (driver de efeitos de iluminação WiFi)


Iluminação direcionada como parte de uma casa inteligente com base no Home Assistant


Note-se que o WLED recentemente (em dezembro de 2019) apareceu integração total para o Home Assistant .
Porém, desde que eu estava envolvido em guirlandas em novembro, antes que essa integração aparecesse, a conexão WLED MQTT do Assistente Doméstico me pareceu um buggy.



Painel de Controle ESPHome


Para o Home Assistant, existe um firmware ESPHome nativo que funciona com o Home Assistant sem MQTT e também suporta LEDs de endereço .


Aqui está uma lista de chipsets suportados.

Clockless:
NEOPIXEL
WS2811
WS2811_400 (WS2811 com uma taxa de clock de 400kHz)
WS2812B
WS2812
WS2813
WS2852
APA104
APA106
Gw6205
GW6205_400 (GW6205 com uma taxa de clock de 400kHz)
LPD1886
LPD1886_8BIT (LPD1886 com valores de canal de cores de 8 bits)
PL9823
SK6812
SK6822
TM1803
TM1804
TM1809
TM1829
UCS1903B
UCS1903
UCS1904
UCS2903


SPI:
APA102
Dotstar
LPD8806
P9813
SK9822
SM16716
WS2801
WS2803


Como uso a imagem Hass.io , usei a opção mais simples para compilar o firmware - o complemento ESPHome Hass.io Add-on .



Janela do editor de firmware ESPHome


As guirlandas e fitas de firmware resultantes:


ws2811_string.yaml
substitutions: devicename: ws2811_string upper_devicename: WS2811 string esphome: name: $devicename platform: ESP8266 board: d1_mini wifi: ssid: "XXX" password: "XXX" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "WS2811 string Fallback Hotspot" password: "XXX" captive_portal: web_server: port: 80 css_url: http://192.168.15.10:8123/local/webserver-v1.min.css #   -        https://github.com/esphome/issues/issues/648 js_url: http://192.168.15.10:8123/local/webserver-v1.min.js # Enable Home Assistant API api: # Enable OTA Access ota: # Enable verbose logging over serial logger: light: - platform: fastled_clockless chipset: WS2811 pin: D4 num_leds: 150 name: " WS2811" effects: - addressable_rainbow: name: Rainbow Effect With Custom Values speed: 30 width: 150 - addressable_color_wipe: name: Color Wipe Effect With Custom Values colors: - red: 10% green: 10% blue: 100% num_leds: 1 - red: 0% green: 0% blue: 0% num_leds: 1 add_led_interval: 100ms reverse: False - random: name: "My Fast Random Effect" transition_length: 4s update_interval: 5s - strobe: name: Strobe Effect With Custom Values colors: - state: True brightness: 100% red: 100% green: 90% blue: 0% duration: 500ms - state: False duration: 250ms - state: True brightness: 100% red: 0% green: 100% blue: 0% duration: 500ms - addressable_scan: name: Scan Effect With Custom Values move_interval: 60ms - addressable_fireworks: name: Fireworks Effect With Custom Values update_interval: 32ms spark_probability: 10% use_random_color: false fade_out_rate: 120 #     sensor: - platform: uptime id: uptime_sec - platform: wifi_signal name: ${upper_devicename} WiFi Signal id: wifis_signal update_interval: 900s text_sensor: - platform: template name: ${upper_devicename} Uptime lambda: |- int seconds = (id(uptime_sec).state); int days = seconds / (24 * 3600); seconds = seconds % (24 * 3600); int hours = seconds / 3600; seconds = seconds % 3600; int minutes = seconds / 60; seconds = seconds % 60; return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() }; icon: mdi:clock-start update_interval: 113s - platform: template name: ${upper_devicename} Wifi Strength icon: "mdi:wifi" lambda: |- if (id(wifis_signal).state > -50 ) { return {"Excellent"}; } else if (id(wifis_signal).state > -60) { return {"Good"}; } else if (id(wifis_signal).state > -70) { return {"Fair"}; } else if (id(wifis_signal).state < -70) { return {"Weak"}; } else { return {"None"}; } update_interval: 900s - platform: version name: ${upper_devicename} Version - platform: template name: ${upper_devicename} MAC Address lambda: 'return {WiFi.macAddress().c_str()};' icon: mdi:fingerprint update_interval: 1d switch: - platform: restart name: ${upper_devicename} Restart 

ws2811_strip.yaml
 substitutions: devicename: ws2811_strip upper_devicename: WS2811 strip esphome: name: $devicename platform: ESP8266 board: d1_mini_lite wifi: ssid: "XXX" password: "XXX" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "WS2811 strip Fallback Hotspot" password: "XXX" captive_portal: web_server: port: 80 css_url: http://192.168.15.10:8123/local/webserver-v1.min.css #   -        https://github.com/esphome/issues/issues/648 js_url: http://192.168.15.10:8123/local/webserver-v1.min.js # Enable Home Assistant API api: # Enable OTA Access ota: # Enable verbose logging over serial logger: light: - platform: fastled_clockless chipset: WS2811 pin: D4 num_leds: 300 rgb_order: GRB name: " WS2811" effects: - addressable_rainbow: name: Rainbow Effect With Custom Values speed: 30 width: 300 - addressable_color_wipe: name: Color Wipe Effect With Custom Values colors: - red: 10% green: 10% blue: 100% num_leds: 1 - red: 0% green: 0% blue: 0% num_leds: 1 add_led_interval: 100ms reverse: False - random: name: "My Fast Random Effect" transition_length: 4s update_interval: 5s - strobe: name: Strobe Effect With Custom Values colors: - state: True brightness: 100% red: 100% green: 90% blue: 0% duration: 500ms - state: False duration: 250ms - state: True brightness: 100% red: 0% green: 100% blue: 0% duration: 500ms - addressable_scan: name: Scan Effect With Custom Values move_interval: 60ms - addressable_fireworks: name: Fireworks Effect With Custom Values update_interval: 32ms spark_probability: 10% use_random_color: false fade_out_rate: 120 #     sensor: - platform: uptime id: uptime_sec - platform: wifi_signal name: ${upper_devicename} WiFi Signal id: wifis_signal update_interval: 900s text_sensor: - platform: template name: ${upper_devicename} Uptime lambda: |- int seconds = (id(uptime_sec).state); int days = seconds / (24 * 3600); seconds = seconds % (24 * 3600); int hours = seconds / 3600; seconds = seconds % 3600; int minutes = seconds / 60; seconds = seconds % 60; return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() }; icon: mdi:clock-start update_interval: 113s - platform: template name: ${upper_devicename} Wifi Strength icon: "mdi:wifi" lambda: |- if (id(wifis_signal).state > -50 ) { return {"Excellent"}; } else if (id(wifis_signal).state > -60) { return {"Good"}; } else if (id(wifis_signal).state > -70) { return {"Fair"}; } else if (id(wifis_signal).state < -70) { return {"Weak"}; } else { return {"None"}; } update_interval: 900s - platform: version name: ${upper_devicename} Version - platform: template name: ${upper_devicename} MAC Address lambda: 'return {WiFi.macAddress().c_str()};' icon: mdi:fingerprint update_interval: 1d switch: - platform: restart name: ${upper_devicename} Restart 

Depois de adicionar os dispositivos resultantes ao Assistente Doméstico na interface, você pode ver e definir as opções de efeitos.



Interface do Assistente Doméstico


Além disso, os efeitos podem ser usados ​​na automação. Por exemplo, quando você abre a porta por 30 segundos, um efeito, 10 segundos, outro efeito e, em seguida, desliga para não distrair. Mas há uma condição: inclusão apenas quando a rua já está no crepúsculo.


automations.yaml
 ################################################### # # # WS2811 :    # # # ################################################### - alias: WS2811 string trigger: - platform: state entity_id: binary_sensor.dver from: 'off' to: 'on' condition: - condition: numeric_state entity_id: 'sensor.osveshchennost_u_okna' below: 1500 # action: - service: homeassistant.turn_on data: entity_id: group.new_year #light.girlianda_ws2811 brightness: 255 effect: Rainbow Effect With Custom Values - delay: '00:00:25' - service: homeassistant.turn_on data: entity_id: group.new_year brightness: 255 effect: Color Wipe Effect With Custom Values - delay: '00:00:13' - service: homeassistant.turn_off entity_id: group.new_year - alias: Table lamp ON trigger: - platform: state entity_id: binary_sensor.dver from: 'off' to: 'on' condition: - condition: numeric_state entity_id: 'sensor.osveshchennost_u_okna' below: 90 # action: - service: homeassistant.turn_on entity_id: switch.potolochnaia_lampa - alias: Table lamp OFF trigger: - platform: state entity_id: binary_sensor.dver from: 'on' to: 'off' condition: [] action: - service: homeassistant.turn_off entity_id: switch.potolochnaia_lampa 


Árvore de Natal com fita LED de endereço


Sumário


Como você pode ver, com um pouco de destreza, você pode organizar a iluminação de Ano Novo de maneira barata e ajustá-la ao sistema “smart home” existente ou usá-lo separadamente, sem automação residencial, usando um aplicativo separado em seu smartphone.


Mais detalhes podem ser encontrados no GitHub .


Publicado por: Mikhail Shardin ,
23 de dezembro de 2019

Source: https://habr.com/ru/post/pt481566/


All Articles