Управление RGB светодиодами WS2811 + датчик освещенности

DooDllez
Offline
Зарегистрирован: 04.10.2018

Всем привет!

Собираю себе объемные буквы для вывески с RGB подсветкой.  Помимаю что я хочу но еще слабо понимаю что для этого нужно, подскажите что мне все-же нужно.

Идея такова:

Всего будет 14 букв. В каждой букве в среднем 9 RGB модулей на WS2811.

Буквы будут переливатся разнами цветами, эффект волны с разных мест на букве и еще какнибуть. В зависимости от солнечного света должна изменятся яркость свечения светодиода. К примеру если солнце светит ярко то светодиод работает на 100%, а по мере захода солнца дион уменьшает свою яркость, а ночью работает на 40%. Примерно так.

Сейчас имеем 117 модулей WS2811 и блок питания на 300ват с тремя линиями питания. 

Для реализации полагаю мне понадобится:

Arduino Mega 2560 (что-бы подключить каждую букву отдельно к ШИМ выходу)

BH1750FVI  или APDS-9930 (для определения освещенности)

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

 

Правильные ли компоненты я выбрал? Может еще что-то нужно\не нужно?

 

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

2811 не нужен PWM. В остальном набор названий деталей соответствует описанной словами задаче.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DooDllez пишет:
подключить каждую букву отдельно к ШИМ выходу
Зачем?

sadman41
Offline
Зарегистрирован: 19.10.2016

ЕвгенийП пишет:

DooDllez пишет:
подключить каждую букву отдельно к ШИМ выходу
Зачем?

Деревенская дискотека, наверное.

DooDllez
Offline
Зарегистрирован: 04.10.2018

sadman41 пишет:

2811 не нужен PWM. В остальном набор названий деталей соответствует описанной словами задаче.

Спасибо. Еду значит покупать. Вот только про PWM не понял... Разве яркостью не по PWM управляется 2811?

ЕвгенийП пишет:

DooDllez пишет:
подключить каждую букву отдельно к ШИМ выходу
Зачем?

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

sadman41
Offline
Зарегистрирован: 19.10.2016

DooDllez пишет:

Спасибо. Еду значит покупать. Вот только про PWM не понял... Разве яркостью не по PWM управляется 2811?

PWM исполняет сам чип WS2811.

DooDllez
Offline
Зарегистрирован: 04.10.2018

Вот как... Тогда выходит Arduino можно взять и по проще.

sadman41
Offline
Зарегистрирован: 19.10.2016

Можно и сенсор попроще взять - на фоторезисторе, например. И соединять попроще. Все от задачи зависит. Она же у вас в голове, а не у нас.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DooDllez пишет:

Вот как... Тогда выходит Arduino можно взять и по проще.

Можно-то оно можно, но если Вы не профессиональный программист, то может лучше взять несколько ардуин (маленьких, типа pro-micro) по одной на букву? 117 светодиодов, особенно если хочется плавного изменения (а значит полное обновление всех светодиодов 50 раз в секунду), - существенно забьёт контроллер. Я делал на 140 светодиодов на Nano - это потребовало реально серьёзного программирования. После прототипирования я сделал на голой 328-ой микросхеме с кварцем на 20МГц - стало полегче. 

Может Вам сначала на маленьком примерчике попробовать, чтобы оценить что получается.

DooDllez
Offline
Зарегистрирован: 04.10.2018

Извиняюсь если криво как-то обьесняю. Вот видио которое меня сподвигло на эту затею: https://www.youtube.com/watch?v=emJGG3u0IYU

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

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

Программированием Arduino не занимался никогда, сижу вот изучаю.Сегодня надеюсь куплю контроллер и буду эксперементировать.

Где криво думаю, поправьте пожалуйста. 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Женя! Пользуясь темой и твоим опытом: не подскажешь, где поискать примеры красивых эффектов?

Я, к Новому Году, себе беседку украшаю модулями WS2811, но придумать ничего, кроме "метеоров" и "пусть переливается" - не могу, не дизайнер. Может где-то есть источник вдохновения? Просто поглядеть и подумать.

sadman41
Offline
Зарегистрирован: 19.10.2016

Поправить можно человека, который уже попрограммировал что-то. В противном случае надо сесть рядом с ним и неделю расжевывать все, что касается реализуемой задачи. Иначе вы начнете фантазировать насчет того, что "проще", метаться "а может так", "или так", "этак делаем?" и бедный "консультант" начнет волосы на себе рвать.

