RSS блога
Подписка
Светодиодная лента WS2812B - изготовление новогодней подсветки окна
- Цена: $28.43 (White 4m 60 IP67)
- Перейти в магазин
Новый год уже наступил, но возможно кому-то захочется праздничного настроения весь год. Именно для них данный обзор. Светодиоды WS2812B позволяют делать много интересных вещей. Здесь уже были их обзоры, я решил поделиться своей поделкой, к тому же праздники еще продолжаются. Под катом ардуинство, плата и демонстрация готового устройства
Я взял влагозащищенную версию, которая у продавца обозначается как «White 4m 60 IP67», это лента в силиконе. Пришла на катушке, в фольгированном пакетике:
На одном метре 60 светиков, залитых силиконом:
С обратной стороны двухсторонний скотч для крепления к поверхности:
Посмотрим на отдельную секцию ленты:
Видим: линии отреза по контактам, собственно контакты с двух сторон: DIN — входные данные, DO — выходные данные, +5V — плюс питания, GND — минус питания, C1 — керамический конденсатор, ну и собственно сам светодиод припаянный 4-мя контактами. Направление передачи данных указано черным треугольником.
Cами светодиоды WS2812B представляют собой сборку из микросхемы и 3-х светодиодов (красный, синий и зеленый), благодаря специальному протоколу, микросхема принимает данные только для своей сборки, остальные данные передает дальше по цепочке. Благодаря этому, каждой отдельной сборке можно передать информацию о яркости ее каждого светодиода (красного, синего и зеленого) и получить нужный цвет.
Подробно о свойствах отдельной сборки описано здесь. Я лишь отмечу, что максимально последовательно можно соединить 1024 микросхем, информация в которых может обновляться 30 раз в секунду.
Для ардуино разработана хорошая библиотека для данных сборок Adafruit_NeoPixel. Которая позволяет раскрашивать каждую сборку в свой цвет. Также у Adafruit есть библиотека для экранов из данных сборок и неплохие примеры использования.
Мы уже видели на этом сайте замечательные результаты творчества с применением WS2812B: аналог Ambilight/Aurea, снежинка.
Мне захотелось сделать управляемую ленту в окошко с применением данной ленты. Клеить ленту будем в оконный проем, поэтому потребуется 2 метра ленты. Собрав прототип простой гирлянды и загрузив пример, идущий в комплекте с библиотекой Adafruit_NeoPixel: strandtest, я убедился что принципиально все работает. Фактически в библиотеке задается один пин контроллера который подключается ко входу Din первой сборки.
Схема:
С типовым скетчем и типовым подключением никаких проблем не возникло.
Но ведь нам требуется управлять линейкой удаленно… Вот тут и начинаются грабли.
Первым делом я решил подключить ик приемник и управлять с пульта. Собрал схему помигал светодиодом и подключил ленту… Реакции не было… Точнее я подключив консоль получал случайного вида коды кнопок, нажав 10 раз на одну кнопку и увидев только разные коды, я задумался. Первая мысль была помеха по питанию, ведь кроме включения ленты ничего не менялось. Прочитал на adafruit.com о рекомендации впаять на вход ленты электролит напряжением 6.3 Вольта и емкостью не меньше 1000 мкФ, конечно же сразу это сделал, результат нулевой… Начал копать код библиотеки Adafruit_NeoPixel и обнаружил, что при передаче данных на светодиоды библиотека полностью блокирует прерывания. Отключение блокировки привело к тому что лента вела себя очень странно, прерывания происходили на любой мусор попавший на вход ик приемника…
Расстроившись в неудаче при такой простой схеме, начал думать про второй контроллер, отвечающий за прием ик сигналов и управляющий основным… Если кому то хочется сделать ик-управляемую ленту на WS2812B, то это единственный разумный вариант. Конечно есть еще и экзотические, например, вводить промежутки времени когда гирлянда не меняет свое состояние и принимать в них ик-сигналы — но это уже совсем рогатый метод…
В итоге принято решение использовать bluetooth и с телефона управлять гирляндой, благо несколько штучек модулей HC-06 у меня лежали без дела. Для индикации текущего режима работы гирлянды решил использовать дисплей на TM1637, обзор которого присутствует здесь. Итоговая схема:
Основная проблема, которая возникла с кодом, это то что при сменах состояния используется delay(), который не дает возможность вмешаться в процесс кроме как прерываниями, но… прерывания то у нас отключены… Принято решение переписать эффекты используя хранение информации о текущем состоянии гирлянды и смены его по таймингу. Для этого циклы преобразованы в переходы на следующее состояние, и добавлены признаки смены режимов. Пришлось задуматься стоит ли выкладывать кривой экспериментальный код, но желание облегчить кому-то его творческий процесс пересилило — вот код (там абсолютно экспериментальный код, использование на свой страх и риск).
Теперь про управление, конечно написать свое красивое приложение заманчивая идея, но времени на это не было и я воспользовался приложением для android — BluetoothSPP, в режиме кнопок настроил нужные коды и стало все хорошо. Есть возможность подписать каждой кнопке посылаемый код и обозначение. Большего мне и не было нужно. Все эффекты пронумеровал получилось 10 различных, 10 кнопок задействованы под эффекты, и 1 кнопка на то чтобы включить последовательную смену эффектов.
Bluetooth модуль конфигуририровал с помощью программки btinit.exe, очень удобно, можно изменить название устройства при поиске и скорость:
HC-06 следует подключить к компьютеру с помощью стандартного USB-TTL ковертора.
Подключив к лабораторному блоку питания, выяснил, что моя лента (2 метра) потребляет в пике, когда все включено 2.1 А при напряжении 5В. Поставил блок питания на 3А, купленный в офлайне:
неделя непрерывной работы, проблем не выявила.
Ну и конечно мне хотелось, чтобы готовое устройство не выглядело клубком проводов в коробке из под обуви. Тем более, у меня имелись корпуса со стеклянной крышечкой подходящим размером:
Делаем печатную плату в программе Sprint Layout, ИК приемник, я все таки оставил, так как возможно иное применение коробочки, либо как-то удастся разрешить проблему с ним:
Процесс изготовления методом ЛУТ я описывал ранее в обзоре шарового крана.
Вот так выглядела плата с нанесением тонера:
Травление:
Собираем устройство:
Для подключения гирлянды я использовал разъем для наушников, по нему же подается питание на устройство. Провод для подключения блока питания к ленте я использовал ПВС 2x0.5, а для подключения устройства к ленте телефонный кабель 4 жилы, землю сделал из 2-х жил.
Итоговое устройство:
Ну и его эффекты:
Конечно лучше всего смотреть гирлянду на видео:
Лентой и полученным результатом все довольны, работает больше недели непрерывно.
UPD: добавил файл платы для Sprint Layout
На этом заканчиваю. Спасибо тем кто дочитал до конца, надеюсь кому-то информация окажется полезной! Всем новогоднего настроения!
Я взял влагозащищенную версию, которая у продавца обозначается как «White 4m 60 IP67», это лента в силиконе. Пришла на катушке, в фольгированном пакетике:
На одном метре 60 светиков, залитых силиконом:
С обратной стороны двухсторонний скотч для крепления к поверхности:
Посмотрим на отдельную секцию ленты:
Видим: линии отреза по контактам, собственно контакты с двух сторон: DIN — входные данные, DO — выходные данные, +5V — плюс питания, GND — минус питания, C1 — керамический конденсатор, ну и собственно сам светодиод припаянный 4-мя контактами. Направление передачи данных указано черным треугольником.
Cами светодиоды WS2812B представляют собой сборку из микросхемы и 3-х светодиодов (красный, синий и зеленый), благодаря специальному протоколу, микросхема принимает данные только для своей сборки, остальные данные передает дальше по цепочке. Благодаря этому, каждой отдельной сборке можно передать информацию о яркости ее каждого светодиода (красного, синего и зеленого) и получить нужный цвет.
Подробно о свойствах отдельной сборки описано здесь. Я лишь отмечу, что максимально последовательно можно соединить 1024 микросхем, информация в которых может обновляться 30 раз в секунду.
Для ардуино разработана хорошая библиотека для данных сборок Adafruit_NeoPixel. Которая позволяет раскрашивать каждую сборку в свой цвет. Также у Adafruit есть библиотека для экранов из данных сборок и неплохие примеры использования.
Мы уже видели на этом сайте замечательные результаты творчества с применением WS2812B: аналог Ambilight/Aurea, снежинка.
Мне захотелось сделать управляемую ленту в окошко с применением данной ленты. Клеить ленту будем в оконный проем, поэтому потребуется 2 метра ленты. Собрав прототип простой гирлянды и загрузив пример, идущий в комплекте с библиотекой Adafruit_NeoPixel: strandtest, я убедился что принципиально все работает. Фактически в библиотеке задается один пин контроллера который подключается ко входу Din первой сборки.
Схема:
С типовым скетчем и типовым подключением никаких проблем не возникло.
Но ведь нам требуется управлять линейкой удаленно… Вот тут и начинаются грабли.
Первым делом я решил подключить ик приемник и управлять с пульта. Собрал схему помигал светодиодом и подключил ленту… Реакции не было… Точнее я подключив консоль получал случайного вида коды кнопок, нажав 10 раз на одну кнопку и увидев только разные коды, я задумался. Первая мысль была помеха по питанию, ведь кроме включения ленты ничего не менялось. Прочитал на adafruit.com о рекомендации впаять на вход ленты электролит напряжением 6.3 Вольта и емкостью не меньше 1000 мкФ, конечно же сразу это сделал, результат нулевой… Начал копать код библиотеки Adafruit_NeoPixel и обнаружил, что при передаче данных на светодиоды библиотека полностью блокирует прерывания. Отключение блокировки привело к тому что лента вела себя очень странно, прерывания происходили на любой мусор попавший на вход ик приемника…
Расстроившись в неудаче при такой простой схеме, начал думать про второй контроллер, отвечающий за прием ик сигналов и управляющий основным… Если кому то хочется сделать ик-управляемую ленту на WS2812B, то это единственный разумный вариант. Конечно есть еще и экзотические, например, вводить промежутки времени когда гирлянда не меняет свое состояние и принимать в них ик-сигналы — но это уже совсем рогатый метод…
В итоге принято решение использовать bluetooth и с телефона управлять гирляндой, благо несколько штучек модулей HC-06 у меня лежали без дела. Для индикации текущего режима работы гирлянды решил использовать дисплей на TM1637, обзор которого присутствует здесь. Итоговая схема:
Основная проблема, которая возникла с кодом, это то что при сменах состояния используется delay(), который не дает возможность вмешаться в процесс кроме как прерываниями, но… прерывания то у нас отключены… Принято решение переписать эффекты используя хранение информации о текущем состоянии гирлянды и смены его по таймингу. Для этого циклы преобразованы в переходы на следующее состояние, и добавлены признаки смены режимов. Пришлось задуматься стоит ли выкладывать кривой экспериментальный код, но желание облегчить кому-то его творческий процесс пересилило — вот код (там абсолютно экспериментальный код, использование на свой страх и риск).
Теперь про управление, конечно написать свое красивое приложение заманчивая идея, но времени на это не было и я воспользовался приложением для android — BluetoothSPP, в режиме кнопок настроил нужные коды и стало все хорошо. Есть возможность подписать каждой кнопке посылаемый код и обозначение. Большего мне и не было нужно. Все эффекты пронумеровал получилось 10 различных, 10 кнопок задействованы под эффекты, и 1 кнопка на то чтобы включить последовательную смену эффектов.
Bluetooth модуль конфигуририровал с помощью программки btinit.exe, очень удобно, можно изменить название устройства при поиске и скорость:
HC-06 следует подключить к компьютеру с помощью стандартного USB-TTL ковертора.
Подключив к лабораторному блоку питания, выяснил, что моя лента (2 метра) потребляет в пике, когда все включено 2.1 А при напряжении 5В. Поставил блок питания на 3А, купленный в офлайне:
неделя непрерывной работы, проблем не выявила.
Ну и конечно мне хотелось, чтобы готовое устройство не выглядело клубком проводов в коробке из под обуви. Тем более, у меня имелись корпуса со стеклянной крышечкой подходящим размером:
Делаем печатную плату в программе Sprint Layout, ИК приемник, я все таки оставил, так как возможно иное применение коробочки, либо как-то удастся разрешить проблему с ним:
Процесс изготовления методом ЛУТ я описывал ранее в обзоре шарового крана.
Вот так выглядела плата с нанесением тонера:
Травление:
Собираем устройство:
Для подключения гирлянды я использовал разъем для наушников, по нему же подается питание на устройство. Провод для подключения блока питания к ленте я использовал ПВС 2x0.5, а для подключения устройства к ленте телефонный кабель 4 жилы, землю сделал из 2-х жил.
Итоговое устройство:
Ну и его эффекты:
Конечно лучше всего смотреть гирлянду на видео:
Лентой и полученным результатом все довольны, работает больше недели непрерывно.
UPD: добавил файл платы для Sprint Layout
На этом заканчиваю. Спасибо тем кто дочитал до конца, надеюсь кому-то информация окажется полезной! Всем новогоднего настроения!
Новогодний хищник рад гирлянде
Самые обсуждаемые обзоры
+45 |
1177
97
|
+30 |
1865
55
|
+71 |
2250
54
|
а времени особо не было
уродская белая лента замаскирована шторами — ведь купить аккуратное готовое изделие вы не вы состоянии.
небось и с двух сторон судя по схеме подключали…
готовых изделий такого плана просто нет
хотел влепит тебе минус в карму, дабы ты не писал больше свой высер, а оказывается уже минусил тебя.
У тебя что ни пост, то хамство.
И все же жалко, что карма уже давно перестала выполнять свою первостепенную задачу… Ни раз уже писал на форуме, но проблема попросту игнорируется который месяц.
У товарища уже давно -4, а он все так же продолжает гадить в комментариях.
а я думал сделать прикинул даже — мне эффект не понравился — решил так полезнее ленту использовать
А если к экрану выводя сигнал с пк — то у меня цвет обоев не чисто белый — а это меняет конечные цвета.
А вы как хотели реализовать?
Я примерно по такому принципу ( эта статья меня и подтолкнула, а так же дальнейшая реализация автора )
geektimes.ru/post/257770/
mysku.club/blog/europe-stores/33690.html
мое решение было для телевизоров (2 шт)- малина 2 +ws2801+ IPtv стриминг с подгрузкой динамического плейлиста от edem.tv (работает стабильно круто на 100мбит канали как и на 16 мбит. На 16 переключается просто подольше)
антенна не подключена никакая.
работает одинаково и по проводу и по вифи
— хотелось бы читать эффекты с флешки, чем их туда писать, есть ли какие-то редакторы? (не коды же каждого состояния обычному человеку писать…
— кто то организовывал связку двух контроллеров? ссылки на примеры приветствуются
— может где то есть какая-то библиотека эффектов, чтобы не сочинять самому
https://aliexpress.com/item/item/LED-programmable-full-color-controller-with-infrared-receiver-drive-DMX512-TM1812-WS2811-WS2812-etc-free-SD/32360933877.html
2) На этой странице есть список эффектов, можно использовать как источник вдохновения
https://aliexpress.com/item/item/SPI-RF-LED-Digital-Controller-for-ws2811-ws2812-tm1812-ws6803/32325878612.html
3) Для спецэффектов есть стандарт управления DMX. Это профессиональный подход. Возможно, вам удастся найти какое-нибудь доступное решение на его основе.
4) Относительно простой способ получения спецэффектов. Ардуина должна кроме воспроизведения картинки те же самые данные сохранять на SD карту. Настраиваем амбилайт, запускаем подходящее видео. Сохраненный файл потом проигрываем на Ардуине.
Программа LedEdit
lededit-2014.software.informer.com — бесплатно и действенно :-)
https://aliexpress.com/item/item/SP103E-RF-Controller-14key-for-DC5V-WS2812-DC12V-WS2811-Dream-Color-LED-Strip-Light-1pcs-lot/32409649256.html
или за 3 бакса на инфракрасном управлении
https://aliexpress.com/item/item/Lowest-Price-24-Keys-IR-Remote-Controller-For-WS2811-WS2812-WS2812B-LED-Strip-Light-Lamp-DC5V/32530707769.html
и ленту 5 м тоже брал дешевле (правда тоже 11.11)
https://aliexpress.com/item/item/5M-30Pixel-M-150-5050-RGB-SMD-WS2811-IC-Built-in-WS2812B-WS2812-white-PCB-Addressable/32367479484.html
возможность менять алгоритмы и расширять + управление с телефона + возможность доп функций — это плюсы решения из обзора
ничего не нужно делать — это плюс того что вы предложили… там приходится полагаться на фантазию китайского разработчика и довольствоваться тем что есть
Контроллеры, которые я привел для примера, обладают большим функционалом, чем собранная схема на Ардуино.(и обойдутся дешевле Ардуино+Блютуз+коробка...).Хотя функционально — отличаются мало
(контроллер СТМ+РФ приемо-передатчик)
Не все могут паять и программировать, может кому-то и пригодится эта информация. Без обиды!
Да, для тех, кому нужен готовый продукт, кто паять не умеет либо не хочет — да.
А вот для тех, кто паять любит, у кого на той же ардуине рука набита — тот сразу посмотрит на эффекты, которые выдает готовый контролер, и первая мысль: все хорошо, вот еще бы добавить вот это…
Так что готовое и самосделанное — это просто две разные цивилизации… :)
IR — инфракрасный сигнал как на телевизоре — нужно направлять пульт
RF — дальность обычно выше и не важно направление пульта
А на сколько реально сделать такую штуку человеку, далёкому от адруинства? :) Купить ленту и контроллер, прошить одну или две программы смены цветов — это реально? Или сначала пол годика надо эту тему изучать? Я про простой вариант, конечно, без ИК и блютуса.
я вот так делал we.easyelectronics.ru/kisoft/novogodniy-svetilnik.html#comment166287
лень было возиться с придумыванием эффектов, забил готовые
в прошлом году делал с управлением через компутер по стандартному протоколу управления световыми установками, но этот контроллер уже не тянет такое
а тупо помигать запросто может
повесил 5м на перила балкона, как раз и с боков хватило
у меня еще модуль часов валяется, надо бы его тоже прикрутить, а то приходится выключать на балконе утром
тут нужна ртос уже для выбора и запуска эффектов
а я просто мигалку для балкона сделал без управления
правда, с наскока я пока не находил цветомузык особенно на такой ленте.
может кто видел?
в прошлом году я делал дмх512, но эта мега слабая и не тянет ленту и одновременно 250кбит юарт
тут нужен стм32, который имеет аппаратный шим, который бы смог потянуть ленту на 400кгц
а в авр это сделано в главном цикле нопами на асме через библиотеку и костыли
а схемы там никакой нет, тупо один вывод на ленту
Но еще приобрел и гирлянду на 12 мм ws2811. Светят ярче, можно елку обмотать, но потребляет поболее. Можно подвесить как угодно и куда угодно. С лентой изгибать проблематично.
Сейчас думаю, что нужно было только гирлянды на 12 мм ws2811 брать.
Хотя всему свое применение.
спасибо
Есть три реализации управления данными диодами, через аппаратный SPI, SERIAL и программная эмуляция. Может поиграться разными библиотеками?
Не все может прерывания блокируют.
Как вариант, настроить таймер включить один раз «смену картинки», а между срабатываниями обрабатывать ИК, RF и прочие штучки. Правда есть вероятность, что код ИК попадет во время работы с диодами. Но пульты как правило код дублируют несколько раз.
ну вот с блютуз заеданий не было, пока устраивает так, мне кажется что не блокировать прерывания тоже плохо, вижу вариант связки еще и мелкого контроллера для управления
смена картинки там не сильно простая в большинстве эффектов — поэтому вариант не всему подходит
А зачем так много проводов к ардуино?
Можно было бы к одному выводу первый зацепить, а остальные последовательно. Можно было бы любое количество метеоров использовать.
На мой взгляд, не хватает эффектов, использующих несколько цветов. То есть «ядро» у метеора более яркое, например желтое, а к хвосту цвет меняется на красный со снижением интенсивности
И по вменяемой цене.
Только рекомендую сначала плату отладить: лет 25 назад мне неожиданно сказали: вот этот человек тебе сделает платы — давай схему.
И я нарисовал по памяти.
После чего два десятка плат дорабатывал скальпелем и проводами — наша память не настолько хороша, как нам кажется… :)
У них даже специализированная микросхема под это дело есть
не чаще чем 30 раз в секунду при 1000 сборок — я это писал
Дело только в написании кода.
Также существует бюджетный вариант на обычной RGB ленте, там, конечно, каждым светодиодом не поуправляешь, изменение будет по все длине одновременным с предустановленными эфектами, обычно, разные режимы мигания и плавное изменение цвета, регулировка яркости и установка с пульта желаемого цвета https://aliexpress.com/item/item/RGB-LED-Strip-5M-300Led-3528-SMD-24Key-IR-Remote-Controller-12V-2A-Power-Adapter-Flexible/1849234838.html,searchweb201644_1_79_78_77_82_83_80_62_81,searchweb201560_2,searchweb1451318400_6148
Но, как мне кажется, WS2812 дорогая и поэтому лучше покупать ее исходя из того, что человек может сам залить желаемую программу в контроллер управления или использовать в желаемом проекте.
WS2812 — это микросхема WS2811 вместе с RGB светодиодами в одном корпусе 5050 с шестью контактами.
WS2812B то же что и WS2812 но с четырьмя контактами. Программно совместимы
Здесь я подробное описание делал
Разве нельзя сохранить коды каждой кнопки, а остальные сигналы игнорить?
Если разблокировать эти прерывания, то «мусор» по ИК порту, которого навалом в эфире будет создавать косяки при обновлении информации на светодиодах
NeoPixel не единственная библиотека работы с WS2812. Можно попробовать и другие. Скоро ко мне партия ИК-приемников приедет, поразбираюсь
Потом же не найду…
Записал скетч, Ambibox всё определяет нормально.
Подключаю ленту (30 диодов) и… ничего. Один раз мигнут и больше не светятся.
И горит только индикатор PWR на ардуино.
Проверил направление подключения — по направлению стрелочки, всё верно.
Ну думаю ладно, может питания не хватает. Подключаю с другого конца питание на 5В 2А.
Всё равно не светится.
Подключаю другую ленту (брал две по 1м, так дешевле было) без доппитания — опять раз мигнула и всё.
Подключаю сново первую — гаснет PWR, звук извечения устройства в Windows. Даже не мигнуло.
Отсоединяю первую ленту от ардуино — снова включается, светится PWR и подсоединяется к Windows.
Я без понятия уже, что с этим делать.