LED d'adresse colorées pour la nouvelle année sans programmation ni soudure

Le Nouvel An arrive bientôt, mais l'ambiance pour diverses raisons n'est parfois pas celle du Nouvel An, et ici l'illumination du Nouvel An vient à la rescousse. Je veux parler de mon expérience avec les guirlandes et rubans LED adressables. Il est peu probable que je découvre l'Amérique, mais cela s'est avéré magnifique et peu coûteux.



J'examinerai deux options - séparément sans domotique existante et travailler en conjonction avec une «maison intelligente».


De nombreuses informations structurées sont apparues sur les rubans LED adressables, et vous pouvez donc facilement faire un choix éclairé. Par exemple, avant d'acheter, j'ai regardé attentivement les vidéos correspondantes des chaînes DrZzs (en anglais) et The Hook Up (en anglais) et j'ai tiré des conclusions sur le coût des bandes nécessaires - parce que le résultat du travail des bandes dans mon cas est un - surlignage coloré.


Il a opté pour deux options peu coûteuses en provenance de Chine:


  1. Ruban WS2812B - 300 LED - 5 mètres.
  2. WS2811 Garland - 50 LED x 3 pièces - environ 10 mètres (3 x 3,3 m)


Pixels d'adresse à l'intérieur d'un bureau


Dans les deux cas, 5 volts sont nécessaires pour alimenter mes bandes. Je ne comptais pas sur l'alimentation, mais j'ai installé le bloc d'alimentation Mean Well RS-150-5 existant et abordable.



Unité d'alimentation Mean Well RS-150-5


Et la partie la plus importante pour gérer le programme du Nouvel An est le contrôleur. J'ai choisi le microcontrôleur ESP8266 du fabricant chinois Espressif Systems, c'est-à-dire que dans mon cas j'ai utilisé une mini carte LOLIN (WEMOS) D1 peu coûteuse.



LOLIN (WEMOS) D1 mini rétractable relié à un ruban sur l'arbre de Noël


Matériel informatique


Pour les rubans et les guirlandes, le choix est très large - il existe un grand nombre de chipsets différents et vous devez regarder pour que le contrôleur prenne en charge les rubans que vous allez acheter.
Ma tâche consistait à utiliser des bandes de pixels d'adresse dans le cadre d'une automatisation basée sur la plate-forme open source Home Assistant . L'option la plus abordable pour cela est d'utiliser l'ESP8266. Il existe une grande base de données de contrôleurs compatibles fabriqués en usine (section LED Controller), compilée par les auteurs du firmware Tasmota.
À mon avis, Tasmota est un bon firmware, mais pour les pixels contrôlés et les moteurs pas à pas, il n'est pas très approprié.



LOLIN (WEMOS) D1 mini connecté à une guirlande


Logiciels


Option sans domotique


Si vous souhaitez un démarrage rapide «sans inscription ni SMS», alors la solution la plus raisonnable est le firmware ESP8266 du projet WLED (WiFi Lighting Effects Driver) . Le firmware a sa propre application qui vous permet de contrôler facilement les LED, ainsi qu'une énorme liste d'effets prédéfinis pour les bandes d'adresse et les guirlandes. WLED prend également en charge de nombreux protocoles de gestion, y compris MQTT , si nécessaire.
Il n'est pas nécessaire de souder pour connecter la bande à WEMOS.



Interface WLED (pilote d'effets d'éclairage WiFi)


Éclairage ciblé dans le cadre d'une maison intelligente basée sur Home Assistant


Il convient de noter que WLED récemment (en décembre 2019) est apparu une intégration complète pour Home Assistant .
Mais, depuis que j'étais engagé dans des guirlandes en novembre, avant que cette intégration n'apparaisse, la connexion Home Assistant <--> WLED MQTT m'a semblé boguée.



ESPHome Control Panel


Pour Home Assistant, il existe un firmware natif ESPHome qui fonctionne avec Home Assistant sans MQTT et il prend également en charge les LED d'adresse .


Voici une liste des chipsets pris en charge.

Sans horloge:
NEOPIXEL
WS2811
WS2811_400 (WS2811 avec une fréquence d'horloge de 400 kHz)
WS2812B
WS2812
WS2813
WS2852
APA104
APA106
Gw6205
GW6205_400 (GW6205 avec une fréquence d'horloge de 400 kHz)
LPD1886
LPD1886_8BIT (LPD1886 avec des valeurs de canal de couleur 8 bits)
PL9823
SK6812
SK6822
TM1803
TM1804
TM1809
TM1829
UCS1903B
UCS1903
UCS1904
UCS2903


SPI:
APA102
Dotstar
LPD8806
P9813
SK9822
SM16716
WS2801
WS2803


Depuis que j'utilise l'image Hass.io , j'ai utilisé l'option la plus simple pour compiler le firmware - le module complémentaire ESPHome Hass.io Add-On .



Fenêtre de l'éditeur de firmware ESPHome


Les guirlandes et rubans de micrologiciel résultants:


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 

Après avoir ajouté les appareils résultants à Home Assistant dans l'interface, vous pouvez voir et définir les options d'effets.



Interface de l'assistant domestique


De plus, les effets peuvent être utilisés dans l'automatisation. Par exemple, lorsque vous ouvrez la porte pendant 30 secondes, un effet, 10 secondes, un autre effet, puis désactivez-le pour ne pas vous distraire. Mais il y a une condition: l'inclusion uniquement lorsque la rue est déjà au crépuscule.


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 


Sapin de Noël avec bande LED d'adresse


Résumé


Comme vous pouvez le voir, avec une certaine dextérité, vous pouvez organiser l'éclairage du Nouvel An à moindre coût et l'intégrer dans le système de «maison intelligente» existant ou l'utiliser séparément sans domotique en utilisant une application distincte sur votre smartphone.


Plus de détails peuvent être trouvés sur GitHub .


Publié par: Mikhail Shardin ,
23 décembre 2019

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


All Articles