122-Эффектор с выходом на умную ленту WS2812

Автор: | 14.10.2015

После переноса старого Эффектора на платформу Arduino (ATmega328P) стало возможно развивать проект дальше. И вот теперь к Эффектору я подключил умную ленту (NeoPixels) WS2812.
При этом новый Эффектор WS2812 не просто выводит свои эффекты на умную ленту вместо обычных светодиодов, но еще и обзавелся внушительным количеством нового функционала.

Новые плюшки:
— переделан алгоритм формирования уровней, теперь яркость каналов имеет 255 градаций (по сравнению с 8 в предыдущем варианте)

— переделаны встроенные эффекты, теперь они стали плавней
— количество встроенных эффектов увеличено с 8 до 16.

Правда из программы управления Эффектор-12 доступны, как и в предыдущем варианте, только 8 (не стал переделывать программу, дабы осталась совместимость со всеми вариантами Эффекторов), но с самого Эффектора и пульта можно переключать все 16

— как и в предыдущем Эффекторе осталось управление от ИК-пульта, но добавились новые команды управления, связанные с умной лентой
— так как умная лента цветная, то для формирования разных цветов от монохромных сигналов уровня каналов, были задействованы палитры цветов. Можно выбрать одну из 8 палитр (включая динамическую палитру переливающихся цветов)
— теперь Эффектор может быть участником сети ЗиЧип как сателлит

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

— количество отображаемых пикселей на умной ленте может быть произвольным, вплоть до 255 пикселей
— можно регулировать общую яркость ленты
— рисунок 12 каналов не просто располагается на 12 пикселях ленты, а может быть масштабирован (растянут) на любое количество пикселей
— рисунок на ленте длинней чем12 пикселей циклически повторяется
— большинство формируемых эффектов являются циклическими и на ленте создается непрерывная картинка эффекта (невозможно определить границы области эффекта)
— для не циклических эффектов предусмотрен зеркальный вариант повторения каналов, что создает непрерывную картинку и в этом случае
— рисунок по ленте можно сдвигать на произвольное количество пикселей
— линии управления (те, к которым подключены кнопки) реализованы по принципу «монтажного ИЛИ» — это значит, что, управляя устройством посредством пульта, можно получать на этих линиях сигналы управления (прижатия к земле) которые можно использовать, например, для управления своими устройствами.

 

Как это выглядит вживую.

Как видно на видео, по сравнению с предыдущим Arduffector-ом, у которого все эффекты стремительные и резкие, новый Эффектор выдает плавную и неспешную картинку эффектов. Вообще, эта модификация Эффектора прошла у меня под девизом «Smooth».

 

Сборка

Так как устройство работает на готовой плате Arduino Nano (или Uno), собирать/паять ничего особо и не придется. Достаточно подключить к Ардуине умную ленту (к выводу 13), залить прошивку (через стандартный ардуиновский USB шнур) и устройство заработает.

Если у Вас количество пикселей WS2812 не превышает 2-3 десятка, то и блока питания отдельного не понадобится – все будет работать от USB-порта. Если лента длинная — USB-порт не сможет обеспечить нужный ток. В этом случае понадобится внешний мощный блок питания 5 вольт.

Для демонстрационного ролика на Ютубе я собрал на макетке необходимый мне минимум и уложил ленту в пластиковый кабельный канал (он подсвечиваясь изнутри создает связную картинку скрывая свечение отдельных пикселей).

Если хотите получить от устройства большего – добавляете переменные резисторы, кнопки и TSOP т.д.

Ленту на пробу мне предоставил магазин DiyLab.com.ua Если Вам понравится устройство и Вы захотите его повторить, то ленту в Украине можно приобрести в этом-же магазине — ссылка на ленты. Для России ее можно приобрести еще у одного моего партнера TIXER.RU (обещались в ближайшее время пополнить ассортимент).

 

Описание работы

Работает устройство подобно своему предшественнику, но есть и нововведения. Пройдусь по органам управления.
Кнопки:
– 0 All Off – отключает все эффекты и гасит ленту
– 1 EE-series – запускает последовательность эффектов сохраненных в EEPROM (их всего 4 и их можно изменять из программы Эффектор-12)
– 2 Flash-series — запускает случайную последовательность эффектов встроенных в устройство (их 16, изменить их нельзя, период смены эффекта 10 секунд)
– 3 Next – запускает следующий эффект, при этом он остается работать постоянно, кроме того, после перезапуска Эффектора этот эффект продолжит работать
– 4 strip_Mirror – при удержании на «земле» этой линии, 12 каналов Эффектора начинают располагаться на ленте переодично-зеркально (т.е. A-L,L-A,A-L,…), вместо периодичного расположения по умолчанию (т.е. A-L,A-L,A-L,…)
– 5 strip_R, 6 strip_G, 7 strip_B – эти три линии задают текущую палитру, в которой отображается рисунок эффектов на ленте

 

