Как и обещал, начинаю серию статей про самодельные контроллеры для различных RGB лент. "Магазинные" меня перестали устраивать, а тут есть вариант получить требуемое, да еще и за недорого. Сегодня самое простое - адресные диоды.
Translation to English is here. Также основной канал в telegram
Чем так хороши адресные диоды? Ну во-первых они позволяют получить эффекты, за счет возможности управления каждым диодом индивидуально на большой скорости. А во-вторых, для питания такой ленты, нужен только блок питания, а управление обеспечит маленький контроллер без специфических силовых транзисторов. В-третьих, возможность деления ленты на нужный метраж. 24В ленты кратны шести диодам, 12В ленты кратны трем, а адресные можно отрезать в любом месте. Это очень важный параметр при дизайне интерьера. В-четвертых, цена лент стала низкой и уже близка к стоимости классических RGB лент, хотя это странно, классические RGB ленты подорожали, а адресные подешевели... Вот скрин покупки 5-метровой ленты с плотностью 60 диодов:
Теперь минусы, не без них же. Первое - низкое напряжение питания. Конечно, для самоделок, где количество диодов небольшое — это плюс, но при длине ленты - 5-10 метров цвет на первом и последнем диоде будут здорово отличаться, писал и демонстрировал это тут:
Поэтому параллельно ленте нужно вести 1-2 провода и запитывать ленту с некоторой периодичностью. Кстати, именно по этой причине я перешел на ленты 24В. Чем меньше ток через ленту, тем меньше потеря напряжения на каждом метре, тем меньше искажается цвет на каждом последующем...
Второй минус в том, что ничто не вечно. Если у вас сгорал диод на классической ленте, то исчезал один цвет на трех каких-то диодах, остальные же работали. Если же накрывается диод на WS-ленте, то перестает работать все, что находится в цепочке после него. Был такой опыт:
Если лента находится в прямом доступе - то ничего страшного, просто закорачиваем диод или впаиваем новый, а если лента установлена в нише на этапе ремонта, то это уже грустная история.
Итак, подходим к теме. Диоды на руках, а как ими управлять? Есть 2 варианта, минимум. Первый вариант - проект WLED. Последний раз упоминал про это тут, а там и прочие ссылки:
Есть вариант 2 - сделать что-то самому. Я уже писал про то, что в последний раз заказал Esp32-s2 вместо привычных esp8266, теперь приходится за это платить. Проект WLED под эти платы отсутствуют, притом он вроде как был. Последнее упоминание на форуме было со словами "возиться с S2 - только время терять". Сдается мне, что в ближайшее время ничего не появится и вариант 2 для меня становится единственным верным.
Для управления адресными лентами есть несколько компонентов:
Я нашел в поиске neopixelbus раньше, поэтому и начал делать на ней. Уверен, можно было и иначе. Конфигурация в ESPHome получилась следующая:
В начале все привычно:
esphome:
name: ws8212b-controller
esp32:
board: lolin_s2_mini
framework:
type: arduino
logger:
api:
encryption:
key: "superkey"
ota:
password: "superpassword"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Ws8212B-Controller"
password: "pERmm8KhvoSy"
captive_portal:
А вот тут начинается самое интересное. Нам нужен Light Component:
Пин для подключения я выбрал 33:
light:
- platform: neopixelbus
type: GRB
variant: WS2811
pin: 33
num_leds: 299
name: "NeoPixel Light"
Все очень просто, указывается тип диодов (последовательность цветов), пин к которому подключена лента и количество диодов. Должно быть 300, но я указал 299, чтобы убедится в том, что последний диод не будет гореть. Ну и имя указываете то, которое требуется. Далее, можно добавить эффекты. Это необязательная часть программы, а сами эффекты описаны тут же:
Я использовал следующие:
effects:
- pulse:
- addressable_rainbow:
- flicker:
- flicker:
name: Flicker more deviant
alpha: 60%
- flicker:
name: Flicker more intense and deviant
intensity: 20%
alpha: 60%
- random:
- addressable_twinkle:
- addressable_random_twinkle:
- addressable_fireworks:
- addressable_fireworks:
name: Fireworks Effect With Random Colors
use_random_color: true
- addressable_fireworks:
name: Very slow Fireworks Effect With Random Colors
use_random_color: true
spark_probability: 20%
fade_out_rate: 90
- addressable_flicker:
- addressable_flicker:
name: Addressable Flicker more intense
intensity: 60%
- addressable_color_wipe:
- addressable_color_wipe:
name: Color Wipe Effect With Custom Values
add_led_interval: 1s
На этом и код и его описание закончились. Ну и видео результата напоследок:
Да, естетственно все залетает в Home Assistant без всяких проблем, все работает и эффекты применяются без проблем.
Мой блог является некоммерческим, поэтому позитивный комментарий, лайк или репост поможет публикациям выходить чаще и развивать канал☺.
Также публикации можно найти на других площадках: Instagram, telegram (RU, EN, DE), Medium, LiveJournal, YouTube, Reddit