После переноса старого Эффектора на платформу 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 (Одна Загрузка)_
Уважаемый GetChiper, а есть ли возможность увидеть .hex файл эфектора в первозданном (читабельном виде, ) дабы разобрать его подробно, или это верх наглости?
спасибо, все понятно.
mega2560 — это совсем другой контроллер, соответственно для него нужна другая прошивка.
Прошивка это машинные команды под конкретный МК (в отличии от программ высокого уровня, которые можно скомпилировать под разные МК)
В скетч переделать не получится.
хм… а если не сложно, объясните почему? частота у нее соответствует, выходов больше. Вроде таже UNO , только лучше… И такой еще вопрос, возможно ли этот эффектор переделать в просто arduino файл? расширение .ino
На меге2560 работать не будет.
Прошивка для меги328 (Nano, Uno, ProMini)
Всем привет. Подскажите что не так, закидываю через Xloader .hex на MEGA 2560, и ничего не происходит. WS 2812B исправна, осцилограф на ножке 13 что то показывает… а на ленте ничего нет.
К сожалению, так просто это не получится.
А не могли бы Вы скомпилировать проект под atmega128 ?
Лента и спаивается из кусочков по пол метра — так что это нормально. Ну а то что первый кусок так себя ведет — это где-то непорядок.
Разобрался. Отпаял первые полметра ленты и всё заработало просто отлично! Спасибо за ответы.
В общем у меня сложилось такое впечатление, что китаец мне глючную ленту продал. Это ваще нормально, что пятиметровая лента спаяна из кусочков по полметра? Первые полметра у меня живут своей собственной жизнью, отличаются от того, что происходит на остальной ленте. Буду разбираться.
К сожелению, если закоротить четвёртый пин ардуинки на землю, никаких изменений, включается всё тот же один эффект и крутится по кругу, как и в случае, который я описал ранее. Более того, если данную команду отправить на контроллер из программной оболочки эффектора, результат получается ровно такой же. Есть мнение где ошибка?
А если постоянно удерживать — гаснет?
Здравствуйте, уважаемый автор. Собрал предложенную вами конструкцию. Кнопка 0 All Off почему-то не гасит ленту при кратковременном замыкании 4-го пина на землю, вместо этого включается какой-то эффект (всегда один и тот же), и крутится по кругу. Или для гашения ленты этот пин должен быть постоянно замкнут на землю? Использую в качестве контроллера UNO.
Палитра по умолчанию «пламя» — действительно не имеет зеленого цвета, по понятным причинам.
Зеленый цвет будет в «радуге», ну или в чисто зеленой палитре.
По пульту — настройки хранятся в EEPROM. Проблема скорей всего в питании. При подаче питания (или его отключении) есть момент когда напряжение находится на уровня когда МК может работать неправильно. EEPROM — как самая капризная периферия в этом случае страдает самая первая. Нужно попробовать добавить конденсатор по питанию. И еще, при такой длине ленты источники питания для ленты и МК лучше вообще иметь раздельные.
Для случае если устройство собирается не на ардуине, то можно попробовать разные настройки BOD-фьюзов.
Всем привет!
Собрал сей девайс с 2-х метровой лентой.
https://youtu.be/F4qZ9SsSM_U
Что сразу бросилось в глаза (и не только мне) — практически нет зеленого цвета. Это, кстати, хорошо заметно и в авторском видео. Все эффекты какие-то сине-красные…
В чем причина? Слабые зеленые светодиоды?? Кушает лента не мало — до 2-х и более ампер, могли бы и светиться..
В тех моментах, где по идее должен быть эффект белого свечения всей ленты — она светиться розовым. (но все три кристалла WS2812, включая зеленый, светятся).
2. Пульт настроить проблематично. Почему-то, после отключения питания ленты, настройка на пульт сбивается. Хранится в ОЗУ?
5 метров это очень много для телефонной зарядки.
Нужно взять небольшой кусочек от ленты (обычно где-то через каждые 30 пикселей лента спаивается — можно просто отпаять этот кусочек).
По поводу правильности прошивки — смотрите на индикаторный светодиод ардуины. Если все нормально и сигнал на ленту идет, то он будет быстро моргать.
Евгений,буду благодарен за ответы.Лента пришла,5 м. хочу ее подцепить пока просто без обвеса,есть nodemcu v3 и arduino uno . чего т вчера пытался,не смог ) . может питания не хватала. Коннектил всю ленту.Какое питание ей подать? 5 В ? пытался запитать от 5 в и 1 А зарядка от телефона и что то не потянуло …или зашил неверно или что.Надеюсь поймете мой сумбур.Вам спасибо за ваши разработки
Спасибо большое, придут опробую, заказал 106, думаю будут работать
Я делал с довольно приличными запасами по интервалам. Нужно пробовать.
Если что — сделаю модификацию.
Доброго Всем! Подскажите вместо WS2812B подойдут PL9823 и APA106 или программу менять нужно? По даташиту немного другие интервалы или это не критично?
Сигнал для ленты выводится на 13 вывод ардуины. Количество пикселей которые можно задействовать — максимум 255. Но можно включать любое количество лент в параллель к этому выводу.
Для ленты с плотностью 60 пикселей на метр — 5 метров это и есть те самые 255 пикселей (чуть больше). 12 штук цепляй параллельно (не забыв в каждую линию управления поставить развязывающий резистор на пару сотен Омм).
Кстати, ток будет потребляться очень значительный (до 150А,) так что блок питания должен соответствовать.
Извиняюсь, но объясните нубу, к arduin(nano/uno) можно подключить до 12 лент максимум 5метров каждая (без ампфера) на каналы от A до L или только одну на 13 вывод ардуино?
Ищу решение для эквалайзера например как тут http://www.whatimade.today/graphic-equalizer-using-esp8266-msgeq7-ws2812/, но хочется срабатывания эквалайзера от микрофона или audio выхода
Это один из встроенных эффектов. Просто нужно его выбрать кнопкой Next.
Евгений,как добиться эффекта стробоскопа,как на видео? 51 сек.Очень красиво.
Создал тему на форуме по поводу вело POV. Буду там аккумулировать материалы.
Заказал из поднебесной ws2813 для опытов.
Вот как раз ПОВ я бы запилил в максимально лучшем виде,только вот с ардуинами не дружу,а в си получается очень медленный вывод.
Отлично, ждем еще двоих.
Если пара-тройка человек наберется согласных собрать и тестить, то можно попробовать сделать.
Видел многие в городе катаются смотрится оч красиво когда проецируется 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
В общем — это не проблема (даже с учетом того что в ленте используется шим), но это не так хорошо выглядит в жизни как в рекламных роликах. Оно того не стоит.
Здравствуйте,вопрос к автору,можно ли из ws2812b +arduino сделать такой шедевр? https://youtu.be/npZT_WI0CQ0
Скомпилировал под atmega168v-10mu. Проект супер, спасибо!
То есть заработало и проблем нет?
Отлично!
С количеством разобрался, восьмой светик не довал дальше сигнала, поменял и провлема пропала.
Вот видео (качество не очень, ме пойму как снимать, в темноте или при свете.)
Очень тускые цвета
https://youtu.be/5Jrq25MHTpI
Вот видео с ардуно примера, болие мение видно изменение цвета.
https://youtu.be/BXJmZ-QBGl8
Нет, не нормально.
Есть возможность кусочек видео снять?
Хочу посмотреть как оно выглядит. Я сделаю модификацию для этих пикселей.
Собрал на макетке (PL9823), работают, но только 8 штук последовательно, все остальные после восьмого просто горят синим. Это же не нормально?
Должно заработать, но нужно пробовать.
здраствуйте, а будет ли работать с PL9823 ?
@Mikola_xxx
В этом эффекторе микрофонного входа не будет. Будет в следующем и есть вот здесь http://www.getchip.net/posts/120-adjusty-strip-prodvinutyjj-indikator-urovnya-na-ws2812b
@prima1969
Принято в общий список хотелок 🙂
Добрый день. Испробовал новую версию — получается , что в модификации можно добиться эффекта одного цвета. Цветных переходов и т.д. добиться нельзя. Это не то, что хотелось бы. Зато есть все цвета и хороший зеленый )). Отсюда возникло несколько пожеланий к второму планируемому эффектору — 1) как уже говорили- режим с микрофонным входом, чтобы устройство не зависело только от компьютера, 2) возможность сохранения своих настроенных эффектов 3) регулировка цвета и яркости пикселя с помощью 3-х программных ползунков 4) как вариант — можно приспособить световой датчик для включения ночного режима и более спокойных, медитирующих эффектов 5) возможность переключения масштаба программно при задумывании своих эффектов — например бегущий только один пиксель по всей длине или же заполнение всей длины ленты с одной стороны или с двух и т.д.
Здравствуйте, Спасибо огромное за проделанную работу.
Большая просьба, прикрутите пожалуйста режим с микрофоном, очень эффективна эта штука в авто и для вечера на природе.
Корпус для ленты лучше делать из Пэта молочного 0.3-07мм сворачиваем в трубу 15-20см в диаметре скрепляем двухсторонним скотчем и стяжками получается переносная световая труба.
Настройки из программы в EEPROM не сохраняются — для такого применения я планирую второй эффектор.
Если аналоговый сигнал будет восприниматься как цифровой, то и соответствующие изменения будут.
Добрый вечер. Интересно посмотреть. Мне придется подождать новой версии Pro mini для того. На UNO R3 нет входов А6, 7 . Как только опробирую — сообщу сразу же. Уже все подготовил и тут облом из-за недостающих контактов ) Еще вопросы — настройки , которые производятся в закладке WS2812 не сохраняются в памяти EEPROM ? И какова правильная последовательность действий , чтобы сохранить изменения. Я так понимаю устройство рассчитывалось на подключение к компьютеру стационарно . По этой причине большинство настроек рассчитаны на использование в связке с ПК ? Если подключить микрофонный модуль к аналоговым выводам получится изменения параметров под звуки ?
Убедили! 🙂
Сделал модификацию http://www.forum.getchip.net/viewtopic.php?f=24&t=709
В модификации отключены входа strip_R, strip_G, strip_B.
В место этого потенциометрами на аналоговых входах А4, А6, А7 (соответственно R, G, B) подстраивается нужный цвет палитры
Ждем с нетерпением Вашего творчества . Микрофонный вход как опция сделает устройство автономным и еще более интересным )
Даже нагляднее и понятнее было бы , если бы на каждый из каналов было бы 3 регулятора яркости по отдельным цветам — это бы позволило бы сказать, что можно подобрать огромное количество комбинаций и было бы нагляднее.
Есть в планах вторая версия эффектора с более широкими возможностями настройки. Думаю там я реализую плавное изменение любой составляющей палитры.