Простая гирлянда на RGB светодиодах

Алоха, пикабу. НГ на носу и значит всех с наступающим!

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


Собственно, по мотивам этого поста: https://pikabu.ru/story/sdelal_girlyandu_na_125_svetodiodakh...

Да простит меня @a1xb, но не дождался я обещанного мануала.

Всё понимаю, семья, работа, заботы..

А соответственно: если гора не идёт к нам, то мы сами себе с усами!

Мы ж того, #тыжпрограммисты.

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

Данную подачу материала следует воспринимать больше в стиле моего суммарного опыта методом проб и ошибок и как выжимку из всего инфопространства и приведение задачи к конечному виду!

Погнали...!

Итак, за основу была взята, купленная с али эта гирлянда: https://ru.aliexpress.com/item/100x-WS2811-5V-12mm-LED-Modul...

Контроллер - многим уже известная есп-шка NodeMCU ESP8266 E-12 (CP2102): https://ru.aliexpress.com/item/V3-Wireless-module-NodeMcu-4M...

Чем хорош именно этот контроллер - это тем, что на борту есть уже ВСЁ!

Перечислять не буду, желающие прочитают даташиты сами.

По факту: соединил микро-усб шнурком с компом, залил скетч, подключил 5В - вперёд, моргай гирляндой, мы ж для этого все тут собрались!


Для начала нам необходимо скачать и настроить Arduino IDE.

Топаем сюда: https://www.arduino.cc/en/main/software , качаем, инсталлим.

Для настройки IDE под наш контроллер рекомендую просмотреть видос "для тех, кто в танке":

На английском, но по-сути и интуитивно всё понятно, знающие "кто в теме" пропускают.


Для самого моргания можно использовать 2 библиотеки:

- Adafruit_NeoPixel

- FastLED

Обе хороши, но 1я немного более оптимизирована по ресурсам (память + нагрузка на процессор).

Я на начальном этапе игрался со 2й, но потом когда победил очень неочевидный момент (описанный ниже), остановился на 1й!

Обе (все!) библиотеки ставятся в Скетч - Подключить библиотеку - Управлять библиотеками.


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

Много чего перепробовал, много наматерился, т.к. у некоторых проггеров ручки, как из жопки. Ну то такое...

Пробовал с разными вариантами управления из браузера, со смарта, сам думал запилить такой вариант, но пришёл к выводу, что все эти свистоперделки чисто "на раз": поигрался и забросил.

А значит нужно пилить скетч с перебором конкретных эффектов.

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


Мой выбор:

Библиотека WS2812FX, использующая Adafruit_NeoPixel.

Репозиторий с гита: https://github.com/kitesurfer1404/WS2812FX

Качаете, закидываете в папку с либами, у меня: D:/Documents/Arduino/libraries

Всё, теперь в Файл - Примеры - WS2812FX можно поиграться с примерами.

Собственно, вышеописанное управление через вебсервер - это пример esp8266_webinterface.

Настраиваете подключение к домашней точке доступа, можно забиндить статический IP, кол-во диодов (в нашем случае 100) и пин, с которого будет идти управление гирляндой.

Сначала компилим, проверяем на ошибки, потом заливаем, проверяем и играемся.

Так выглядит картинка примера esp8266_webinterface с сервера esp-шки:

Простая гирлянда на RGB светодиодах Esp8266, Чип, Arduino, Гирлянда, Моё, Своими руками, Новый Год, Длиннопост, Видео

В этой библиотеке порядка 56 эффектов

Всё интуитивно, на полчаса-час залипнуть-поиграться можно.


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

Можно раскоментить строку с рандомным выбором индекса внутри массива, но когда мне попалось 4 одинаковых эффекта подряд, вернул перебор.

На мой взгляд более чем предостаточно!

Для желающих "we need to go deeper" можно поиграться с настройками:

DEFAULT_SPEED 2500 - выбрано опытным путём, по дефолту 1000, на мой взгляд слишком быстро

TIMER_MS 60000 - время исполнения одного эффекта в мс, т.е. одна минута на каждый, 13 минут на полный круг.

strip.setBrightness(150) - установка яркости 0 - 255

strip.setColor(0xFF0400) - дефолтный цвет

strip.setMode(6) - стартовая установка 6го режима, самый 1й на видео ниже, в массив для перебора эффектов не входит, отображается только один раз.


Мой скетч: https://mega.nz/#!gRFDgLhB!Y703hN3_MRkHRtynNFUjj_1cG9PHDFGS8...

Моё видео (снимал на паяльник от паяльной станции):

Для съёмки дрожащей рукой и дабы не затягивать просмотр, время для каждого режима уменьшено до 10и секунд (изначально 60).

На видео полный цикл эффектов.

В процессе поиска нарыл на гите также весьма интересный скетч xmas_neopixel: https://github.com/sfrwmaker/xtmas_neopixel

Залил, поигрался и пока отложил.

Документации никакой, скорее всего чел пилил под себя.

Т.к. стояла задача "кровь из носу" до НГ срочно запилить гирлянду, то этот вариант оставил на потом: распотрошить, вытащить эффекты и добавить в свой скетч.


Также в процессе нашёл такой вариант: https://github.com/corbanmailloux/esp-mqtt-rgb-led

Но там замучено, закручено, нет лишнего времени разбираться.

Хотя очень достойно и привлекательно. Оставил "на потом", обязательно вникну и распотрошу на предмет эффектов.

Их видос:

Напоследок опишу несколько подводных камней при работе с вышеописанными девайсами.

