Адресные светодиодные ленты ардуино тающие сосульки

Arduino и адресная светодиодная лента

Описание

Адресная светодиодная лента, в отличие от обычной RGB, позволяет управлять цветом и яркостью каждого своего светодиода. Благодаря этому на ней можно отображать различные интересные эффекты, как статические, так и динамические. Сама по себе лента ничего не может, поэтому генерацией эффектов занимается микроконтроллер (или плата на его основе, например Arduino). Более подробно про виды адресных лент можно прочитать в моей статье.

В наборе GyverKIT есть 1 метр адресной светодиодной ленты WS2812b. При желании ленту можно докупить в том же магазине, где продаётся набор – Giant4.

Подключение

  • GND ленты соединяется с GND микроконтроллера, так как все сигналы ходят относительно “земли”
  • У любого отрезка ленты есть вход, а есть выход: у входа средний пин называется DI, а у выхода – DO. К Arduino подключается именно вход ленты, то есть пин DI
  • DI подключается на любой цифровой пин. Если лента питается отдельно от Arduino – DI нужно подключать через резистор 100-500 Ом, чтобы избежать питания ленты через пин, что приведёт к выходу из строя пина Arduino или первого светодиода в ленте. Лучше ставить резистор в любом случае, чтобы исключить такую возможность
  • 5V ленты подключается к питанию. Питание может быть общим с Arduino
  • Лента потребляет большой ток, поэтому питать её от Arduino, подключенной к USB – нельзя. В наборе GyverKIT есть сетевой адаптер на 5V, ленту нужно питать от него

В рассмотренных выше схемах Arduino питается от USB. Для работы от адаптера можно подключить питание с него на пин 5V платы:

При наличии на ленте штекера можно подключать управление и питание следующим образом:

Примечание:

  • Ленту можно питать напрямую от Arduino (при подключении к USB), если ток потребления не будет превышать 500 мА. В библиотеке FastLED можно настроить программное ограничение тока: FastLED.setMaxPowerInVoltsAndMilliamps(5, 500); – 5V 500mA
  • Ленту можно подключать без резистора, если исключена возможность наличия сигнала на ленту без подключенного питания, т.е. когда лента питается от одного источника с микроконтроллером

При работе с Wemos есть особенность: у него логический уровень 3.3V, чего не всегда хватает для передачи сигнала на ленту. При возникновении “артефактов” в эффектах можно подключить питание по следующей схеме: питать Wemos через диод (есть в наборе GyverKIT):

Библиотеки

Самой функциональной и известной библиотекой является FastLED, можно установить через диспетчер библиотек по названию FastLED. В библиотеке ОЧЕНЬ много возможностей, см. официальную вики-документацию, а также полный список модулей, классов и функций.

Как работать с FastLED

Коротко рассмотрим как работать с библиотекой FastLED и самые основные инструменты.

Логика работы с адресной лентой сводится к следующему: лента представляется в виде одномерного массива, каждый элемент – светодиод, точнее его цвет. Цвет светодиода кодируется тремя байтами, то есть 256 значений на каждый канал: красный, зелёный, синий. В программе можно производить различные манипуляции с этим массивом, то есть задавать цвета светодиодам при помощи различных инструментов библиотеки. Как только построение “кадра” закончено – массив можно отправить на ленту и светодиоды включатся соответственно заданным цветам.

Для начала обозначим константами длину ленты и пин, к которому она подключена, просто чтобы проще было редактировать программу в дальнейшем:

Создаём массив цветов, он имеет тип данных CRGB . Размер – сколько светодиодов в ленте, то есть наша константа. Пусть массив будет глобальным, чтобы доступ к нему был у всей программы:

В блоке setup нам нужно передать в библиотеку информацию о подключенной ленте, а также подключить созданный выше массив. Чтобы программа знала, откуда брать информацию о цветах. По порядку указывается тип ленты, пин, порядок цветов. В круглых скобках – имя нашего массива, а также его размер – длину ленты:

Отлично! Всё настроено и готово к работе.

Общие функции

Помимо задания цветов в массиве, существуют следующие управляющие функции:

  • FastLED.show() – выводит массив на ленту, т.е. обновляет её текущими цветами
  • FastLED.clear() – очищает ленту, буквально обнуляет все цвета в массиве, задаёт “чёрный” цвет. Для применения нужно вызвать show()
  • FastLED.setBrightness(0-255) – устанавливает яркость всей ленты. Не меняет значения в массиве светодиодов, просто “приглушает” итоговую отображаемую яркость. Для применения нужно вызвать show()
  • FastLED.setMaxPowerInVoltsAndMilliamps(вольты, миллиамперы) – включает автоматическое ограничение яркости по настроенному току и напряжению. Полезно для длинных лент и/или слабых блоков питания
  • FastLED.showColor(CRGB цвет) – залить всю ленту указанным цветом

Тип данных CRGB

