Страницы

четверг, 10 января 2019 г.

Гирлянда на светодиодах WS2811. Продолжение.


Новогоднее обострение.
Гирлянда на светодиодах
WS2811.
Продолжение.



На прошлый новый год я сделал простую ёлочную гирлянду на основе светодиодов с микросхемами WS2811. Эта гирлянда была собрана на скорую руку на основе отладочного набора STM32 Discovery:



В этом году мне захотелось снова подурачиться сделать законченную и красивую конструкцию с большим количеством эффектов.
Вначале я было собрался купить качественную гирлянду с светорассеивателями, примерно такую:



Однако, при стоимости гирлянды около 30 долларов доставка в 45 долларов, мне оказалась не по карману. И тогда я решил выкрутиться по-другому. Заказал пару обычных гирлянд на светодиодах WS2818 (от WS2811 они отличаются тем, что гирлянда продолжит работать при выходе из строя одного из чипов в цепочке). Заказывал без пристального выбора, вот здесь. Также, в качестве светорассеивателей, заказал 150 самых дешёвых теннисных шариков вот здесь за совершенно смешную цену.
Затем нарисовал электрическую схему пульта управления:




На радио рынке выбрал подходящий корпус с кнопкой. Подошёл Z14.

 Развёл плату под выбранный корпус и заказал в Китае десяток плат:

 Пока платы изготавливались, занялся программой. Во-первых, изменил внутреннее представление цвета из системы RGB в систему HSV (цвет, насыщенность, яркость). Это дало возможность легко играться с изменением цветов, их зажиганием и погасанием. Кстати, мне пришлось самому писать преобразование из HSV в RGB, так как все встреченные примеры из интернета были с грубейшими ошибками и не работали.

После этого я изменил главную программу для работы с кнопкой. Теперь эффекты сменяются автоматически через пару минут или при коротком нажатии на кнопку. Если нужно остановить смену эффектов, достаточно подержать кнопку больше 2-х секунд. Повторное короткое нажатие на кнопку возвращает автоматическую смену эффектов. Больше для новогодней гирлянды и не нужно. 
Также я изменил программу, чтобы процессор работал без кварца.
Затем я набросал черновики различных эффектов и стал ждать получения посылок из Китая.
Когда приехали платы:



Я спаял один блок:




Блок подключается к гирлянде с помощью её же разъёма от задней части. На лампы я с сыном насадил рассеиватели света, сделанные из теннисных шариков. Для этого достаточно проделать в шарике отверстие диаметром 12мм. Я просто проплавил металлическим цилиндром подходящие отверстия.
Получилось довольно неплохо:


Питаются гирлянды от блоков питания 5В 3А, купленных на рынке электро товаров.
После этого мы всей семьёй занялись отладкой и выдумыванием приятных глазу эффектов. Это не так просто, как кажется на первый взгляд. Во-первых, лампочки не должны навязчиво моргать, чтобы не утомлять глаза при долгом включении. Во-вторых, эффекты должны смотреться, когда гирлянда развешена на ёлке. В-третьих, эффекты должны вызывать ассоциацию с новогодним праздником.
Для этого специально подбиралась программа генерации случайного цвета, в которой большое место занимают разнообразные новогодние цвета от светло-розового до насыщенного красного. Для некоторых эффектов вообще цвета назначены в приказном порядке. В общем, получился хороший пример коллективного творчества.
Я изготовил три гирлянды. Одну повесил на ёлку, вторую на балкон, а третью подарил на новый год друзьям. Новогодние праздники гирлянды отработали без замечаний.
Вот видео эффектов:




