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-WS2812.zip - Файлы для сборки устройства

_

(Visited 69 432 times, 32 visits today)

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

  1. Oleg

    Скажите пожалуйста, на UNO также 13 выход? Подключаю ws2811 ничего не происходит. Резистор 300 Ом обязателен?

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

    Да, на UNO тоже выход 13.
    Резистор 300 Ом ставить не обязательно (но желательно — он защитный).
    WS2811 могут не заработать так как у них протокол немного отличается от WS2812

  3. Константин

    Имеется лента на 300 диодов. но работают не все, а как предполагаю 255

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

    Можно просто разделить ленты на равные части и включить их в параллель.
    У каждого куска должен быть свой 300 Ом резистор на DIN, а все резисторы должны подключатся к выходу ардуины.

  5. Dmitry

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

  6. Igo

    Добрый день, купил две желизяки

    hhttps://ru.aliexpress.com/item/Free-Shipping-Glitcher-V1-with-Big-IC-for-x360-high-quality-30PCS-LOT/1665783181.html?spm=a2g0s.9042311.0.0.d0WoDF
    ttps://ru.aliexpress.com/item/Tenstar-8-WS2812-5050-RGB/32832958662.html?spm=a2g0s.9042311.0.0.d0WoDF
    залил прошивку + епром работает моргает
    включил — выключил — включил ( из юсб ) не работает

  7. Igo

    правильные ?
    Fuses OK (E:05, H:DE, L:FF)

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

    to Dmitry
    Зачем осциллограмма? Я уже про это писал http://www.getchip.net/posts/119-umnye-svetodiody-ws2812b-neopixels/
    И да, хоть даташит и нормирует длительность низкого уровня в сигнале, но по факту он может варьироваться в очень больших пределах.

    to Igo
    — eeprom заливать не нужно
    — фьюзы ардуиновские менять не нужно
    — в идеале просто заливается прошивка при помощи родного загрузчика (например вот этим http://www.getchip.net/gcmanager/) — и все
    По поводу того что слетела прошивка — этого у меня еще не было (разве что умирал МК). Мог еепром слетать, но для эффектов и работы в целом он не используется.

  9. Олег

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

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

    Пульты поддерживаются разные (не зависит от типа протокола), разве что какие интелектуальные не подойдут.
    Среда программирования http://algrom.net/russian.html

  11. Петро

    Для антидребезга кнопок можно применить библиотеку Bounce2

  12. pioneer1234

    Здравствуйте. В 168мегу влезет эфектор?

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

    Влезет.

  14. pioneer1234

    Менять что-то нужно?

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

    Теоретически должно заработать и так.
    Мега168 — это Ардуина? Если нет, тогда фьюзы нужно не забыть установить как у ардуины.

  16. pioneer1234

    Собрал на ардуине. Гирлянда очень понравилась. Есть пару мег 168, хочу на ней собрать.

  17. pioneer1234

    А какие должны быть фьюзы?

  18. Женька

    Всем добрый день! С прошедшими вас праздниками, С новым годом и Рождеством! Скажите пожалуйста, возможно ли реализовать такое имея в наличии: С загрузчик Nano 3.0 контроллер совместим для Arduino Nano электронного DIY Kit CH340 драйвера usb (без кабеля) ATMEGA328P
    http://s.aliexpress.com/uYzA7biU?fromSns=Копировать ссылку
    (from AliExpress Android) и светодиодную ленту WS2812 на 5 вольт 144 диода на метр, ее у меня 4, метра, использовать хотелось бы где 570 диодов. И применив бок питания 4V 60A 300W. Заранее спасибо за ответ, я, признаться, в этом деле новичок, и мне было бы приятно, если бы вы ответили подробно.

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

    Привет!
    Да, все должно заработать.

  20. Konstantin

    Здравствуйте, мне не понятно назначение цепи от ноги №3 Ардуино, то есть зачем нужен излучатель IR Led? Ведь для управления от пульта нужен только приёмник(TSOP4836). И, если эта цепь необходима, то куда должен «смотреть» IR Led?

  21. Konstantin

    Можно ли заменить TSOP4836 на другой приёмник? Они различаются рабочими частотами и расположением выводов. Или схема настроена только на работу с частотой TSOP4836?

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

    Нога 3 предназначена для будущей реализации передачи информации для ленты по ИК-каналу. Это чтобы с компьютером была дешёвая связь без проводов. (что я позже и реализовал http://www.getchip.net/posts/124-ik-izluchatel-dlya-upravleniya-ustrojjstvami-po-ik-kanalu/ , но в виду особенностей TSOP и слишком плотного потока данных, связь получилась на очень короткое расстояние)
    — ничего на эту ногу навешивать не нужно.

    По поводу TSOP4836 — можно пробовать ставить разные приемники

  23. Ivan

    Добрый день. Установил прошивку, подключил ленту на 120 светодиодов, работает, но только один режим. Замыкание 6-го пина ни на что не влияет. Пробовал перешивать и на другую плату, на ATmega328P — эффект аналогичен. Подскажите, в чем может быть дело ? Никакой дополнительной обвязки пока не подключал.

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

    Почему 6-й? Следующий эффект — это 7-й пин на ардуине?

  25. distress

    Доброго времени суток! Может кто-то подробней объяснить человеку далекому от вопроса суть шаманств с подключением кнопок и ИК-приемника? Ленту подключил, всё работает, но как подружить ее с пультом? что за кнопка Learn? почему на моей Uno при нажатии reset не мигает диод… слишком много вопросов и ни одного ответа… Заранее спасибо!

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

    Привет!
    Если все делать как написано в разделе «Управление устройством посредством бытового пульта.» — что происходит в процессе?

  27. distress

    GetChiper, пульт без ленты с датчиком реагирует, проверял с помощью IRemote. Потом подключаю к второй ноге ардуины кнопку (через резистор 1кОм) и ИК-приемник и на этом всё. Подозреваю что схему не так собираю, потому что светодиод на ик-приемнике (1838b) постоянно светится. Нет ли возможности сделать подробное фото с подключением на макетке, то что в теме, мне не очень помогло?

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

    Подключите как на видео, только один ИК-приемник и попробуйте.

  29. distress

    GetChiper , а что должно произойти? подключил, лента светится, диод на ИК-приемнике срабатывает на нажатие пульта и всё

  30. Konstantin

    Здравствуйте! При обучении Ардуино пультом нужно нажимать кнопки только на пульте? Или соответственно нужно нажимать и на Ардуино?

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

    distress
    Konstantin

    Привет!
    Нужно делать все как написано в статье

    1 –нажать (и удерживать) кнопку «Learn»
    2 – сбросить Ардуину штанной кнопкой сброса (при этом индикаторный светодиод LED должен несколько раз моргнуть)
    3 – отпустить кнопку «Learn».
    4 – последовательно нажать на пульту 9 кнопок в очередности функций (кнопок устройства 0 All Off … 8 strip_IR Out) Каждое нажатие кнопки на пульте будет подтверждаться индикаторным светодиодом.
    5 – после этого устройство автоматически начинает работать в штатном режиме

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

  32. distress

    GetChiper , а теперь еще раз — что за кнопка такая? Learn? на пульте такой нет. Понимаю, что звучит глупо, но представьте, что вы беседуете с человеком «в танке»)

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

    Learn — это кнопка на устройстве — посмотрите вторую схему. Она устанавливается на ножках ИК-приемника.

  34. distress

    GetChiper, спасибо, так понятнее. И еще — остальные кнопки монтировать для обучения пульта не обязательно?

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

    Для обучения они не нужны.

  36. Дима

    После заливки файла в ардуина нечего не происходит . Все как в инструкции выход на ленту 13 пин через резистор . Плата нано 168 .

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

    Прошивка делалась для нано 328.
    На 168 не пробовалась — нет в наличии такой платы.

  38. Taylash

    Респект бро! Есть такая тем делаю себе студию у меня звуковая карта audigy 2 с неё выводится звук на блютуз трансмиттер с него на колонки. Это так сделано чтобы задержки не было с синтезатора и гитары т.к. если просто на блютуз то идёт через direct sound и обработку с операционной системы получается слышимая задержка. А программа в которой пишу музыку на звуковую карту выводит звук напрямую через ASIO драйвер. Суть в том, что всё стараюсь делать без проводов даже гитара через блютуз и мидиклавиатура через роутер и по вайфай, оставил только кабель 220в с катушкой (из пылесоса) до компа и всё . Ещё есть наушники блютуз. Вот я не нашёл по тексту откуда берется звук для анализа спектра в эффектор? Со звуковухи или откуда как запараллелить чтобы и с блютуз и со звуковухи и любого устройства? Или идёт с того которое в системе по умолчанию? А если ASIO драйвер то будет работать? И ещё хотел бы сделать себе такую систему 2 ленты длиной по 4.6м и 2 по 3.4м реально? Или к примеру квадрат с эффектом тоннеля 2х2 м. какую ленту брать? количество диодов ограничено или нет? И можно на плату подать питание отдельное и вывод на ардуино сделать без кабеля через блютуз или вайфай и как это сделать? подскажи будь любезен, очень надо.

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

    Привет!
    Программа управления эффектором должна «увидеть» источник звука из системы
    Честно говоря еще не пробовал на 10ке это делать, но вроде по отзывам работало.

    Посмотри здесь — есть рекомендации для вин7 и 8
    http://www.getchip.net/posts/113-obnovlenie-programmy-ehffektor-12-skhemy-svetomuzyki-i-virtualnye-svetilniki/

    Ленты можно комбинировать различными способами — тут проблем не возникнет

  40. Сергей

    Подскажите, в автоматическом режиме смена эффектов не происходит?

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

    Происходит. Переключатель 1 и 2 выбирают вариант серии эффектов.

  42. Сергей

    При включении нужно каждый раз нажимать эту кнопку, или режим запоминается?

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

    Если ее закоротить — режим будет работать постоянно

  44. Сергей

    Сделал. Все получилось. Спасибо!
    Еще вопрос: Вы написали, что все установили в кабельный канал. Канал без крышки? Ведь он не прозрачный.

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

    С крышкой.
    Белый кабельный канал прекрасно рассеивает свет от пикселей, создавая непрерывную картинку.

  46. Asder

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

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