sadman41
Offline
Зарегистрирован: 19.10.2016

wdrakula пишет:

Женя! Пользуясь темой и твоим опытом: не подскажешь, где поискать примеры красивых эффектов?

Не Женя, но могу подсказать - FastLed library examples, Arduino Neopixel Examples. Под фастлед я видел какой-то проект с кучей спецэффектов, но они однотипненькие были.

DooDllez
Offline
Зарегистрирован: 04.10.2018

ЕвгенийП пишет:

Можно-то оно можно, но если Вы не профессиональный программист, то может лучше взять несколько ардуин (маленьких, типа pro-micro) по одной на букву? 117 светодиодов, особенно если хочется плавного изменения (а значит полное обновление всех светодиодов 50 раз в секунду), - существенно забьёт контроллер.

По проще значит не пойдет, не подумал об этом. Разделить буквы по контроллерам... Кажется вылезут проблеммы с синхронизацией потом

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

где поискать примеры красивых эффектов?

К сожалению, не знаю - у самого это вечная проблема. Ну, вот не зудожник я. Иногда смотришь как делают люди с хорошим художественным вкусом, используя даже самые тривиальные программные приёмы - зависть гложет

sadman41
Offline
Зарегистрирован: 19.10.2016

Fastled ориентируется на 60FPS в своих экзамплах. Так что теоретически можно погнать с хорошей скоростью, но, опять же - надо быть готовым к урезанию осетра.

DooDllez
Offline
Зарегистрирован: 04.10.2018

sadman41 пишет:

Поправить можно человека, который уже попрограммировал что-то. В противном случае надо сесть рядом с ним и неделю расжевывать все, что касается реализуемой задачи. Иначе вы начнете фантазировать насчет того, что "проще", метаться "а может так", "или так", "этак делаем?" и бедный "консультант" начнет волосы на себе рвать.

Тогда беру комплектуху как наметил изначально. Подсоеденяю 1 модуль пробую настроить, потом букву и мучаю её, далее еще 2-3 и тд. Так наверно будет правильно. А дальше будет видно надеюсь

sadman41
Offline
Зарегистрирован: 19.10.2016

...а из своего ёлочного опыта могу сказать, что все эти мегаэффекты интересны только до второго тоста.

Потом уже главное чтобы просто "было красиво" и "не мельтешило" ))

sadman41
Offline
Зарегистрирован: 19.10.2016

DooDllez пишет:

Тогда беру комплектуху как наметил изначально. Подсоеденяю 1 модуль пробую настроить, потом букву и мучаю её, далее еще 2-3 и тд. Так наверно будет правильно. А дальше будет видно надеюсь

В принципе - да. Ардуину сменить в таком наборе самая простая операция. Взял мегу, накидал... На затраты по ресурсам посмотрел - если влезает в миньку, поставил ее в устройство, а на меге дальше тренируешься.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DooDllez пишет:

Кажется вылезут проблеммы с синхронизацией потом

Вот Вам и надо решить, что есть бОльшая проблема. 

С одним контроллером имеем ( https://cdn-shop.adafruit.com/datasheets/WS2811.pdf ).

1. передача данных для одного светодиода 2,5х24 = 60 микросекунд
2. Всего светодиодов у Вас 117, значит для всех - 60*117 = 7020 микросекунд
3. В конце нужен сигнал reset - ещё 50, итого 7070 микросекунд.

Всего же у Вас есть 20 миллискунд (чтобы 50 раз в секунду обновлять).

Итого имеем, что при идеальном программировании, у Вас 7,07 миллисекунды уходит только на передачу данных, которую прерывать нельзя и 12,93 миллисекунды остаётся на всё остальное (вычисления эффектов, снятие показаний с датчиков и т.п.). Это при идеальном. При реальном будет чуть хуже.

Так что решайте, что бОльшая пролема - синхронизация или вот такая загрузка процессора.

Потому я и советую побаловаться на маленьком примере для разминки и лучшего понимания.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sadman41 пишет:

wdrakula пишет:

Женя! Пользуясь темой и твоим опытом: не подскажешь, где поискать примеры красивых эффектов?

Не Женя, но могу подсказать - FastLed library examples, Arduino Neopixel Examples. Под фастлед я видел какой-то проект с кучей спецэффектов, но они однотипненькие были.

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

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

Fastled ориентируется на 60FPS в своих экзамплах. 

Ну от экзампла же не требуется делать что-то ещё :)))