Эффектов пока двенадцать:

  1. Вся гирлянда в два цвета через одну лампу, цвета плавно меняются по очереди.
  2. Один огонёк случайного цвета бежит вверх.
  3. Один огонёк бежит вверх и вниз, цвет меняется внизу.
  4. Восемь огоньков разного цвета бегут вверх.
  5. Четыре огонька разных цветов движутся вверх и вниз по гирлянде.
  6. В случайных местах гирлянды загораются и гаснут десять огоньков случайного цвета (звёздное небо).
  7. Восемь участков заданных цветов медленно движутся вверх по гирлянде.
  8. Гирлянда светится радугой с медленным изменением цвета.
  9. Вся гирлянда пульсирует разными цветами.
  10. Вся гирлянда светится одним цветом, медленно изменяя цвет.
  11. Гирлянда светится случайными цветами и некоторые лампы постепенно меняют цвет.
  12. Огоньки разного цвета бегут вверх по гирлянде, накапливаясь начиная от вершины.

P.S. Поскольку все, кто увидел мою гирлянду, спрашивали о возможности её приобрести, в этом году я сделал несколько экземпляров на продажу.
Творческий процесс также не стоит на месте, я добавил два новых эффекта: "гусеница" и "свечи" и дополнительный режим гирлянды.

Об имитации мерцания свечей я мечтал давно, и для этого значительно дополнил программу управления. Теперь каждый светодиод может отображать свой паттерн управления, в котором записаны изменения цвета светодиода, время свечения этого цвета и скорость изменения цвета. Также мне пришлось оцифровать последовательность изменения цвета и яркости горения настоящей свечи и на её основе составить и отрегулировать паттерн свечения светодиода. По ходу изысканий я понял, что абсолютно все выложенные в сети программы преобразования цвета HSV-RGB (из системы "цвет насыщенность яркость" в систему "красный зелёный синий") имеют одну и ту же ошибку и просто скопированы одна из другой, без практической проверки. Написав правильное преобразование, я получил отличную, не повторяющуюся сорока секундную последовательность имитации горения настоящей свечи. Для того, чтобы все лампы в гирлянде светились по разному, для каждой лампы эта последовательность начинается с произвольного начального значения. Получилось неплохо.

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

Конечно, улучшать гирлянду можно до бесконечности. Например, увеличить длину гирлянды до 100 лампочек, добавить ещё интересных эффектов, но это всё в будущем. А пока приведу довольно большую цитату из письма одного из счастливых обладателей текущего варианта:
---
Что хочу сказать...
Это просто ВАУ!
Я ожидал чего-то подобного, но не ожидал, что это будет так круто.
В каждом режиме сразу видно, что человек (не машина!) придумал, вложил душу, возможно свои детские мечты в каждый чудный алгоритм.
Наблюдал сам достаточно долгое время, потом также зависли мои домашние, поскольку елка начала светиться совсем по другому!
Мне все нравиться, начиная от выбранной скорости переключения до комбинаций, а также оригинальных цветов, которых мы еще не видели ;)
Возможно... это все так подействовало, потому что мы выросли в одной стране и примерно в одно и тоже время. Но в любом случае - ЭТО ВЕЩЬ!!!
Как удалось выбрать и выдать на гора такие цвета - за это особое спасибо.
Я, как владелец двух разных китайских поделок, в каждом из которых примерно заявлено по 200 эффектов, есть регулировка скорости, яркости пульт и прочая ерунда,
так и не увидел тех некоторых приятных теплых цветов, которые есть у тебя.

---

4 комментария:

  1. Здравствуйте! Спасибо вам за статьи! Прошу разрешения повторить вашу гирлянду

    ОтветитьУдалить
    Ответы
    1. Пожалуйста, повторяйте. Схема выложена в этом блоге, плату можно взять любую подходящую, хоть evolution board с алиэкспресса. Можете сделать и сами, там несложно. Для прошивки сообщите email.

      Удалить
  2. Доброго дня! Надішліть, будь ласка, код на scorry.scorry@gmail.com , спробую теж зробити.
    Дякую!

    ОтветитьУдалить
  3. Отослал прошивку вам на почту. Это не исходник, а hex файл для программирования чипа.

    ОтветитьУдалить