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 (Одна Загрузка)

_

(Visited 119 515 times, 1 visits today)

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

  1. utro

    Уважаемый GetChiper, а есть ли возможность увидеть .hex файл эфектора в первозданном (читабельном виде, ) дабы разобрать его подробно, или это верх наглости?

  2. utro

    спасибо, все понятно.

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

    mega2560 — это совсем другой контроллер, соответственно для него нужна другая прошивка.
    Прошивка это машинные команды под конкретный МК (в отличии от программ высокого уровня, которые можно скомпилировать под разные МК)

    В скетч переделать не получится.

  4. utro

    хм… а если не сложно, объясните почему? частота у нее соответствует, выходов больше. Вроде таже UNO , только лучше… И такой еще вопрос, возможно ли этот эффектор переделать в просто arduino файл? расширение .ino

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

    На меге2560 работать не будет.
    Прошивка для меги328 (Nano, Uno, ProMini)

  6. utro

    Всем привет. Подскажите что не так, закидываю через Xloader .hex на MEGA 2560, и ничего не происходит. WS 2812B исправна, осцилограф на ножке 13 что то показывает… а на ленте ничего нет.

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

    К сожалению, так просто это не получится.

  8. vovchikl-.

    А не могли бы Вы скомпилировать проект под atmega128 ?

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

    Лента и спаивается из кусочков по пол метра — так что это нормально. Ну а то что первый кусок так себя ведет — это где-то непорядок.

  10. Алексей-Сергиевич

    Разобрался. Отпаял первые полметра ленты и всё заработало просто отлично! Спасибо за ответы.

  11. Алексей-Сергиевич

    В общем у меня сложилось такое впечатление, что китаец мне глючную ленту продал. Это ваще нормально, что пятиметровая лента спаяна из кусочков по полметра? Первые полметра у меня живут своей собственной жизнью, отличаются от того, что происходит на остальной ленте. Буду разбираться.

  12. Алексей-Сергиевич

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

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

    А если постоянно удерживать — гаснет?

  14. Алексей-Сергиевич

    Здравствуйте, уважаемый автор. Собрал предложенную вами конструкцию. Кнопка 0 All Off почему-то не гасит ленту при кратковременном замыкании 4-го пина на землю, вместо этого включается какой-то эффект (всегда один и тот же), и крутится по кругу. Или для гашения ленты этот пин должен быть постоянно замкнут на землю? Использую в качестве контроллера UNO.

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

    Палитра по умолчанию «пламя» — действительно не имеет зеленого цвета, по понятным причинам.
    Зеленый цвет будет в «радуге», ну или в чисто зеленой палитре.

    По пульту — настройки хранятся в EEPROM. Проблема скорей всего в питании. При подаче питания (или его отключении) есть момент когда напряжение находится на уровня когда МК может работать неправильно. EEPROM — как самая капризная периферия в этом случае страдает самая первая. Нужно попробовать добавить конденсатор по питанию. И еще, при такой длине ленты источники питания для ленты и МК лучше вообще иметь раздельные.

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

  16. hector

    Всем привет!
    Собрал сей девайс с 2-х метровой лентой.
    https://youtu.be/F4qZ9SsSM_U
    Что сразу бросилось в глаза (и не только мне) — практически нет зеленого цвета. Это, кстати, хорошо заметно и в авторском видео. Все эффекты какие-то сине-красные…
    В чем причина? Слабые зеленые светодиоды?? Кушает лента не мало — до 2-х и более ампер, могли бы и светиться..
    В тех моментах, где по идее должен быть эффект белого свечения всей ленты — она светиться розовым. (но все три кристалла WS2812, включая зеленый, светятся).
    2. Пульт настроить проблематично. Почему-то, после отключения питания ленты, настройка на пульт сбивается. Хранится в ОЗУ?

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

    5 метров это очень много для телефонной зарядки.
    Нужно взять небольшой кусочек от ленты (обычно где-то через каждые 30 пикселей лента спаивается — можно просто отпаять этот кусочек).

    По поводу правильности прошивки — смотрите на индикаторный светодиод ардуины. Если все нормально и сигнал на ленту идет, то он будет быстро моргать.

  18. fromBimold-.

    Евгений,буду благодарен за ответы.Лента пришла,5 м. хочу ее подцепить пока просто без обвеса,есть nodemcu v3 и arduino uno . чего т вчера пытался,не смог ) . может питания не хватала. Коннектил всю ленту.Какое питание ей подать? 5 В ? пытался запитать от 5 в и 1 А зарядка от телефона и что то не потянуло …или зашил неверно или что.Надеюсь поймете мой сумбур.Вам спасибо за ваши разработки

  19. ON-OFF

    Спасибо большое, придут опробую, заказал 106, думаю будут работать

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

    Я делал с довольно приличными запасами по интервалам. Нужно пробовать.
    Если что — сделаю модификацию.

  21. ON-OFF

    Доброго Всем! Подскажите вместо WS2812B подойдут PL9823 и APA106 или программу менять нужно? По даташиту немного другие интервалы или это не критично?

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

    Сигнал для ленты выводится на 13 вывод ардуины. Количество пикселей которые можно задействовать — максимум 255. Но можно включать любое количество лент в параллель к этому выводу.
    Для ленты с плотностью 60 пикселей на метр — 5 метров это и есть те самые 255 пикселей (чуть больше). 12 штук цепляй параллельно (не забыв в каждую линию управления поставить развязывающий резистор на пару сотен Омм).
    Кстати, ток будет потребляться очень значительный (до 150А,) так что блок питания должен соответствовать.

  23. Dmitry-Lomov

    Извиняюсь, но объясните нубу, к arduin(nano/uno) можно подключить до 12 лент максимум 5метров каждая (без ампфера) на каналы от A до L или только одну на 13 вывод ардуино?

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

    Это один из встроенных эффектов. Просто нужно его выбрать кнопкой Next.

  25. puan-kare

    Евгений,как добиться эффекта стробоскопа,как на видео? 51 сек.Очень красиво.

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

    Создал тему на форуме по поводу вело POV. Буду там аккумулировать материалы.

  27. puan-kare

    Заказал из поднебесной ws2813 для опытов.

  28. Kirill-Borodin

    Вот как раз ПОВ я бы запилил в максимально лучшем виде,только вот с ардуинами не дружу,а в си получается очень медленный вывод.

  29. puan-kare

    Отлично, ждем еще двоих.

  30. strem

    Если пара-тройка человек наберется согласных собрать и тестить, то можно попробовать сделать.

  31. puan-kare

    Видел многие в городе катаются смотрится оч красиво когда проецируется gif картинка внутри колеса,к слову и сам загорелся идеей сделать своему ребенку подобное.. Есть в наличии лента ws2812b и arduino nano,расположить светодиоды в нужной последовательности труда не составит, проблема в написании программы.
    Нашел готовое решение на али но цена прям кусается)) http://ru.aliexpress.com/item/gif-416LED/32676854782.html?btsid=8a37a983-1450-4c1e-bd86-a1fafe47b791&s=p&ws_ab_test=searchweb201556_7%2Csearchweb201602_4_10048_10039_10057_10047_10056_10055_10037_10054_301_10046_10059_10045_10058_10032_10017_10060_10061_10052_414_10062_10053_413_10050_10051%2Csearchweb201603_2&spm=2114.30010708.3.105.Z1ygB2

  32. strem

    В общем — это не проблема (даже с учетом того что в ленте используется шим), но это не так хорошо выглядит в жизни как в рекламных роликах. Оно того не стоит.

  33. De-A

    Скомпилировал под atmega168v-10mu. Проект супер, спасибо!

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

    То есть заработало и проблем нет?
    Отлично!

  35. krach

    С количеством разобрался, восьмой светик не довал дальше сигнала, поменял и провлема пропала.
    Вот видео (качество не очень, ме пойму как снимать, в темноте или при свете.)
    Очень тускые цвета
    https://youtu.be/5Jrq25MHTpI
    Вот видео с ардуно примера, болие мение видно изменение цвета.
    https://youtu.be/BXJmZ-QBGl8

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

    Нет, не нормально.
    Есть возможность кусочек видео снять?

    Хочу посмотреть как оно выглядит. Я сделаю модификацию для этих пикселей.

  37. krach

    Собрал на макетке (PL9823), работают, но только 8 штук последовательно, все остальные после восьмого просто горят синим. Это же не нормально?

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

    Должно заработать, но нужно пробовать.

  39. krach

    здраствуйте, а будет ли работать с PL9823 ?

  40. prima1969

    Добрый день. Испробовал новую версию — получается , что в модификации можно добиться эффекта одного цвета. Цветных переходов и т.д. добиться нельзя. Это не то, что хотелось бы. Зато есть все цвета и хороший зеленый )). Отсюда возникло несколько пожеланий к второму планируемому эффектору — 1) как уже говорили- режим с микрофонным входом, чтобы устройство не зависело только от компьютера, 2) возможность сохранения своих настроенных эффектов 3) регулировка цвета и яркости пикселя с помощью 3-х программных ползунков 4) как вариант — можно приспособить световой датчик для включения ночного режима и более спокойных, медитирующих эффектов 5) возможность переключения масштаба программно при задумывании своих эффектов — например бегущий только один пиксель по всей длине или же заполнение всей длины ленты с одной стороны или с двух и т.д.

  41. Mikola_xxx

    Здравствуйте, Спасибо огромное за проделанную работу.
    Большая просьба, прикрутите пожалуйста режим с микрофоном, очень эффективна эта штука в авто и для вечера на природе.
    Корпус для ленты лучше делать из Пэта молочного 0.3-07мм сворачиваем в трубу 15-20см в диаметре скрепляем двухсторонним скотчем и стяжками получается переносная световая труба.

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

    Настройки из программы в EEPROM не сохраняются — для такого применения я планирую второй эффектор.

    Если аналоговый сигнал будет восприниматься как цифровой, то и соответствующие изменения будут.

  43. prima1969

    Добрый вечер. Интересно посмотреть. Мне придется подождать новой версии Pro mini для того. На UNO R3 нет входов А6, 7 . Как только опробирую — сообщу сразу же. Уже все подготовил и тут облом из-за недостающих контактов ) Еще вопросы — настройки , которые производятся в закладке WS2812 не сохраняются в памяти EEPROM ? И какова правильная последовательность действий , чтобы сохранить изменения. Я так понимаю устройство рассчитывалось на подключение к компьютеру стационарно . По этой причине большинство настроек рассчитаны на использование в связке с ПК ? Если подключить микрофонный модуль к аналоговым выводам получится изменения параметров под звуки ?

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

    Убедили! 🙂

    Сделал модификацию http://www.forum.getchip.net/viewtopic.php?f=24&t=709

    В модификации отключены входа strip_R, strip_G, strip_B.
    В место этого потенциометрами на аналоговых входах А4, А6, А7 (соответственно R, G, B) подстраивается нужный цвет палитры

  45. prima1969

    Ждем с нетерпением Вашего творчества . Микрофонный вход как опция сделает устройство автономным и еще более интересным )

  46. prima1969

    Даже нагляднее и понятнее было бы , если бы на каждый из каналов было бы 3 регулятора яркости по отдельным цветам — это бы позволило бы сказать, что можно подобрать огромное количество комбинаций и было бы нагляднее.

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

    Есть в планах вторая версия эффектора с более широкими возможностями настройки. Думаю там я реализую плавное изменение любой составляющей палитры.

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