Реальные тайминги я расписал чуть выше. Вот пусть ТС и чешет репу.

Сам я делал на 20МГцах руками (безо всяких фастледов) на асссемблере - тайинги выдерживал идеально (с точностью до аккуратности кварца) - длительность исполнения команд в тактах учитывалсь и т.п.. При этом я полностью отделил логику от показа - по сути был массив rgb данных, которые показываются сами по себе постоянно, а основная программа только меняла в нём данные как и когда ей надо. Всё работает, но сказать, что это просто не могу, не просто это. Я полдня на эту фигню потратил.

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, а что проще взять экземпл, залить и посмотреть на натуре, а не в каком-то кривом видеоролике с вертикальной ориентацией? Или в ютубике набрать "fastled effects", к примеру. Эффекты надо искать ближе к либам, а не у дизайнеров, которые их только на бумаге и умеют нарисовать))

sadman41
Offline
Зарегистрирован: 19.10.2016

ЕвгенийП пишет:

Ну от экзампла же не требуется делать что-то ещё :)))

Так по описанной задаче реалтайм видео и не требуется выводить.  По опыту могу судить, что скорее всего дальше стандартных переливов дело-то и не пойдет. А когда пойдет - наши советы уже и не нужны будут.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Садман! Ну ты ж давно с нами. Ни я ни Евгений не станем пользоваться Фастледом... ну просто в голову не придет.

Я, кстати, поглядел на него (на фастлед). В идее - весьма профессионально написано, но именно то, о чем был недавно пост в "Отвлеченных". Это монстр - на все случаи жизни. Под четыре платформы, под все контроллеры. Это и есть беда современного программирования! Для охоты на воробьев потратим стопицот дохуярдов денег и разработаем суперпушку, с самонаведением, самозарядом, контролем безопасности, ИИ для колнтроля за оператором. Красивый цвет, эргономика кабины и все дела. Само-собой - создадим учебные центры подготовки пушкарей. Никто не спорит - воробьев будет бить - АФИГЕННО! Но из рогатки, все равно проще, если умеешь, так?

sadman41
Offline
Зарегистрирован: 19.10.2016

Да, господи, что за идиосинкразия? Я что, с ножом у горла заставляю фастлед использовать? На эффекты посмотрели (тот же самый Fire2012) и хоть в инструкциях процессора его переписывайте, хоть на 174-й логике паяйте ))

А топикстартеру посоветую таки датчик 1750. Он хотя бы в нечестных люксах выдает освещенность, а не в условных единицах АЦП.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

что за идиосинкразия? 

"Неприличными словами не выражацца!"

DooDllez
Offline
Зарегистрирован: 04.10.2018

sadman41 пишет:

 

А топикстартеру посоветую таки датчик 1750. Он хотя бы в нечестных люксах выдает освещенность, а не в условных единицах АЦП.

Его и оформил. Сейчас поеду собирать все по городу... 

strarbit
Offline
Зарегистрирован: 12.06.2016

LED Controller T1000S хороший для этой задачи. Правда, вы будете .... с arduino 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

в нечестных люксах выдает освещенность, а не в условных единицах АЦП.

А мне в попугаях больше нравится.

sadman41
Offline
Зарегистрирован: 19.10.2016

ЕвгенийП пишет:

А мне в попугаях больше нравится.

Особенно в тушённых неплохо... Однако, я сейчас вот с ADPS9960 вожусь... Ну выдает он цифры какие-то, да, но как определить  - отражают ли они действительность или просто Integration Time неудачно взят - вопрос, конечно. Люксы-то хоть с люксметром каким-нить можно паралелльно померять.

DooDllez
Offline
Зарегистрирован: 04.10.2018

strarbit пишет:

LED Controller T1000S хороший для этой задачи. Правда, вы будете .... с arduino 

Да, похоже бы подошло... Но вы правы, я буду с arduino :)

Все купил, через пару часов буду пытатся что-то изваять. 

DooDllez
Offline
Зарегистрирован: 04.10.2018

Мозг кипит но что-то начинает получатся...

Заглядывая похоже в далекое будующее, регулировку яркости по датчику можно будет прикрутить в любое время? 

Как я понимаю он грубо будет подставлять нужный параметр #define BRIGHTNESS по достижению определенных показателей. 

sadman41
Offline
Зарегистрирован: 19.10.2016

DooDllez пишет:

Заглядывая похоже в далекое будующее, регулировку яркости по датчику можно будет прикрутить в любое время? 

В принципе - да.