Небольшая ремарка: с этими девайсами никогда не работал, соответственно все тонкости и нюансы пришлось постигать "по ходу дела", набивая себе шишки опытом!


Итак..


- Гирлянда

Т.к. это 2х50 и есть соответствующие мама-папа разъёмы на краях и как выяснилось (внезапно!) -  можно законектить неправильно! Та дааам!

Т.е. одна часть нормально работает, огоньки бегут, подключаешь 2ю - тишина и спокойствие.

Хоть и заявлено, что это безадресная "лента", тем не менее присутствует необходимость правильного конекта 2х частей в одну.

Х.з. как у меня так получилось, вроде не рукожоп (но это не точно!), но тем не менее!


- ESP8266

В младших моделях необходимо соблюдать правильный режим питания - 3.3В

Этой модель избавлена от такой зависимости: на ногу Vin подкинул 5В-10В - всё, девайс готов к работе. На борту cтабилизатор AMS1117-3.3 - вот он то и делает основную магию.

Самое интересное и неочевидное: в FastLED пин для вывода задаётся просто числом (2,4,6..), хотя можно перед объявлением библиотеки прописать:

#define FASTLED_ESP8266_RAW_PIN_ORDER и указывать D2, D4 и т.д.

А вот Adafruit_NeoPixel сразу требует в формате D2, D4 и т.д.

Мелочь, но много нервов попортила пока вкурил: скетч на фастлед моргает, на адафрут тишина!

Ппц я психовал...


Также играет очень важную роль питание!

Каждый диод в пике свечения белым потребляет 0.06А (0.02А на каждый канал RGB), в сумме вся гирлянда 6А.

Нам нужен БП на 5В/6А/30Вт. Я взял на 35Вт, с небольшим запасом.

Интересно получилось: собрано на макетке, питается от БП компа, напруга 5.1В, всё норм, всё мигает!

Собираю, паяю, подключаю к БП - буй, не работает! Меряю напругу: на входе esp 5.56В, на выходе вместо 3.3В - 3.8В. Меряю сеть: 270В! Ясно!

Подрегулировал открутил выход на БП до 5В - зафурычило.

Гирлянда очень чувствительна к напруге на DYN (управляющем) канале.

Если не работает, сначала проверьте уровни напряжений!

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

Также рекомендуют:

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

б) кинуть на входе по линии 5В конденсатор 1000мкф, чтобы просадок по питанию не было. Но если нормальный БП, то можно и не заморачиваться.!

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

Если мои потуги кому-то помогут или сподвигнут на создание чего либо подобного - буду только рад!

Всем бобра и котиков!

Рукодельники

51.7K пост58.2K подписчика

Добавить пост

Правила сообщества

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

0. Соблюдайте основные правила Пикабу.


1. Будьте вежливы, старайтесь писать грамотно.


2. В публикациях используйте четкие и красивые фотографии.


3. Автор поста с тегом [моё] может оставить ссылку на свой профиль, группу или канал на других источниках, при условии, что ссылки (активные и не активные) не ведут на прямые продажи. Допускается не больше четырёх ссылок и только в конце поста (п. 8.5 основных правил).


Запрещены:

-ссылки рекламного характера/спам;

-ссылки, ведущие на магазины с указанием стоимости товара/услуги;

-ссылки, ведущие на призывы, покупки, продажи, подписки, репосты, голосование и тому подобное.

(нарушение основных правил сайта, п.8.1 и п. 8.2).

При переходе по ссылке запрещено наличие активных (кликабельных) ссылок, ведущих на вышеперечисленное в п.3, содержание таких ключевых слов как «товар», «услуга», «купить», «продам», «в наличии», «под заказ» и т.п.


3.1 Размещение контактов автора (самим автором или другими пользователями) в комментариях запрещено и подлежит удалению (п. 9.1 и 9.3 основных правил).


4. Обязательным для авторов является наличие технических характеристик изделия в публикациях (материалы, техники, авторские приемы, размеры, времязатраты и прочее) в текстовом виде.

Также помечайте свою работу тегом «Рукоделие с процессом» или «Рукоделие без процесса».


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

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


6. Посты с нарушениями без предупреждения переносятся в общую ленту.

За неоднократные нарушения автор получает бан.

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

2
Автор поста оценил этот комментарий
Класс! Надо запилить такую !)
1
Автор поста оценил этот комментарий

как это не смешно - я пошел по точно такому же пути )))

сразу микрооптимизация по скетчу:

- int m = 13; // кол-во эффектов, см. массив modes

+ int m = = sizeof(modes)/sizeof(int); // кол-во эффектов, см. массив modes

а скорости я думаю тоже в массив запихнуть стоит...

1
Автор поста оценил этот комментарий

"Гирлянда очень чувствительна к напруге на DYN (управляющем) канале". Думаю из за того, что уровень управляющего сигнала 3.3V, а питание гирлянды 5V. Преобразователь уровней должен бы помочь. Идея понравилась! Следующий шаг познакомиться более плотно с железом. Библиотеки скрывают много интересного ;)

раскрыть ветку
Автор поста оценил этот комментарий

Подскажите пожалуйста. А если я хочу использовать все эффекты библиотеки? их необходимо все перечислить по номерам? например все эффекты рандомно. Что необходимо изменить в скетче?

раскрыть ветку
Автор поста оценил этот комментарий

перебор еффектов есть.Еффекты оч нравятся.Моя гирлянда кушает пиково 6 ампер 300 диодов..  автор,на 2811 будет работать или надо что менять? как менять? поменяете за деньги?