в варианте «радуга» цвет постоянно циклически меняется

– 8 strip_IR Out — при удержании этой линии прижатой к «земле» начинают передаваться в ИК-сеть (излучатель IR-LED) информация о состоянии каналов (в отдельной статье об этом будет подробней).

 

Новым способом управления в этом устройстве являются аналоговые входа (АЦП). Посредством напряжения на них (в пределах 0 – 5 вольт) можно изменять картинку, отображаемую на ленте. Линии АЦП подтянуты к 5 вольтам, то есть если к линии ничего не подключено, устройство воспринимает это как максимальный уровень.

strip_Pixels Number – количество пикселей в ленте, воспроизводящих картинку (5 вольт – 255шт., 0 – 0)
strip_Scale – масштабирование картинки на ленте (5 вольт – масштаб 1канал:1пиксель, 0 – на всей ленте проецируется 1 канал)
strip_Offset – смещение рисунка по ленте
strip_Bright – общая яркость свечения ленты (5 вольт – максимум, 0 – минимум)

Управление посредством уровня напряжения открывает новые возможности использования устройства. Например, если подключить к входу strip_Pixels Number аналоговый сигнал с усилителя, то мы получим линейку-индикатор уровня. Еще, задействовав палитру огня и подключив к strip_Bright сигнал с градусника можно визуализировать температуру и т.д.

 

Управление устройством посредством бытового пульта.

Для управления устройством подойдет любой бытовой пульт (возможно, будут проблемы со специфическими пультами с обратной связью, например, как у пульта от кондиционера).

Для изучения кнопок необходимо:
1 –нажать (и удерживать)  кнопку «Learn»
2 – сбросить Ардуину штанной кнопкой сброса (при этом индикаторный светодиод LED должен несколько раз моргнуть)
3 – отпустить кнопку «Learn».

Из-за того, что в данном алгоритме невозможно организовать подавление дребезга контактов кнопки «Learn», нужно контролировать момент отпускания кнопки. Если в этот момент моргнет индикаторный светодиод LED, то процедуру обучения нужно начать заново (дребезг контактов создает сигнал подобный сигналу пульта, который и запоминается как первая кнопка)

4 – последовательно нажать на пульту 9 кнопок в очередности функций (кнопок устройства 0 All Off  …  8 strip_IR Out)
5 – после этого устройство автоматически начинает работать в штатном режиме

Каждое нажатие кнопки на пульте будет подтверждаться индикаторным светодиодом.

Если какая либо кнопка не нужна в устройстве (например, 8 strip_IR Out советую пока не задействовать), то в процессе ее изучения нужно нажимать ранее изученную клавишу.

Как я уже писал выше, новой особенностью этого устройства является то, что входа управления для кнопок, одновременно являются еще и выходами, если управление осуществляется от пульта. При нажатии на кнопку пульта, соответствующая линия управления будет прижата к земле. Это можно использовать для контроля нажатий кнопок пульта или управления Вашими устройствами. Линии от «0 All Off» до «3 Next» при нажатии кнопок на пульту будут прижаты к земле кратковременно, а линии от  «4 strip_Mirror» до «8 strip_IR Out»  работают как триггер (раз нажал – прижалась, еще раз нажал – отпустилась)

 

Управление устройством посредством программы Эффектор-12.

Несмотря не значительные изменения, устройство осталось совместимым с программой Эффектор-12 (за исключением некоторых нюансов, связанных с палитрами и дополнительным функционалом). Встроенный в Ардуину USB-UART, позволяет без каких либо проблем, подключить устройство к компьютеру и управлять им. Напомню, что программа управления умеет управлять каналами и эффектами устройства в ручном режиме, визуализировать музыку (с возможностью самостоятельно создавать различные способы визуализации), выполнять различные действия по времени и т.д. Подробней читайте в соответствующей статье.

122-Effector-WS28121.zip (16167 Загрузок)

_

(Visited 119 403 times, 3 visits today)

