И вот наступает новый год, и чтобы украсить новогоднюю елку сделал новую версию гирлянды. По многочисленным просьбам, данная версия кода подходит как для ESP8266 (NodeMCU), так и для старшего брата ESP32. Код переписал полностью, так как предыдущая библиотека, которую я использовал для реализации новогодней смарт-гирлянды, не совместима с ESP32. Изменения затронули не только код для ESP, но также приложение. Поменял оформление, доработал код, что привело к более стабильной и быстрой работе приложения. А сейчас обо всем по порядку.
1. 15 световых эффектов (можно расширять).
2. Авторежим. Автоматически переключает режимы по кругу. Продолжительность одного режима настраивается в прошивке.
3. Настройка яркости.
4. Управление сенсорной кнопкой: переключение режимов и изменение яркости.
5. Выбор цвета звезды. Палитра из 6 цветов.
Заказал спаянную гирлянду на адресных светодиодах WS2812, но как бывает, посылка застряла где-то в пути. И решил спаять гирлянду своими руками. Есть в наличии штучные светодиоды WS2812. Приступил я к пайке, сборке, поклейке обоев, покраске стен. Ой! Что-то я не о том.
Так вот, взял я старый шлейф от ПК, который использовался для подключения флопиков и CD-рома к материнской плате, порезал его на лоскутки, вернее на проводники нужной длины, по 3 проводника в каждом, зачистил с обоих концов. Взял в руки паяльник и спаял светодиоды в одну гирлянду.
Дальше началось самое сложное, надо было сделать рассеиватель. В прошлой версии: Елочная смарт-гирлянда с управлением через мобильное приложение, приклеивал 2 куска акрила молочного цвета. Но этот вариант меня не устроил. В этом году сделал свою пресс-форму и порисовал каждый светодиод в термоклей.
Для изготовления пресс-формы разрезал шприц на 5 мл, благо шприцы остались от создания проекта: «Самодельный Лазерный гравёр с ЧПУ, в домашних условиях». Так вот, нарезал я корпус шприца на кольца одинаковой длины. С помощью напильника сделал углубления для укладки проводов, чтобы светодиод опускался ниже верхнего бортика пресс-формы.
Для того, чтобы потом можно было достать пластик из формы, брызнул на форму силиконовой смазкой.
Установил светодиод в форму и, с помощью клеевого пистолета, нанес клей, сперва на заднюю сторону светодиода, потом с передней части заполнил форму до краев.
И при остывании нажал пальцами с двух сторон, чтобы клей выдавило в местах, где провода с пресс-формой соприкасаются. Это позволяет равномерно заполнить все пространство клеем.
Затем приступаю к самому веселому этапу сборки. Начинаю выдавливать заготовку из формы.
Для этого использую поршень от шприца, сняв предварительно резиновый наконечник. Или как там его называют. И нехитрым движением светодиод в клее выталкивается из формы.
И так повторяем с каждым светодиодом.
Затем, берем кусачки, удаляем все неровности. У меня получилась вот такая кучка от 45 светодиодов.
В этом году использую ту же самую электронику для гирлянды. И ее укладываю в ту же коробку.
Тут ничего нового.
С подключением разобрались. Давайте посмотрим, что же изменилось в приложении.
Регулирование яркости изменил, и добавил вывод значения в процентах. А изменение скорости эффектов убрал. По мне, эта функция не нужна. А как вы считаете? Пишите ваше мнение в комментариях.
А сейчас самое главное изменение. Добавил возможность менять цвет звезды. Как это работает? Определенное количество светодиодов, с краю гирлянды, помещаем в звезду, у меня там 5 шт. И в приложении мы можем менять цвет звезды, не зависимо от эффекта, включённого для гирлянды. Мне уже задали знакомые и друзья вопрос: «А можно для звезды режимы мигания добавить?» Да, можно. Но я не успел это сделать. Будет в следующей версии.
На экране настроек все урезал до минимума. Только оставил добавление IP устройства. Есть наработки по расширению функционала, но об этом вы можете узнать, подписавшись на меня на boosty.
А сейчас самое интересное, что же изменилось в скетче? Почему появилась возможность сделать универсальную прошивку ESP8266 (ESP32)?
Как писал вначале статьи, библиотеку пришлось поменять, чтобы была возможность использовать прошивку и для ESP32. В библиотеке WS2812FX много эффектов, но она менее стабильна, чем библиотека FastLED. И при этом библиотека FastLED отлично работает с ESP32, но эффектов в комплекте нет. Пришлось поискать в интернете. Подправить несколько эффектов для работы с гирляндой.
Также в прошивке стало больше настроек и возможностей. И при этом прошивать стало проще.Скачать скетч можно внизу статьи в разделе "Файлы для скачивания".
Сперва устанавливаем библиотеки необходимые для работы с Wi-Fi и работы с HTTP-запросами ESP8266 и ESP32.
#if defined(ESP8266) #include <ESP8266WiFi.h> //Содержится в пакете #include <ESP8266WebServer.h> //Содержится в пакете #endif #if defined(ESP32) #include <WiFi.h> #include <WebServer.h> #ifndef min #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif #ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif #endif
Затем подключаем библиотеку "FastLED.h".
#include "FastLED.h" FASTLED_USING_NAMESPACE
Делаем проверку версии библиотеки, и если она ниже, чем FastLED 3.1, то выводим предупреждение.
#if defined(FASTLED_VERSION) && (FASTLED_VERSION < 3001000) #warning "Requires FastLED 3.1 or later; check github for latest code." #endif
Определяем, к каким пинам подключим кнопку и светодиоды.
#ifdef ESP8266 #define DATA_PIN 6 // пин для вывода на гирлянду byte button_rejim = D2; // пин подключения кнопки #else #define DATA_PIN 19 // пин для вывода на гирлянду byte button_rejim = 21; // пин подключения кнопки #endif
Определяем тип светодиодов и цветовую схему.
#define LED_TYPE WS2812B // What kind of strip are you using (APA102, WS2801 or WS2812B)? #define COLOR_ORDER GRB // It's GRB for WS2812B
Указываем сколько светодиодов в гирлянде и сколько в звезде. Если у вас нет звезды, то укажите значение переменной #define NUM_LEDS_STAR0.
#define NUM_LEDS 270 // кол-во светодиодов в гирлянде 33 #define NUM_LEDS_STAR 15 // + 5 звезда
Указываем сколько времени длиться эффект в авторежиме, время указывается в секундах, по истечению которого эффект автоматически переключится на следующий.
#define TIMER_MS 60 // время длительности одного эффекта //в сек. для авто режима
Дальше настраиваем подключение к Wi-F сети. Расписывать подробно не буду, по данной теме у меня есть отличный урок: «Веб-сервер ESP32 (ESP8266) в среде Arduino IDE».
/* настройка wi-fi */ IPAddress apIP(192, 168, 4, 1); // Web интерфейс для устройства #ifdef ESP8266 // Web интерфейс для устройства ESP8266WebServer HTTP(80); #else // Web интерфейс для устройства WebServer HTTP(80); #endif // Определяем переменные wifi String _ssid = "Wi-Fi"; // Для хранения SSID String _password = "12345678"; // Для хранения пароля сети String _ssidAP = "ATGarland"; // SSID AP точки доступа String _passwordAP = "012345678"; // пароль точки доступа
Следующие 2 массива нужны для определения количества эффектов и для вывода названия текущего эффекта в приложении.
String Effect(int n) // Название эффектов выводиться в приложении { char* effects[] = { "конфетти 2","Радуга с блестками","жонглирование 2","синелон 2", "конфетти","синелон", "радуга","жонглирование","синелон 3","bpm", "полное заполнение", "жонглирование 3", "мерцание","три цвета","матрица" }; return effects[n]; } // массив функций эффектов typedef void (*SimplePatternList[])(); SimplePatternList gPatterns = { confetti2, rainbowWithGlitter, juggle2, sinelon2, confetti, sinelon, rainbow, juggle, sinelon3, bpm, cylonfill,juggle3,twinkle,three_sin,matrix };
Первый массив нужен для вывода названия эффекта в приложении.
Второй массив хранит название функции, которая выводит эффект на светодиодную ленту. Все функции эффектов хранятся во вкладке «led». Вы можете добавлять свои эффекты. Для этого добавляем функцию эффекта на вкладку «led» и в массивах, в первом, прописываете название, во втором, название функции. В обеих функциях добавлять нужно строго на одинаковую позицию массива. Если название добавили в конце массива, то и название функции нужно добавить так же в конце массива.
Дальше идут вспомогательные переменные, которые лучше не трогать.
// Не менять // uint8_t gCurrentPatternNumber = 0; // порядковый номер эффекта uint8_t gHue = 0; // "базовый цвет" используется многими эффектами uint8_t i = 0; // счётчик индекса в массиве эффектов uint8_t j = 0; // Счечик яркости boolean auto_rejim = false; // авто режим выкл. unsigned long last_change = 0; // предыдущее значениее времени unsigned long now = 0; //текущее значениее времени boolean lastButten = LOW; // предыдущее состояние кнопки boolean currentButten = LOW; // текущее состояние кнопки long prestroMillis = 0; // время для кнопки, до int interval = 4000;// Время изменения яркости после выход byte flag = 0; // состояние кнопки
В блоке setup() есть замечательная функция, которая позволяет задать параметры блока питания, от которого работает гирлянда, и не даст превысить указанный ток. Что приводит к стабильной работе гирлянды. Первое значение в функции - это напряжение, второе, ток в мА.
// Источник питания 1A 5v FastLED.setMaxPowerInVoltsAndMilliamps(5,1000);
Еще хотелось бы отметить , что для ESP32 не работает сенсорная кнопка для переключения эффектов. Есть небольшой глюк, а времени исправить не было. Поэтому для данной отладочной платы функция внешнего переключения эффектов не добавлена.
#if defined(ESP8266) Led(); #endif
Вы также можете отключить внешнюю кнопку и для ESP8266, для этого достаточно закомментировать строчку вызова функции Led().
Остальной код, без хороших знаний программирования, рекомендую не трогать.
Как видим из описания кода, прошивка стала проще и более гибкой. Сейчас можно добавлять любое количество эффектов. Расчет количества происходит в автоматическом режиме. Также добавил отдельное управление звездой. Но при желании, звезду можно отключить, указав в прошивке #define NUM_LEDS_STAR0.
Для увеличения стабильности, добавлена функция, ограничивающая ток гирлянды. В предыдущей версии самая большая проблема была в неправильном подборе источника питания.
Также добавил простой способ удаления внешней кнопки для переключения режимов.
Все доработки сделали прошивку более гибкой, и использовать ее можно не только для управления новогодней гирляндой, но и для реализации подсветки.
Подведем итоги уходящего года.
Гирлянда получилась достаточно функциональная с гибкими настройками, но, к сожалению, это не все функции, которые я планировал сделать. Наработки уже есть, возможно, после Нового года выложу еще одну версию прошивки и приложения. Что я запланировал, вы можете узнать, подписавшись на меня в boosty. Там уже есть примеры доработки приложения, и код.
Понравился проект Елочная гирлянда на ESP8266 (ESP32). Управление с приложения? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
![]() |
Код (скетч) Новогодней гирлянды на ESP8266 (ESP32).zip | 9 Kb | 3349 | Скачать |
![]() |
библиотека FastLED.zip | 348 Kb | 2388 | Скачать |
![]() |
Приложение для управления гирляндой на ESP8266 (ESP32).apk | 6296 Kb | 2966 | Скачать |
Здравствуйте!Выставиь в прошивке количесвто светодиодов для звезды 0 или использовать моу другой проект: Светодиодный ночник своими руками.
Подскажите, как убрать отдельное свечение под звезду и сделать чтоб лента полностью использовалась под эффекты?
Здравствуйте!
Подскажите, как убрать отдельное свечение под звезду и сделать чтоб лента полностью использовалась под эффекты?
Проверено с Wemos D1 Mini и 2813
Выставлен ПИН
#define DATA_PIN D6
Не устанавливается приложение, хотя Андроид 5.1, поплясал с бубном, без толку.
Добрый день. Подскажите ю планируется ли в этом году выпуск обновлённой прошивки и приложения?
Здравствуйте. Спасибо за информацию. Скоро Новый год, хотелось бы повторить.
Добрый день, скажите пожалуйста а можно ли как то добавить в ваше приложение и скетч эффекты отсюда : https://mysku.ru/blog/aliexpress/83072.htmlДа. можно и библиотека используется такая же.
Там их вроде как 133, но хочется управлять ими через приложение как у вас.
Добрый день, скажите пожалуйста а можно ли как то добавить в ваше приложение и скетч эффекты отсюда : https://mysku.ru/blog/aliexpress/83072.html
Там их вроде как 133, но хочется управлять ими через приложение как у вас.
Проекты на ESP8266, ESP32
29 декабря , 2020
Комментариев:8
Файлов для скачивания:3
Фото:11
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии