Новогодний светильник

С наступающим!


Я свою «гирлянду» сделал так (извиняюсь за качество видео):


Светильник за 550 р. (Российского производства), светодиоды WS2812b, ebay: 100 шт. за 1000+, блок питания (с большим запасом, не только для светильника, на будущее) WeanWell RS-50-5. На круг расходы не более 3000 р.
Контроллеры: Arduino Pro Mini (на видео он), либо STM32F050F4P6 без кварца (ака STM32F031F4P6, но не успел доделать софт, плюс требуется калибровка частоты, иначе работает нестабильно) плюс LDO для питания.
Софт: FastLED для Arduino. Скетч: DemoReel100. (Ссылка на github).
Светодиоды разбиты на 10 групп по 10 светиков. Соединены в единую цепь в направлении от центра к краю, одна полоска с другой — по часовой стрелке.

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

Светодиоды паял на «стенде» из картонки (у меня была не лента, а отдельные светодиоды, точнее плоски на подложке по 10 штук), чтобы они располагались равномерно, через 36 градусов, потом перенес на светильник, в центре расположил «башенку» из подвернувшейся круглой крышечки, т.е. полоски к центру ближе к матовой поверхности светильника, а края полосок закрепил скотчем (крепил за провод, а не за светодиоды). Делал контрольный прогон на несколько часов, всё работает надежно, нагрева или перегрева нет.

Для STM32 делал «эмулятор» на C# (отображение светодиодов и отладка алгоритмов, затем перенос на Keil v5+), что оказалось достаточно удобно, хотя из минусов — при переносе на Keil, приходится код немного дорабатывать, впрочем это не сильно муторно. Но это всё равно не помогло, времени не хватило :) Прошивал через ST-LINK/V2-1 от NUCLEO-F411RE.

Описал кратко, просто как пример, как можно сделать. Целью было сделать более или менее красиво на НГ, плюс покопаться в STM32F050 с его DMA+SPI, так что цель еще не достигнута, пока в окончательном варианте работает только на Arduino.

Немного фото внутренностей:
Без матового стекла
Вид снизу
Вид сбоку
Вид сверху

Дополнение:
Поскольку изначально была цель использовать STM32, а не Ардуину, потому в софте для Ардуины особо не копался. Из двух библиотек, которые я нашел, больше понравилась FastLED (ссылка на github в начале статьи). Вторая либа Adafruit_NeoPixel (Ссылка на github) оказалась менее интересной, но явно весит меньше, впрочем, вряд ли это плюс.
FastLED имеет более профессиональный подход с оптимизированными математическими функциями, а также доп.функциями для анимации, а также имеет большее количество поддерживаемых устройств. Не смотря на то, что она больше весит, памяти (32КБ в Леонардо) достаточно, чтобы наваять еще немало эффектов.

Как я уже говорил, на видео — результат работы скетча DemoReel100.ino из комплекта примеров FastLED. Он содержит несколько демонстрационных эффектов (в квадратных скобках указаны интервалы, где эффект присутствует на видео):
1. Радуга. [0:00-0:09] Правда она медленно переливается (на видео), я подправил код, стало вращаться быстрее, так красивее. Плюс добавил смену направления вращения цветов.
2. Радуга со вспышками. [0:09-0:19] Та же радуга, вспышки в случайных местах.
3. Конфетти. [0:19-0:29] В случайных местах высвечиваются точки, которые плавно затухают. Цвет выводимых точек со временем изменяется примерно по палитре радуги.
4. Sinelon. [0:29-0:39] Перекатывающаяся полоска из нескольких светодиодов. С эффектом плавного затухания.
5. BPM. [0:39-0:48] Имитация индикатора уровня. В моем варианте выглядит «странно». Тоже лучше посмотреть на видео.
6. Juggle. [0:48-0:58].

Еще был доработан эмулятор, о котором я упоминал (C#), он отображает как моё расположение светодиодов, так и как они бы выглядели, если бы были единой лентой. Плюс в него добавлены некоторые функции из FastLED, чтобы работали все эффекты из DemoReel100. (Да, скриншоты бы не помешали. Думаю, не спешно, добавлю в отдельную статью скриншоты, плюс исходники, если доведу до ума, а то на шарпе редко пишу, мог наговнокодить.)

В дальнейших планах, перейти совсем на STM32, возможно добавить IR управление, упростить заливку программы в камень (чтобы не лазить программатором), т.е., например, прикрутить ESP8266 и заливать эффекты «на лету» по WiFi, либо заливать новую прошивку, дабы сохранить автономность.
Кроме того у меня еще есть китайская (реально привезена из Китая где то в конце прошлого века ;) не антиквариат! ) настольная лампа с двумя матовыми плафонами, есть о чем подумать.
  • +6
  • 30 декабря 2015, 12:29
  • kisoft

Комментарии (21)

RSS свернуть / развернуть
А картиночки то и нету :(
0
«Зато стеночка осталась» :) Поправил, первое видео на youtube, не сразу разобрался.
+1
хмм. у меня оно почему-то серым квадратом отображается.
кинь ссылочку на тытрубу напрямую.
0
Ctrl-U, Ctrl-F, «youtu» Enter -> www.youtube.com/watch?v=u3Ml_Jb6Xjg
+1
спасибо
0
Мило. а как оно там в нутри делается?
0
Что именно, потроха сфотографировать? Ок, попробую, если успею в этой суете :) Правда не сильно приглядно, но это второй вопрос, у кого руки есть, получше сделает.

10 полосок по 10 светодиодов, провода для них (питание и последовательное соединение в одну линию. Использовал МГТФ 0.7 и какой-то монтажный провод, параметров не помню), скотч, крышечка под центральную часть. Всё это выводится тремя проводами (+5В, GND, сигнальный провод) на нижнюю часть светильника, где расположены БП 5В, Arduino. Через резистор (220 Ом) на выход Arduino. Клеевой пистолет, скотч и провода крепятся к основанию, чтобы не болтались. К БП сетевой шнур (выключатель не делал). Всё это собрано, сверху закрыто матовым стеклом (оно легко снимается, открывая доступ к светодиодам). Я коротенько, чтобы войнаимир не написать :)
Ок, постараюсь сфотографировать вечером.

Кстати, кому как, а я паял все светодиоды перемычками, надо было ленту покупать и разрезать, а так 100 светиков по 6 проводов — это не мало времени забирает. Светики подобные таким (брал у другого продавца, там уже всё продано) На фото как раз матрица 10х10.
0
Добавил фото внутренностей.
На втором снимке (вид снизу) светло-коричневый кусок кабель-канала, в нем планировалось разместить всю начинку.
Там на проводах LDO для STM32 болтается, не используется.
0
Наверное следует уточнить, что на самом деле своими глазами выглядит более эффектно, чем на видео, так как «видеокамера» некорректно снимает цветное светодиодное освещение.
+1
Согласен, выглядит намного лучше, чем на видео.
Сейчас висит на стене, домашним нравится :)
0
Сборочка на задней стороне светильника, конечно, тихий ужас)

А сколько жрет этот светильник? И расскажи о алгоритмах мигания.
0
  • avatar
  • Vga
  • 31 декабря 2015, 01:14
Используется стандартная либа FastLED. Ок, добавлю, но не сегодня ;)
Сегодня, правда ихнюю радугу поправил, стало живее и приятней. Добавил вращение в разные стороны.
Кстати, в таком форм-факторе лучше выглядят быстрые эффекты.
Светильник жрёт впределе 6А, естественно львиную долю едят светики, 3*20=60мА * 100 = 6А. Остальное можно не считать.

Монтаж, да, есть над чем поработать, согласен. Сама статья по идее для того, чтобы посмотреть как это выглядит в таком расположении светодиодов, а уж как сделано, показывать не планировал.
0
6А — теоретическое значение или реально столько намерял? Сколько среднее? 30Вт для светодиодного светильника отнюдь не мало, если вывести его в #FFFFFF — вероятно светит не хуже, чем если штатную лампочку поставить?)
0
Не измерял, конечно. В статике, можно будет попробовать.
Светит достаточно ярко. Насколько помню это ещё не полная яркость. Там цвета формируются в HSV, потому яркость можно регулировать. Была мысль, пульт подключить, хотя это разве что для учебных целей, да поисследовать, разве что потом эффектов наделать, памяти море.
Вообще для первого раза нормально, по быстрому, а так, если исследовать, надо времени побольше.
0
а где код? я год назад в быдлодуине делал и даже дмх делал, но похоже она уже не тянет 150 каналов и на ленте появляются вспышки разных цветов
4 по 10 тянет, а 1 по 150 не тянет
а если просто эффекты, то норм, но уныло

еще может кто знает софт для генерации каких эффектов или тупо таблицы делает?
0
Код стандартный. Вывод ногодрыгом если Ардуина, если стм32, то DMA+SPI в циклическом режиме, плюс буфер для формирования эффектов. Светодиоды цепляются к одному пину, здесь нет каналов.
Софтом тоже интересовался, но ничего не нашёл, потому делал сам на шарпе.
Попробую на днях описать полученный опыт.
0
каналы это в протоколе дмх для управления светом
там есть софт, но мега328 уже не тянет 250кбит и еще софтовый протокол светодиодов
0
кому надо сборник эффектов для 2811 или 12
хекс на 50 диодов и исходник для быдлодуины с библиотекой фастлед
rghost.net/8z6vp7JtM

сборник эффектов
www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/
последний с мачиками в бесконечном цикле сидит, я его не стал ставить
хер знает где там это исправивть, чтобы он в конечном цикле был
0
вот более новый файл
rghost.net/8PcKKxNH6
0
Спасибо за ссылку, посмотрел, но мне ничего не приглянулось из эффектов. Плюс они там не парятся и вызывают стандартный sin, а не FastLEDовский (оптимизированный).
Разве что «мячики» с эффектом прыжков выглядят забавно на моем расположении светодиодов (пробовал запускать на моем эмуляторе светильника).
0
Красиво выглядят эффекты. Зачет!
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.