Библиотека организована так, что переменной типа CRGB можно задать значение несколькими способами. Рассмотрим задание цвета первому светодиоду в нашей ленте, то есть элемент массива под номером ноль: leds[0]

Подробнее про цветовые модели RGB и HSV можно почитать вот здесь.

Примеры

Итак, с базовыми понятиями разобрались, переходим к практике. Для начала зальём всю ленту статичной радугой. Для этого покрасим светодиоды в цикле, задав цвет от 0 до 255 от первого до последнего светодиода в ленте. Конструкция i * 255 / LED_NUM позволяет получить значения от 0 до 255 при изменении i от 0 до LED_NUM:

Можно сделать подвижную радугу, это будет уже полноценная анимация. Для этого ленту нужно постоянно обновлять новыми цветами, например 30 раз в секунду. Чтобы плавно менять цвет – добавим к нему счётчик, который будет меняться от 0 до 255 и так по кругу.

Можно сделать один бегающий светодиод: каждый раз очищать ленту и красить светодиод под номером, который задаётся счётчиком. Изменение счётчика закольцевать от 0 до количества светодиодов:

И таких эффектов можно придумать очень много! Займёмся этим уже в блоке проектов

Источник

Красочные адресные светодиоды на новый год без программирования и пайки

Скоро Новый год, но вот настроение по разным причинам порой бывает не самым новогодним и тут на помощь приходит в том числе и новогодняя иллюминация. Хочу рассказать о своем опыте с адресными светодиодными гирляндами и лентами. Америку вряд ли открою, но вышло красиво и недорого.


Рассмотрю два варианта — отдельно без существующей домашней автоматизации и работу в связке с “умным домом”.

По адресным светодиодным лентам появилось довольно много структурированной информации и поэтому можно легко сделать осознанный выбор. Например, перед покупкой я внимательно просмотрел соответствующие видео с каналов DrZzs (на англ.) и The Hook Up (на англ.) и сделал выводы о стоимости необходимых лент — ведь результат работы работы лент в моем случае один — красочная подсветка.

Остановил свой выбор на двух недорогих вариантах из Китая:


Адресные пиксели в офисном интерьере

В обоих случаях для питания моих лент требуется 5 вольт. По мощности я не считал, а установил имеющийся и доступный по цене существующий блок питания Mean Well RS-150-5.


Блок питания Mean Well RS-150-5

И самая важная часть для управления новогодней программой — контроллер. Я выбрал микроконтроллер ESP8266 китайского производителя Espressif Systems, то есть в моем случае использовал недорогую плату LOLIN (WEMOS) D1 mini.


LOLIN (WEMOS) D1 mini в термоусадке, подключенный к ленте на ёлке

Hardware

По лентам и гирляндам очень широкий выбор — есть большое число разных чипсетов и надо смотреть чтобы контроллер поддерживал ленты, которые собираетесь покупать.
Моей задачей было использовать адресные пиксельные ленты в составе автоматизации на базе open-source платформы Home Assistant. Самый доступный для этого вариант — использовать ESP8266. Существует большая база совместимых контроллеров заводского изготовления (раздел LED Controller), составленная авторами прошивки Tasmota.
На мой взгляд Tasmota хорошая прошивка, но для управляемых пикселей и шаговых двигателей не очень подходит.


LOLIN (WEMOS) D1 mini, подключенный к гирлянде

Software

Вариант без домашней автоматизации

Если хотите быстрый старт “без регистрации и смс”, то самое разумное решение это прошивка ESP8266 проектом WLED (WiFi Lighting Effects Driver). У прошивки есть собственное приложение которое позволяет легко управлять светодиодами, а также огромный список предустановленных эффектов для адресных лент и гирлянд. Также WLED поддерживает множество протоколов управления, в том числе и MQTT , если в этом есть необходимость.
Пайка для подключения ленты к WEMOS не требуется.


Интерфейс WLED (WiFi Lighting Effects Driver)

Адресная иллюминация в составе умного дома на базе Home Assistant

Надо заметить, что у WLED совсем недавно (в декабре 2019 года) появилась полноценная интеграция для Home Assistant.
Но, поскольку я занимался гирляндами еще в ноябре, до появления этой интеграции, связь Home Assistant WLED по MQTT мне показалась глючной.


Панель управления ESPHome

Для Home Assistant существует нативная прошивка ESPHome, которая работает с Home Assistant без MQTT и она также поддерживает адресные светодиоды.

Clockless:
NEOPIXEL
WS2811
WS2811_400 (WS2811 with a clock rate of 400kHz)
WS2812B
WS2812
WS2813
WS2852
APA104
APA106
GW6205
GW6205_400 (GW6205 with a clock rate of 400kHz)
LPD1886
LPD1886_8BIT (LPD1886 with 8-bit color channel values)
PL9823
SK6812
SK6822
TM1803
TM1804
TM1809
TM1829
UCS1903B
UCS1903
UCS1904
UCS2903

SPI:
APA102
DOTSTAR
LPD8806
P9813
SK9822
SM16716
WS2801
WS2803

