Вот уже середина ноября, и снова приближаются новогодние праздники, поэтому захотелось немного порассуждать на тему новогодних электрогирлянд и как этот вопрос решил для себя я.
Вообще идея сделать свою интересную гирлянду не покидала меня с самого детства. Так уж вышло, что неравнодушен я к новогодней иллюминации. Тогда еще мы украшали елку советскими гирляндами типа «Снежинка» и прочими колючками и колокольчиками, как я их называл.
Состояли они из 18 лампочек по 13.5 вольт каждая. Некоторые применяли популярный в те времена лайфхак – в разрыв цепи включался так называемый «стартер» от люминесцентных ламп в параллель с конденсатором. Подбором емкости конденсатора можно было добиться нужной плавности мигания. Я собирал также подобие цветомузыки – источником сигнала служил кассетный магнитофон. Схема простая, несколько деталей – диод, тиристор и потенциометр. Лично мое ИМХО, в тех гирляндах был какой-то свой шарм, своя атмосфера – причудливые абажуры, фигурки. Они были различных форм и размеров. Это не то, что голые минималистичные покрашенные лампочки бездушных китайских гирлянд сейчас😊, ну согласитесь же. Некоторые из тех старых гирлянд до сих пор в рабочем состоянии, одну я даже перевел на цветные светодиоды в цвет плафонов, получилось очень интересно.
Потом у нас были китайские одноразовые гирлянды с биметаллическими прерывателями, односезонные 😊
Они люто плавились, и чтобы не сжечь все нафиг, я включал их через диод – он отсекал половину периода питающего напряжения, что по факту снижало яркость ламп у этих адских гирлянд, а соответственно снижался и нагрев. Правда становились видимыми пульсации.
А затем начали появляться гирлянды с коробочками-контроллерами на 8 эффектов. Тогда это был настоящий прорыв – стали доступны какие-никакие интересные эффекты типа бегущих огней, затуханий, смены цветов и прочие. Лампы накаливания постепенно вытеснялись светодиодами, но надежность от этого не улучшалась... Они и сейчас в ходу – но ушлые китайцы начали экономить беспощадно – из первоначальных 4 каналов частенько оставляют 2, а то и один. Провода, эти ужасные хлипкие провода… Контроллеры сгорают, провода отваливаются, токоограничивающие резисторы подгорают, попутно расплавляя термоусадку на диоде. Короче говоря, гирлянда курильщика, хе-хе 😊 Мне откровенно страшно за людей, беспечно их эксплуатирующих, ну правда…
А пару лет назад (2016 год) я случайно наткнулся на статью про "ещё одну светодиодную DIY-гирлянду для начинающих" на базе UCS1903. Меня сразу же заинтересовала эта тема, ведь мы получаем добротное качество (а по сравнению с одноразовыми китайскими гирляндами – так и вообще, я бы сказал, революционное), безопасность (гирлянда питается от низковольтного источника питания, с гальванической развязкой от сети), да и хватит такой гирлянды не на один сезон. Про возможности в плане визуальных эффектов тут и говорить нечего, они фактически бесконечны. Неплохое комьюнити - можно найти кучу готовых вариантов эффектов, а можно поразмять мозг и сделать свои эффекты самому.
До нового года оставалось 2 месяца. Заказал пробную гирлянду из пятидесяти 8-мм светодиодов.
Поскреб по сусекам, нашел ардуинку нано. Когда лента наконец приехала, в тот же вечер все соединил и залил скетч из статьи… Да, смотрится обалденно! Цвета насыщенные, яркие. Одно загляденье.
Это все здорово. Но хочется все-таки иметь возможность как-то это настраивать, пробовать различные эффекты. На то время уже было достаточно годной информации по данной теме - скетчи, различные эффекты разной степени сложности. Решил изучать работу с библиотекой FastLED с нуля. Вообще, есть 2 популярных библиотеки работы с умными светодиодами – это NeoPixel от Adafruit и FastLED (ранее FastSPI LED). Почему я остановился на FastLED – да просто потому, что она мне первой подвернулась под руку, так как использовалась в той самой статье. Ну и еще FastLED мне показалась на тот момент более удобной для быстрого освоения (дело вкуса) и с чуть большим функционалом (опять же, навскидку). Для начала условился, что сделаю простой контроллер с кнопкой и одним потенциометром – набросаю пару эффектов для переключения кнопкой и яркость регулировать буду потенциометром. Сделано. Запилил парочку плавных эффектов радуги, смены цветов по кругу, добавил статических. Но все не то. Нужно бы еще как-то скорость регулировать. Впилил еще один потенциометр. Вот – теперь другое дело, хочешь быструю радугу, хочешь медленную. Завязал на второй регулятор выбор цвета в режиме статического освещения – уже интереснее. Добавил возможность запоминания эффекта в памяти ардуинки по долгому удержанию кнопки – чтоб при включении воспроизводился любимый эффект. 50 диодов оказалось мало, и я успел дозаказать еще одну такую гирлянду до праздников. В общем в таком виде этот контроллер и встретил новый год.
Потом я закинул этот контроллер на пару месяцев. Но все не покидала мысль – вот бы лежа на уютном диване можно было управлять елкой. Да не с ИК-пульта, зачем? Со смартфона же! Ведь он всегда под рукой. Готовые контроллеры с Bluetooth тогда уже существовали, конечно же. Но посмотрев пару видео с демонстрацией их работы, понял что эффекты какие-то вырвиглазные. Да и все-таки, интересно же самому повозиться. Потом в случае чего можно будет в свободную минуту просто выдумывать и программировать свои новые эффекты. Сразу решил прикручивать Bluetooth к ардуине, но моему взгляду во время гугления случайно подвернулась другая платформа - ESP8266. Со встроенным WiFi, намного мощнее ардуины нано. Отпадала надобность в отдельном BT-модуле, его начальном конфигурировании и подпайке к ардуине. А WiFi мне показался даже более удобным, ведь можно будет управлять гирляндой с любого «утюга», подключенного к домашней сети! А ведь еще ESP8266 при желании можно заставить обновляться по воздуху - не будет надобности подключать кабель от елки к компу! Решил, что удобнее сразу взять отладочную плату типа NodeMCU или Wemos D1 – стоят они чуть-чуть дороже голой ESP, но в них все предусмотрено – есть стабилизаторы для питания ESP, металлизированные отверстия в плате для пайки, micro-USB-разъем с UART на борту. Собрать такой контроллер предельно просто – подпаял 3 провода от ленты, подпаял 2 провода для питания от 5 вольт, положил в любую удобную коробочку (или яйцо от киндер-сюрприза, как вариант). Первый раз прошился кабелем с ПК, и в общем-то готово! Дальше можно по воздуху. Просто сказка. Штамповать такие «контроллеры» можно без проблем и без забот.
В своих контроллерах я еще ставлю электролитический конденсатор параллельно питанию. Однако это скорее правило хорошего тона, на этапе отладки я конденсатор не использовал, все работало стабильно. (Также в некоторых случаях может понадобится преобразователь уровней 3.3->5 вольт ТТЛ, так как чипы в гирлянде работают с пятивольтовыми уровнями ТТЛ, а ESP8266 – оперирует 3.3в-уровнями. Но если не питать гирлянду напряжением выше 5,1 вольт, все работает без дополнительного согласователя, проверено). Питаю контроллеры от адаптеров для мобильных телефонов/планшетов. Просто припаиваю провод с USB-A на конце. Это удобно, так как можно питать гирлянду хоть от power bank, хоть от чего-то еще. Здесь важно понимать, что гирлянда может быть прожорливой, нужен качественный блок питания. В своих прошивках я ограничиваю максимально возможную яркость каждого светодиода так, чтобы вся гирлянда потребляла не более 2 ампер в режиме, когда все диоды светятся белым (самый неблагоприятный в плане потребления тока режим).
Эффекты я скопировал со старой версии моего контроллера. Добавил еще несколько. Как и в старом контроллере, я решил, что оставлю возможность управлять яркостью, скоростью, а также некоторыми другими параметрами в зависимости от выбранного эффекта. Реализовал сетевое взаимодействие частично через HTTP и частично UDP (для лучшего быстродействия). Обнаружение контроллеров в сети реализовал с помощью широковещательных UDP-пакетов. Упор я делал на управление со смартфона, поэтому целью было разработать простое, но удобное приложение именно для смартфона. Веб-интерфейс был не в приоритете.
В общем, вот что имеется на данный момент:
Эффекты с читаемыми названиями выбираются из выпадающего списка и сразу же применяются.
Предустановки (яркость, скорость, эффект) можно сохранять в энергонезависимую память. При включении эти предустановки загружаются автоматически, и гирлянда начинает работу. Поскольку я планировал изготовить несколько таких гирлянд в качестве подарков, было необходимо максимально упростить процедуру первоначальной настройки контроллера для конечного юзера – а именно привязки девайса к домашней WiFi сети. В общем я реализовал это следующим образом: когда контроллер запускается, если он не смог подключиться к известной сети, он переходит в режим точки доступа. В принципе, этого уже достаточно чтобы им управлять, просто выбираем на смартфоне сеть NY_LED_XXXXXX и подключаемся к ней.
Но это не совсем удобно, гораздо удобнее, когда контроллер доступен внутри вашей домашней сети. Поэтому если приложение видит, что смартфон подключен к контроллеру, работающему в режиме точки доступа, оно тут же предлагает выполнить привязку контроллера к Вашей сети – достаточно выбрать сеть и задать пароль.
Небольшое видео демонстрации встроенных эффектов:
Контроллер умеет работать с диодами WS2811, WS2801, WS2812B, WS2813, UCS1903. Количество – лично я больше 150 не пробовал. Тип диодов и количество задается в исходном коде константами. На данный момент в FastLED не поддерживает задание этих параметров в рантайме, что означает необходимость пересобирать прошивку под различное кол-во и типы лент.
Ранее я уже начинал реализовывать спектроанализатор-цветомузыку с использованием микрофона смартфона. В дальнейших планах все-таки довести до ума этот функционал. А также добавить еще интересных эффектов. Было бы прикольно придумать свой формат интерпретатора эффектов из, например, текстовых файлов или JSON, чтобы не лезть в исходники контроллера каждый раз, когда захочется добавить новый эффект. А еще можно прикрутить калибровку (привязку) диодов по координатам, в том числе с помощью камеры (как это сделано у Twinkly от Ledworks). Но это все требует времени, которое не всегда у меня есть, поэтому пока это только планы.
Проект задумывался «для себя» и делался в свободную минуту. По этой причине разработано только Android приложение (так как у меня только андроиды). Приложение можно найти в Google Play, выложил его туда по приколу, так сказать 😊 Здесь https://drive.google.com/drive/folders/1NCKM8TDFpqKfDVt1T8jz... вы найдете схему, прошивальщик, мануал по прошивке, а также сборки прошивок под различные типы лент и количество диодов. Если кому необходима прошивка под другое кол-во или тип диодов, обращайтесь, соберу 😊.
Все основное и необходимое – лента/гирлянда WS2811/UCS1903/WS2812/WS2813 на 5 вольт и контроллер NodeMCU/Wemos D1 mini – без проблем находятся в китайских магазинах и площадках. Корпус подобрать тоже не составит проблемы 😊
Также вы без труда сможете нагуглить кучу альтернативных реализаций подобных гирлянд и матриц (сеток) от разных авторов, и попробовать их в деле.
Всем ярких и цветастых гирлянд!!!