LED alamat berwarna-warni untuk tahun baru tanpa pemrograman dan solder

Tahun Baru akan segera tiba, tetapi suasana hati karena berbagai alasan kadang-kadang bukan Tahun Baru, dan di sini iluminasi Tahun Baru datang untuk menyelamatkan. Saya ingin berbicara tentang pengalaman saya dengan pita dan pita LED yang beralamat. Saya tidak mungkin menemukan Amerika, tetapi ternyata indah dan murah.



Saya akan mempertimbangkan dua opsi - secara terpisah tanpa otomatisasi rumah yang ada dan bekerja bersama dengan "rumah pintar".


Cukup banyak informasi terstruktur telah muncul pada kaset LED yang dapat dialamatkan, dan karena itu Anda dapat dengan mudah membuat pilihan. Sebagai contoh, sebelum membeli, saya dengan hati-hati menonton video terkait dari saluran DrZzs (dalam bahasa Inggris) dan The Hook Up (dalam bahasa Inggris) dan membuat kesimpulan tentang biaya kaset yang diperlukan - karena hasil kerja dari kaset dalam kasus saya adalah penyorotan satu warna.


Dia memilih dua opsi murah dari Tiongkok:


  1. WS2812B Tape - 300 LED - 5 meter.
  2. WS2811 Garland - 50 LED x 3 buah - sekitar 10 meter (3 x 3,3 m)


Piksel alamat di interior kantor


Dalam kedua kasus, 5 volt diperlukan untuk memberi daya pada kaset saya. Saya tidak mengandalkan daya, tetapi memasang unit catu daya Mean Well RS-150-5 yang ada dan terjangkau.



Unit catu daya Berarti Yah RS-150-5


Dan bagian terpenting untuk mengelola program Tahun Baru adalah controller. Saya memilih mikrokontroler ESP8266 dari pabrikan Cina Espressif Systems, yaitu, dalam kasus saya, saya menggunakan papan mini LOLIN (WEMOS) D1 yang murah .



LOLIN (WEMOS) D1 mini shrink terhubung ke pita di pohon Natal


Perangkat keras


Untuk pita dan karangan bunga ada pilihan yang sangat luas - ada banyak chipset yang berbeda dan Anda perlu melihat sehingga pengontrol mendukung pita yang akan Anda beli.
Tugas saya adalah menggunakan kaset piksel alamat sebagai bagian dari otomatisasi berdasarkan platform open-source Home Assistant . Pilihan paling terjangkau untuk ini adalah menggunakan ESP8266. Ada database besar pengendali buatan pabrik yang kompatibel (bagian Pengontrol LED), yang disusun oleh penulis firmware Tasmota.
Menurut pendapat saya, Tasmota adalah firmware yang baik, tetapi untuk piksel terkontrol dan motor stepper, itu tidak terlalu cocok.



LOLIN (WEMOS) D1 mini terhubung ke karangan bunga


Perangkat lunak


Opsi tanpa otomatisasi rumah


Jika Anda ingin memulai cepat “tanpa registrasi dan SMS”, maka solusi paling masuk akal adalah firmware ESP8266 oleh proyek WLED (WiFi Lighting Effects Driver) . Firmware memiliki aplikasi sendiri yang memungkinkan Anda untuk dengan mudah mengontrol LED, serta daftar besar efek yang telah ditentukan untuk kaset alamat dan karangan bunga. WLED juga mendukung banyak protokol manajemen, termasuk MQTT , jika perlu.
Menyolder untuk menghubungkan kaset ke WEMOS tidak diperlukan.



Antarmuka WLED (Pengandar Efek Pencahayaan WiFi)


Penerangan yang ditargetkan sebagai bagian dari rumah pintar berdasarkan Home Assistant


Perlu dicatat bahwa WLED baru-baru ini (pada bulan Desember 2019) muncul integrasi penuh untuk Home Assistant .
Tapi, sejak saya terlibat dalam karangan bunga pada bulan November, sebelum integrasi ini muncul, Home Assistant <--> Koneksi MQTT WLED bagi saya buggy.



Panel Kontrol ESPHome


Untuk Home Assistant, ada firmware ESPHome asli yang bekerja dengan Home Assistant tanpa MQTT dan juga mendukung LED alamat .


Berikut adalah daftar chipset yang didukung.

Tanpa jam:
NEOPIXEL
WS2811
WS2811_400 (WS2811 dengan clock rate 400kHz)
WS2812B
WS2812
WS2813
WS2852
APA104
APA106
Gw6205
GW6205_400 (GW6205 dengan clock rate 400kHz)
LPD1886
LPD1886_8BIT (LPD1886 dengan nilai saluran warna 8-bit)
PL9823
SK6812
SK6822
TM1803
TM1804
TM1809
TM1829
UCS1903B
UCS1903
UCS1904
UCS2903


SPI:
APA102
Dotstar
LPD8806
P9813
SK9822
SM16716
WS2801
WS2803


Karena saya menggunakan gambar Hass.io , saya menggunakan opsi paling sederhana untuk mengkompilasi firmware - add-on Add-On ESPHome Hass.io.



Jendela editor firmware ESPHome


Firmware dan pita firmware yang dihasilkan:


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 

Setelah menambahkan perangkat yang dihasilkan ke Home Assistant di antarmuka, Anda dapat melihat dan mengatur opsi efek.



Antarmuka Asisten Rumah


Juga, efek dapat digunakan dalam otomatisasi. Misalnya, ketika Anda membuka pintu selama 30 detik, satu efek, 10 detik, efek lain, dan kemudian matikan agar tidak mengganggu. Tapi ada satu syarat: penyertaan hanya saat jalan sudah senja.


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 


Pohon Natal dengan strip alamat LED


Ringkasan


Seperti yang Anda lihat, dengan ketangkasan tertentu, Anda dapat dengan murah mengatur pencahayaan Tahun Baru dan memasukkannya ke dalam sistem "rumah pintar" yang ada atau menggunakannya secara terpisah tanpa otomatisasi rumah menggunakan aplikasi terpisah pada ponsel cerdas Anda.


Rincian lebih lanjut dapat ditemukan di GitHub .


Dikirim oleh: Mikhail Shardin ,
23 Desember 2019

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


All Articles