Поскольку я использую образ Hass.io, то для компиляции прошивок использовал самый простой для этого вариант — дополнение ESPHome Hass.io Add-On.


Окно редактора прошивки ESPHome

Получившиеся прошивки гирлянды и ленты:

После добавления получившихся устройств в Home Assistant в интерфейсе можно видеть и задавать варианты эффектов.


Интерфейс Home Assistant

Также эффекты можно использовать и в автоматизациях. Например при открытии двери 30 секунд один эффект, 10 секунд другой эффект, а потом выключение, чтобы не отвлекал. Но есть условие: включение только когда на улице уже полумрак.


Ёлка с адресной светодиодной лентой

Как можно увидеть при некоторой сноровке можно недорого организовать новогоднее освещение и вписать его в существующую систему “умного дома” или использовать отдельно без домашней автоматизации, используя отдельное приложение на смартфоне.

Дополнительные подробности можно найти на GitHub.

Автор: Михаил Шардин,
23 декабря 2019 г.

Источник

117-12-ти канальный «Метеор» на светодиодных лентах WS2812B и Arduino.

Представляю Вашему вниманию собранное мною устройство «Метеор» или, по другому – «Сосульки» :). Устройство управляет двенадцатью «умными» лентами WS2812B, запуская в случайном порядке по ним «метеоры». Устройство позволяет регулировать скорость эффекта и цвет «метеоров». На видео более подробно показана работа устройства и варианты настроек:

Проект как аппаратно, так и программно реализован на Arduino.

Схема устройства

Базовым элементом схемы является плата Arduino. Для данного устройства могут быть применены Arduino Uno или Arduino Nano или Arduino Pro Mini (как в моей схеме)

Схема устройства проста и особо в описании не нуждается, кроме некоторых моментов:

— при подключении лент обязательно необходимо учитывать направление (на ленте отмечено стрелкой), в противном случае лента работать не будет

— резисторы на выводах МК не обязательны (устройство будет работать и без них), но все же желательно их установить — это защитит порта МК от перегорания в непредвиденных ситуациях

Корпусом устройства служит монтажно-раздаточная коробка, которую используют электрики. В магазине можно подобрать такой размер как Вам подойдет!

Блок питания на 5 вольт выбран с учетом среднего тока лент. Ток потребления одного кусочка ленты из 20 «пикселей» в режиме метеора не превышает 120-150мА. При 12 лентах суммарный ток 1,5-1,8А что соответствует мощности 10Вт. Я использовал 15Вт готовый блок питания от китайцев.

Внимание! Если устройство будет подразумевать одновременное включение всех лент в режиме белого свечения всех пикселей, мощности блока питания не хватит!

Блок питания питает и схему и ленты (хотя правильнее их нужно было бы развязывать). Я ограничился только конденсаторами (на входе питания Arduino) в качестве фильтра. Этого оказалось достаточно.

У устройстве использована «умная» светодиодная лента WS2812B с 60 пикселями на метр. В моей схеме 12шт кусочков по 20 пикселей, а это целых 4м ленты. Ленту можно разрезать на любые по длине кусочки (вплоть до 1 светодиода). В программе никаких изменений делать не понадобится – ленты любой длинны будут правильно работать в устройстве. Лента примененная мною была обычной (IP30) без защиты. Для того, чтобы защитить ленту от механических повреждений и сделать лучи более жесткими (для возможности крепления их в различных положениях), ленты были наклеены на одну из половинок кабель-канала и «одеты» в прозрачную (силиконовую) трубку с внутренним диаметром 10мм.

Разъемы лучей выполнены при помощи 3.5мм аудио джеков. Устройство позволяет включать и отключать лучи прямо во время работы. Это, совместно с удобными разъемами, облегчает монтаж устройства и его настройку.

Платы устройства
Функционально устройство собрано на трех платах (рисунки печатных плат есть в архиве)

— плата управления
— и 2 платы разъемов

Фактически, устройство настолько простое, что можно обойтись и без плат вообще, соединив все элементы схемы проводами (навесным монтажом).

Готовое устройство с подключенными лучами выглядит очень презентабельно!

Скетч устройства

Скетч устройства содержит сторонние библиотеки (в архиве прилагаются).

Внимание! Библиотека возможно не будет правильно работать на последнем ардуиновском IDE 7-й версии. В 6-й версии проблем никаких не возникает.

Если нет желания устанавливать IDE для Arduino, в архиве есть HEX- файл и инструкция как его записать в Ардуину.

Заключение

Схема позволяет создавать огромное количество модификаций. Осталось куча неиспользованных выводов, в том числе и аналоговых, не используются «ноги» UART, что позволяет подружить в перспективе устройство с компьютером и управлять им оттуда, а возможно даже создать в процессинге визуальную оболочку управления.

У лент неограниченные возможности по управлению каждым «пикселом» (цветом и насыщенностью) . Написанная мной программа «метеора» использует только 60% памяти МК.

Источник

Adblock
detector