122-Эффектор с выходом на умную ленту WS2812: 278 комментариев

  1. dimaris

    Здравствуйте GetChiper!
    Скоро новый год и я опять достал ту самую гирлянду чтобы довести ее до ума.
    На одном известном радиолюбительском сайте наткнулся на статью про RGB гирлянду и выяснил следующее: «Для каждого типа светодиода, необходимо проверить особенности его передачи данных, например для WS2812 используется последовательность GRB, а для WS2811 – RGB. Отличие между ними — это небольшая разница в таймингах и последовательность байтов. Для правильной работы гирлянды необходимо поменять местами красный и зеленый цвета.»
    Вот оказывается в чем была причина не правильной работы моей гирлянды..

  2. GetChiper Автор записи

    Зеленого цвета нет из-за того, что в палитре «пламя» я его не использую (с зеленым цветом смотрится неестественно)

  3. Павел

    Здравствуйте, для начала, выражаю огромную благодарность за проделанный труд, автору сия детище, дай Вам Бог здоровья, собрал проект,все работает, все здорово, у меня маленький вопрос, почему в эффектах нет зеленого цвета, только когда притягиваю к земле 6 strip_G, или радугу, а просто в звуковой визуализации или просто в эффектах его не наблюдаю? Ардуино НАНО на Атмеге328, Китайская лента DC5V 5 м WS2812B RGB индивидуально адресуемых Smart LED, ссылка на ленту
    https://ru.aliexpress.com/item/DC5V-1m-4m-5m-WS2812B-Smart-led-pixel-strip-Black-White-PCB-30-60-144-leds/32337440906.html?spm=a2g0s.9042311.0.0.kCa47J

  4. Руслан

    Просто хочу сделать чтобы он через пульт по ик сигналу работал.

  5. GetChiper Автор записи

    Тогда зачем контроллер? Собрать элементарный регулятор тока на lm317 (две детали) и всех делов!

  6. Руслан

    Я перерыл весь Али и с питанием от 3.7 вольт ничего не нашел. А если мне нужен не эффектор, а просто регулятор яркости и включения/выкл

  7. GetChiper Автор записи

    Устройство этой статьи и есть, по сути, контроллер. Правда для умных светодиодов.
    Если нужен контроллер для обычных светодиодов, самый простой путь — купить у китайцев готовый контроллер с пультом.
    Если хочется что-то собрать самому, то подобный устройству этой статьи есть и под обычные светодиоды http://www.getchip.net/posts/112-arduffector-ehffektor-za-5-minut-bez-payalnika-i-programmatora/

  8. Руслан

    Добрый день. У меня вопрос от чайника.
    Немного предыстории.
    Я собираю «звездочки» из дерева и устанавливаю в них светодиоды, как ночник. Питаю от аккумулятора 18650, туда же ставлю microusb для зарядки этого аккумулятора и диммер обычный для регулировки яркости и включения/выключения. Сейчас хочу сделать диммер который будет от инфракрасного порта работать, ну и пультик на Али прикупить с 3 кнопками (вкл/выкл и яркость). Светодиоды обычные как с гирлянды белого или тёплого света.
    Вопрос:
    Как и из чего собрать контроллер? Если можно, то поподробнее. Я ещё раз повторю чайник, причем старый, не электрический)))

  9. GetChiper Автор записи

    Со светильником будет все нормально — будет и с кнопок и с пульта (ну и со смартфона тоже) 😉

  10. skorpuo777

    Я считаю управление светильником при помощи смартфона не совсем правильным, это либо на каждый светильник надо свой пульт, либо каждому члену семьи надо покупать смартфон, устанавливать туда программу управления светильником. А попробуй объяснить как управлять бабушке или ребенку. Светильник надо делать либо с помощью сенсорной клавиатуры, либо от ik пульта. Я его хотел поставить на балкон, вот и думал чтобы была функция типа бегущих огней.

  11. GetChiper Автор записи

    Лента обновляется несколько десятков раз за секунду. В принципе можно подключится в любой момент.

    По поводу светильника — я делаю отдельное устройство с управлением со смартфона.

  12. skorpuo777

    Я же не смогу ленту менять местами для каждого случая. Цыкл выключать нельзя?

  13. skorpuo777

    Можно ли сделать, чтобы при нажатии одной или нескольких кнопок загорался постоянно Белый свет! Получилось бы два в одном: светильник- световые эффекты.

  14. GetChiper Автор записи

    Рисунок эффекта повторяется циклически и если куски будут соответствовать длине цикла — эффект будет непрерывным на всей ленте.

  15. admin Автор записи

    Разделяете на куски и подключайте параллельно (можно физически даже не резать ленту — просто заводить сигнал управления в нужные места ленты.

  16. dimaris

    В различных ардуиновских проектах упоминается 800 KHz WS2812 LEDs и 400 KHz WS2811 drivers. Правда там используются готовые библиотеки, может там про тайминги написано?

  17. admin Автор записи

    Модификации для WS2811 у повторявших конструкцию читателей работали (сам не могу проверить так как таких пикселей нет).

    Может есть различия в WS2811 и WS2811S, но я не нашел даташита на последний.
    Никакой информации не попадалось на глаза с таймингами для WS2811S ?

  18. dimaris

    Пробовал, не помогло…

  19. admin Автор записи

    Нужно тогда попробовать варьировать длительности периодов сигналов данных для WS2811S

  20. dimaris

    Взял другую абсолютно новую ардуино, залил прошивку, результат такой же только зеленым и синим вперемешку моргает, иногда белым загорается. Значит красный подхватывает, микросхемы WS2811S китайские.

  21. dimaris

    Подпаял резисторы на управляющие входа, ничего не изменилось..

  22. admin Автор записи

    Про какую программу идет речь?
    Новая прошивка записывается поверх старой.
    Если программа эффектов которая записывается из программы на ПК — то я даже не пробовал эту возможность — не уверен что оно осталось работать со старого варианта эффектора

  23. Valeriy

    Евгений.Скачал прошивку МОД#122 плавная настройка палитры.Снял кнопки R G B,установил потенциометры 4К7 на выводы А4 А6 А7 как на схеме.Включил-не регулируются никак новые потенциометры,все остальное работает.Перед этим стояла базовая прошивка.
    При установке новой программы старая автоматически удаляется? Подскажите

  24. admin Автор записи

    Виталий
    В этой конструкции такого не предусмотрено. Есть в планах на будущее.

    dimaris
    В программе ничего не менялось? Попробуй подтянуть все управляющие входа (4-12) к питанию (резисторами по 1 кОм)

  25. dimaris

    Здравствуйте GetChiper!
    Я тоже сделал этот эффектор на ардуине и ws2811, пикселы смп травил и паял. По началу испробова работоспособность на одном пикселе, все вроде работало, а когда доделал всю гирлянду то она перестала выдавать красный цвет, только синий и зеленый. В чем может быть причина?

  26. admin Автор записи

    завтра подправлю

  27. dipodlez

    Добрый день. Даташит на микросхему не нашёл.Зато нашёл китайский контроллер , который отлично работает с лентой.Снял с этого контроллера протокол.
    Китаец T0H-0.44us , T0L-0.975us ; T1H-0.990us , T1L-0.4us
    Ваша прошивка Ws2811 T0H-0.5us ,T0L-2us ;T1H-1.21us,T1L-1.29us
    Можно подправить Вашу прошивку? Или скажите сколько куда нопов ,я сам поправлю…..

  28. admin Автор записи

    Видео на ютуб а ссылку сюда.
    Попробуй даташит найти на GS1903 — иначе долго можно переделывать …

  29. dipodlez

    Да лента у меня на 8 ногой микросхеме GS1903(хотя китайцы говорят Ws2811)?
    как и где отправить видео?

  30. dipodlez

    залил вашу прошивку ws2811. После вкл. моргает светодиод 4 раза(лента не светит.
    Нажимаю кнопки 2или 3 загораются произвольные статические «картинки»(иногда на всю ленту иногда на несколько пикселей) на резисторы не реагирует.

  31. dipodlez

    Добрый день. Собрал эффектор для умной ленты. У меня лента на чипе Ws2811 и походу работает не так…..
    Цвета вроде есть но постоянно лента моргает…Я так понимаю надо поправить «процедуру передачи данных ленте»
    Так вот вопрос ? Сколько «нопов» и куда поставить? (пытался посчитать ваши нопы ,но не как не получаются значения из даташита) . Вот время для 2811
    T0H-0.5 us T0L-2us T1H- 1.2us T1L- 1.3us
    ПОДСКАЖИТЕ ПОЖАЛУЙСТА СКОЛЬКО И КУДА ПОСТАВИТЬ NOP?

  32. admin Автор записи

    Можно пробовать любой ИК-приемник
    по дальности приема будет видно подойдет или нет

  33. Nikolaj666

    отлично. и ещё вопрос, вместо TSOP3836 можно использовать VS18388 ?????

  34. admin Автор записи

    Любая ардуина подойдет с мегой328 на борту

  35. Nikolaj666

    Приветствую. Возможно ли использовать Pro mini на 328меге? Собираю матрицу 9х28.

  36. admin Автор записи

    Уже в новых устройствах дребезг подавляется — как дойдут руки и здесь подправлю.

  37. Ivan-Alferov

    А в чём проблема подавления дребезга? Можно ведь после отпускания Learn просто подождать с пол секунды, и только тогда начать слушать команды. Для пущего эффекту можно ещё светодиодом мигнуть, типа можно жать пульт.

  38. utro

    Да! все увидел, все нашел. Ничего не понимаю, буду разбираться! )

  39. admin Автор записи

    Запросто!
    Исходник находится в архиве 122-Effector-WS2812.zip
    открывается вот этой штукой http://algrom.net/russian.html

Добавить комментарий