ESP для Новичков. Дополнение
Как оказалось, в прошлой части я не добавил схему подключения к AMS1117, исправляюсь)
Распиновка USB Type A, на всякий случай. Если не уверены, лучше протестить мультиметром, чтобы определить + -.
Как оказалось, в прошлой части я не добавил схему подключения к AMS1117, исправляюсь)
Распиновка USB Type A, на всякий случай. Если не уверены, лучше протестить мультиметром, чтобы определить + -.
Автор: CyberexTech
Больше интересных фото и комментариев в оригинале материала
Радиолампы, словно артефакты из прошлого, олицетворяют нечто большее, чем просто технологию. Они несут в себе определенную магию, отражающую уникальное сочетание технического мастерства и эстетики. Не удивительно, что часы на неоновых индикаторах занимают довольно уникальную нишу в мире дизайна и интерьера. Они представляют собой не просто инструмент для отображения времени, но и элемент декора, который может значительно изменить атмосферу помещения. Этой статье я расскажу о своем опыте создания Nixie Clock на базе драйвера собственной разработки.
Однажды, на предприятии где я работал, на складе обнаружилось много неликвидного материала, который хранился там ещё с советских времен.
Неликвид состоял из электронных компонентов, которые нам отдали безвозмездно для использования в личных целях, чтобы не тратить средства на утилизацию. На самом деле, там было очень много ценных компонентов, среди которых оказались неоновые индикаторные лампы марки ИН-12. В итоге я их забрал себе. С радиолампами знаком еще с детства, увлекаясь радиоконструированием, я часто собирал различные схемы, в том числе и на лампах. А тут такой флешбэк.
По состоянию на 2016 год, было много различных схем часов на лампах, но мне не нравилась их схемотехника, она казалась мне избыточной и не эффективной. Хотелось реализовать что-то простое, питающееся от стандартного USB порта, без использования модуля RTC и светодиодной подсветки, которая, по моему мнению, только портит всю эстетику ламп. На тот момент большинство схем работало на Arduino и микроконтроллерах от компании Atmel. Годом ранее, компания Espressif Systems выпустила на рынок свой микроконтроллер ESP8266, который произвел революцию. Так как на тот момент, широкополосный интернет уже был достаточно распространен, в том числе и домашние сети Wi-Fi, я решил отказаться от применения RTC модуля в своей схеме часов и использовать NTP серверы для синхронизации времени. Как вы могли догадаться, в своей схеме я применил модуль ESP8266. Далее я поделился в Twitter своим опытом применения нового модуля ESP8266 в своем проекте. Мой твит вызвал интерес, и мне предложили написать статью на Hackaday.io. Я последовал совету и опубликовал свою статью там.
Но в этой статье я хочу описать реализацию часов с применением шести индикаторов ИН-14 с использованием улучшенного драйвера. Как выглядят эти лампы, вы можете увидеть ниже.
Ниже изображена схема драйвера часов:
Схема подключения ламп:
Согласно документации, индикаторная лампа работает от напряжения в 170В (напряжение возникновения разряда), для стабильной работы нам потребуется напряжение в 200В. Как вы можете видеть из схемы, для повышения напряжения до 200В применен set-up преобразователь на базе ШИМ контроллера МАХ1771 в связке с L2, D1 и Q1. Так как нам недостаточно выводов ESP8266 для управления лампами, то будем «размножать» пины управления с помощью дешифраторов CD4028BM96. Данный модифицированный драйвер позволяет управлять десятью газоразрядными индикаторными лампами. Выше описанный драйвер имеет динамический метод управления индикацией, то есть в определенный момент времени загорается только одна лампа, но переключение выполняется настолько быстро, что человеческий глаз практически не воспринимает переключение ламп и кажется что все лампы горят одновременно. Данный режим переводит работу ламп в импульсный режим, что положительно сказывается на их срок службы.
Разработка платы велась в Sprint-Layout 5.0, так как мне это было удобнее для изготовления платы в домашних условиях.
Плата драйвера:
Плата для установки ламп:
Изготовление печатной платы выполнялось с применение фотошаблона и фоторезиста:
Засветка фоторезиста платы драйвера:
Засветка фоторезиста платы крепления ламп:
Травление платы драйвера:
Пайка компонентов:
Плата драйвера в собранном виде:
Монтаж ламп на плату управления:
Тест работы схемы часов с небольшой отладкой:
Для управления высоким напряжением используются оптроны TLP627 от компании TOSHIBA.
TLP627 — высоковольтный транзисторный оптрон со схемой Дарлингтона на выходе.
Корпус часов не предполагает какой либо сложной конструкции, разработка выполнялась во FreeCAD:
Далее корпус был распечатан на 3D принтере, с использованием HIPS пластика. Данный пластик при печати создает структуру стенки, которая чем-то похоже на дерево и не обладает глянцевым эффектом как другие виды пластика типа PLA, ABS и т. п.
После изготовления корпуса, необходимо смонтировать все компоненты. Ниже показан монтаж платы драйвера с применением, всеми любимого, термоклея. :)
В итоге мы получаем следующее:
Часы в работе:
Часы в данный момент находятся на моём на рабочем столе, естественно, в живую они выглядят гораздо красивее:
Для разработки прошивки часов, я использовал среду разработки Arduino IDE. Ниже представлен код прошивки:
Код прошивки в источнике материала.
После удачной прошивки и первом включении, часы создадут Wi-Fi точку доступа. Для конфигурации часов необходимо подключиться к созданной точке доступа (пароль сети указан в прошивке) и перейдя по IP адресу 192.168.4.1 в браузере вашего устройства, выполнить не сложную настройку часов. Ниже представлен скриншот интерфейса устройства:
Для настройки часов, вам необходимо будет подключиться к вашей Wi-Fi сети, указать NTP сервер и ваш часовой пояс. Затем перезагрузить часы. Всё, часы готовы к использованию.
В итоге у нас получились простые в реализации часы на ламповых индикаторах, где не требуется применять антикварные микросхемы типа К155ИД1, вся схема выполнена на современной элементарной базе. Часы не нуждаются в ручной настройке времени, синхронизация времени выполняется автоматически с удаленного NTP сервера, что гарантирует постоянную точность времени. Разработанный драйвер показал хорошие результаты надежности, работая уже более пяти лет.
Есть желание собрать часы на базе этого драйвера с применением ламп ИН-18, но пока стоимость ламп меня пугает).
Спасибо, что дочитали до конца! Если статья понравилась, то вы знаете что делать. И как всегда, вопросы, пожелания, осуждение? :) — добро пожаловать в комментарии. До встречи в новых статьях!
Небольшой бонус, фото из архива:
Плата Arduino compatible based esp8266 (WeMos D1)
Питал по micru usb от 5В, загорелся суровый шестиногий светодиод, сигнализирующий о перегрузке
(плохой контакт...)
А так же вышел волшебный дымок на котором как известно и работает электроника
Я так понимаю это какой-то генератор импульсов, или что-то нужное для понижения напряжения (не особо шарю).
Но думаю, если питать от 5В, то мне эта микруха то и не нужна (?)
Выдрать её, минус на gnd, плюс на vin или прям на стабилизатор – и должно запуститься (?)
В общем крайне важно заставить эту штуку до завтрашнего вечера работать без дыма и красного каления, кинув какую-нибудь перемычку вместо микрухи, или выдрав её оттуда. Помогите опознать микросхему, дабы понятно было что это и что с ней делать
UPD:
Микруха нашлась
Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.
Реклама АО «Кордиант», ИНН 7601001509
Основной используемый принцип -запросы и обработка ответов по смарт-протоколу APC
За исключением того, что плату мониторинга/управления собираем на основе WemosD1mini.
Дешевизна решения очевидна, с учетом того, что самая дешевая сетевая плата AP9640 (без внешних датчиков) стоит более 500$
Плата собрана по традиции в коробочке из под Тик-Така.
мониторинг основных параметров UPS на WEB странице, а также в представлении XML и JSON
доступ к плате по WiFi. Сохранение параметров подключения
сигнализация аварии - отправка сообщения на PHP скрипт по ссылке
сбор информации о окружающей температуре и влажности
сохранение настроек в EEPROM FLASH
Wemos D1 mini
max3232 module без DB9 разъема
разъем DB9 папа
DHT-21 датчик температуры и влажности (опционально)
Схема простого подключения APC smart к RS232 COM порту ПК:
Схема микроконтроллера в связке с UPS
В коде применены нестандартные библиотеки.
Помимо основной esp8266, ESP_EEPROM и WiFiManager
ups_alarm_script_url - ссылка на скрипт, для передачи алерта пропадания/появления питания, на email или телеграмм, в формате http://server/mail= или похожем.
Y Enter smart mode SM
R Exit smart mode SM
^A Model string SMART-UPS 700
^N 1,5s ^N Turn on UPS
K 1,5s K Turn off
L Input line voltage
P Power load % 000.0
Q Status flags 08
08 = on line, battery OK
10 = on battery, battery OK
50 = on battery, battery low
Z Shutdown immediately n/a
f Battery level 099.0
Сообщения
!!! нет входного напряжения
$ появление входного напряжения
Пользуясь случаем, хотел бы передать привет все любителям esp
ДИСКЛЕЙМЕР. Я не гуру программирования, я чуть больше чем новичок. Цель данных постов - популяризация и только. Если вы считаете, что мне надо было начать с другого, писать о другом или писать по-другому, просьба к вам сделать свою серию постов.
Также хочу выразить благодарность @AlexGyver, за его неоценимую работу в популяризации микроэлектроники, а так же за создание отличных и понятных библиотек.
Итак. В прошлом посте мы настроили ArduinoIDE, так же подключили ESP к компу и загрузили в нее тестовую программу. Сегодня мы разберем проэкт умного реле на ESP с управлением через телеграм бота. Для работы мы используем библиотеку все того же AlexGyver - FastBot, как одну из самых простых и понятных в работе.
Для начала разберемся с физической частью. Так как реле у нас 5VDC а сам микроконтроллер 3.3 VDC, в финальном варианте у нас будет дополнительно установлена AMS1117, но на момент отладки она будет не нужна, так как на макетке есть вывод 5V. Подключение будет выглядеть так. Не обращайте внимания что модуль на 2 реле, он отличается только количеством реле.
GND -> GND
5V -> VCC
IO5 -> In1
Далее думаю нужно немного отойти от темы и вернуться к ней после создания своего ТГ бота. По ссылке вы найдете подробный гайд по его созданию. Обязательно сохраните токен бота, он будет необходим, так же желательно узнать свой ID, по ссылке выше это также есть. По этой ссылке есть описание библиотеки, которую мы будем использовать.
После создания бота, можно перейти к разбору кода, прошу критиков заметить, это мой кривой код, но он работает и мне этого достаточно:)
Качаем нужные библиотеки:
В поиск вписываем "FastBot"
Устанавливаем. Далее перейдем к коду. Код состоит из нескольких основных "этапов", в первой части мы указываем библиотеки и переменные, которые будем использовать в программе, вторая часть это функция при запуске микроконтроллера, обозначается как
void setup( ) { } - Все, что будет указано между фигурных скобок, будет относиться к этой функции. Эта функция запускается один раз при запуске.
Третья часть это функция которая работает по кругу, то есть постоянно исполняется на микроконтроллере и обозначается как
void loop() { } - Все, что будет указано между фигурных скобок, будет относиться к этой функции. Эта функция запускается по кругу до бесконечности.
Так же есть отдельные функции под определенные задачи, они отрабатывают только когда мы их вызываем.
Здесь вы можете найти подробное описание синтаксиса и как пишется код, также у Алекса есть канал на Ютуб где были видеоуроки на эту же тему. (как фанбой ей богу..)
Здесь мы видим часть с объявлением наших переменных и подключением библиотек.
Далее будет код и некоторые пояснения к ниму. Итак.
Разберем некоторые положения:
Как видите 15 строка у меня закомменчена, то есть все что идет после "//" не попадает в код и не обрабатывается программой. Закомменченый метод позволяет боту использовать "белый" лист, то есть он будет отвечать только пользователям с ID указанном в скобках-ковычках. В данном случае этот метод исключен.
Строки 26 и 31, в них указано, что при команде Off, положение RELAY(IO5) изменится на ВКЛ, т.е. на этот выход придет логическая единица(иначе говоря придет 3.3 вольта), а на команду On наоборот приходит ВЫКЛ (иначе говоря на выходе будет 0 вольт). Это сделано потому, что сам модуль реле управляется от обратного. Когда на входе модуля реле 0, реле включается и наоборот. Это конечно немного контр-интуитивно, но как есть.
Строка 20, в ней указан метод OTA, что расшифровывается как Over-The-Air. Этот метод позволяет нам прошивать наш контроллер не подключая его к компу, а прямо из ТГ бота. Для этого необходимо экспортировать прошивку как бинарный файл, а затем закинуть ее боту в чат. Делается это так:
И собсна сам результат работы контроллера в чате :
Если у вас будут вопросы, пишите в комментариях. Я понимаю, что для новичка все это выглядит как набор букв, но без изучения синтаксиса и языка никуда, это нужно просто пройти.. Но спешу заверить, что он не так сложен и не такой объемный как кажется. Так же, могу порекомендовать изучить примеры, что идут в комплекте с ArduinoIDE, найти их можно здесь
Дополнительно почти к каждой библиотеке идут свои примеры работы. В частности если вы хотите написать свой код, воспользуйтесь примерами нужной библиотеки, зачастую там уже есть готовые решения ее работы, которые можно скопипастить в свой код и использовать как вам нужно.
До встречи в следующих постах!
Дисклеймер: Специально для тех 3х людей, что подписались, пишу серию постов про работу с микроконтроллерами. В частности мы будем рассматривать микроконтроллер ESP8266 на примере платы ESP12F. Прошу сразу заметить, я не супер специалист в программировании микроконтроллеров, но за последние пару лет немного в этом поднаторел и считаю что знаю достаточно, чтобы помочь въехать в тему и дальше в ней самостоятельно развиваться. Все ссылки в посте приведены как пример, чтобы понимать цену и как выглядит товар, вы можете найти все это самостоятельно если есть желание на любой другой площадке или другого продавца.
Итак.
Платка вставлена в макетку и поджата прищепкой. Далее подключаем к компьютеру через USB и выбираем COM порт. Самый простой способ определить правильный COM порт - это посмотреть какие порты доступны без подключения макетки к компу и после.
4ая строка с низу не активна, значит у меня нет активных COM портов. Подключаем макетку
Появился порт COM3 - это и есть нужный нам порт для заливки прошивки. Проверяем что все работает и пишем простенький код, для проверки работоспособности.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Не забываем включить макетку, путем нажатия на белый переключатель и далее нажимаем на компе на стрелку вправо, что в верхнем левом углу.
Ждем завершения загрузки и смотрим на ESP12F, на ней должен начать мигать встроенный светодиод синего цвета раз в 1 секунду.
Если в результате у вас все получилось, мы можем переходить к следующей части с разбором кода и созданием умного реле. Спасибо за внимание.
Дисклеймер: Специально для тех 3х людей, что подписались, пишу серию постов про работу с микроконтроллерами. В частности мы будем рассматривать микроконтроллер ESP8266 на примере платы ESP12F. Прошу сразу заметить, я не супер специалист в программировании микроконтроллеров, но за последние пару лет немного в этом поднаторел и считаю что знаю достаточно, чтобы помочь въехать в тему и дальше в ней самостоятельно развиваться. Все ссылки в посте приведены как пример, чтобы понимать цену и как выглядит товар, вы можете найти все это самостоятельно если есть желание на любой другой площадке или другого продавца.
Начнем с вопроса - Сколько стоит, где купить и что необходимо чтобы начать вливаться.
1) Сама по себе платка ESP12F, я знаю что есть Wemos и он основан на этой же платке, только с ногами, но я специально буду рассматривать платку в отрыве от внешней обвязки. Хотя бы потому что так она занимает меньше места. Для меня это плюс. Ссылка на саму платку.
2) Макетная платка для программирования ESP12F. Без макетки тут "никак", на самом деле можно без нее, но тогда нужен будет UART конвертер и будут сложности чисто по части удобства. Ссылка на макетку. По ссылке есть так же макетки для платок на основе ESP32, но мы их рассматривать не будем.
3) Кабель microUSB-USB для подключения макетки к компьютеру, тут я думаю проблем не возникнет.
4) Модуль реле для Ардуины, нам он будет нужен только для примера работы (спойлер: сделаем свое умное реле с управлением через телеграм бот). Ссылка.
5) Блок питания на 5V DC(вольт постоянного тока), вольтаж такой же как в любом заряднике. Можете взять например старую USB зарядку от ненужного телефона, либо взять что то вроде того что по ссылке ниже. Питание самого микроконтроллера у нас 3.3V DC, но мы возьмем 5V DC, потому что нам нужно запитать модуль реле, а он 5 вольт. Ссылка.
6) AMS1117. Эта замечательная микрушка позволяет нам сделать из 5 вольт 3.3 вольта. Ссылка.
Так же мы можем добавить сюда батарею и модуль зарядки, но это уже как нибудь потом разберем.
Так же на компьютере нам нужно установить Arduino IDE. Да, я в курсе что есть PlatformIO, но для новичка Arduino IDE выглядит менее нагруженым и более понятным. Сама по себе программа бесплатна и качается с официального сайта. Ссылка
С установкой Arduino IDE проблем возникнуть не должно, она проста как 2 копейки. Перейдем сразу к настройкам. Первое что нам необходимо, это сделать доступными профили плат ESP. Переходим в настройки
Вставляем вот эту строку "http://arduino.esp8266.com/stable/package_esp8266com_index.j..." в указанное в скриншоте поле.
Далее переходим в менеджер плат
В поле поиска "ESP8266", устанавливаем. В моем случае уже все готово, потому кнопки Install нет.
Закрываем это окно и теперь у нас доступны платы на базе ESP8266. В нашем случае нужно выбрать Generic ESP8266 Module
Из настроек нас интересует 2, Flash Size и Erase Flash. Выставляем как на скриншоте.
Далее перейдем к подключению. Сама по себе ESP12F вставляется в макетку с щелчком от подпружиненых ножек и должна в ней держаться, но у меня бывали случаи самовольного выщелкивания, потому стоит использовать "крабик". Лимит поста:(
Всем привет
Как известно, к Новому году всегда надо готовиться заранее. Вот и мне подумалось, что надо расчехлять паяльник и начинать делать праздничную иллюминацию в квартире. На данный момент готовы два устройства из трёх, для последней гирлянды едут адресные светодиоды. Но идея обкатана и показала себя вполне рабочей.
Любое мало-мальски инженерное устройство должно начинаться с
1) Составления ТЗ
2) Подбора железа
3) Подбора ПО
Второй третий пункт взаимосвязаны, что логично.
У меня работали две гирлянды, собранные на WS2812b под управлением маленькой платки Arduino Nano (родом из Китая) с микроконтроллером ATmega328p. Как это водится в Китае - маркировка чипа была почти нечитаемой, прошивка заливалась раза с третьего-четвёртого. Но система работала, и даже не тормозила.
Гирлянд было две: одна висела на ёлке и состояла из 126 последовательно соединённых светодиода, оконная гирлянда состояла из 74 светодиодов и представляла собой 9 линий светодиодов переменной длины, соединённых последовательно.
В старой гирлянде было крайне неудобно включать/выключать подсветку и переключать режимы. Это же необходимо встать с дивана, подойти к устройству, нажать кнопку. Соответственно, в новой системе необходимо реализовать управление через мобильный телефон. Так же, стоит учесть, что в моём доме ёлка стоит около окна, и будет видно сразу две гирлянды. Соответственно, стоит предусмотреть возможность обмена данными между этими гирляндами для возможности синхронизации режимов. Причём, синхронизация должна быть не "приколоченной намертво", а вполне себе опциональной.
Исходя из ТЗ становится очевидно, что достаточно просто поменять контроллер с старой-доброй атмеги на что-то из семейства ESP. Эта система на кристалле (да, именно так её называет производитель, SoC) из коробки имеет на борту достаточно шустрое ядро, WiFi и приличный объём памяти. Но, имеет место быть небольшой конфликт: рабочее напряжение пинов ESP 3.3В. А напряжение питания WS2812b составляет от 3.5 до 5.3В, исходя из даташита. Причём, "протокол" передачи данных для светодиодов подразумевает формирование прямоугольных испульсов, кодирующих 24 бита цвета для каждого светодиода. Уровень "0" в этой последовательности должен быть <0.3VDD (напряжение питания), уровень "1" >0.7VDD.
Я покопался в своих закромах и обнаружил две платы Wemos D1 mini (на базе ESP8266) и одну плату LOLIN S2 mini (на базе ESP32-S2). Обе платы имеют всю необходимую обвязку для подключения внешнего питания 5В и подтягивающие резисторы для запуска МК. Там же, в закромах родины нашёл весьма удобные макетные платы под форм-фактор этих устройств.
Макетная плата для Wemos D1. К LOLIN S2 mini тоже подходит, но маркировака пинов не совпадёт
Это снимает проблему согласования напряжения питания ESP и WS2812b. Но возникает опасение, что уровень логической "1" от контроллера будет недостаточным для формирования управляющего сигнала. Ведь, согласно даташиту, уровень "1" >0.7VDD. А питание светодиодов у нас 5В, соответственно, требуемый уровень логической единицы равен 0,7 * 5 = 3,5В. Тут я пошёл по пути экспериментов, быстренько набросал схемку на бредборде и проверил, а как оно, заведётся, или нет. Ведь, исходя из моего опыта общения с контроллерами семейства STM32, уровня 3.3В должно быть вполне достаточно. И оно завелось!
Очевидно, что прошивка будет самописная. Надеяться, что вот сейчас я зайду в гугл, забью "прошивка ESP8266 с моими требованиями" и все найдётся и заработает достаточно наивно. Да и неспортивно это. В случае с ESP есть два основных фреймворка для написания прошивки. Профессиональный ESP-IDF с его ориентированностью на чистый С и Arduino IDE с ядром ESP. Причём второе - это, по сути своей, обёртка вокруг ESP-IDF. Так как у меня была хоть и ущёрбная, но рабочая прошивка для Arduino Nano, написанная в Arduino IDE, я остановился на втором варианте.
Схема в общем виде выглядит так:
Ничего сложного и интересного. Единственное, для одной из систем одна из кнопок была заменена на устройство bme280, работающее по протоколу I2C. Интересно отслеживать влажность в помещении и уровень давления. Показания температуры врут безбожно: датчик находится слишком близко к ESP, которая имеет привычку сильно нагреваться. Спаять устройство по этой схеме не представляет ничего сложного. Но ведь хочется сделать всё красиво. А значит нужен корпус для устройства и система крепления гирлянды. С корпусом всё довольно просто. Минут 30 в Компас3D, час работы 3D принтера и в руках корпус, подогнанный под конкретное спаянное устройство. Магия термоклея, и на выходе получается вполне себе симпатичный прибор:
Безусловным плюсом будет возможность заменить плату в случае необходимости
С системой крепления всё чуточку интереснее. Если на ёлку крепить гирлянду не требуется (просто берём и обматываем гирлянду вокруг дерева), то на окно требуется крепёж. Тут возможно реализовать два варианта: установить гирлянду непосредственно перед окном, но за шторой. Тогда праздничное настроение будет создано людям, гуляющим на улице и смотрящим на мой седьмой этаж. Либо размещать гирлянду перед шторой. Тогда праздничное настроение будет у всех, находящихся в комнате. Я пошёл по второму пути. Штора крепится на гардину с Т-образными пазами. И вновь на помощь приходит компас и 3D-принтер. В каждой точке, из которой спускается светодиодная гирлянда была изготовлена вот такая сборка из двух деталей:
Бонусом, такая конструкция хорошо фиксирует сборки проводов, и конструкция получается довольно добротной. Следующей "железной" проблемой стало то, что провод со светодиодами достаточно лёгкий, и гирлянда отказывалась висеть вертикально. И вновь 3D принтер спасает положение. Я напечатал несколько тематических грузиков, и привязал их на тоненькие верёвочки. Получилось весьма достойно:
А вот прошивку не скину в чистом виде. Только если кто-то хочет повторить - могу ему слить данное поделие. Ибо в коде есть ряд проблем, которые пока не решены.
Принцип работы системы прост до ужаса. Намертво зашиты константы с SSID/PASS моей локальной WiFi сети и IP адреса всех гирлянд, участвующих во взаимодействии. Arduino IDE хорош, в первую очередь, невероятным количеством библиотек. Итак, что есть сейчас, и для чего используется.
Разумеется, WiFi, для подключения к локальной сети. SSID и пароль забиты в дефайны, что есть хардкод, и вообще моветон
FastLED для управления WS2812b. Реализован простейший алгоритм отслеживания потребляемого гирляндой тока и ограничение оного к возможностям источника питания. Работает, на мой взгляд, лучше встроенного в библиотеку.
WebServer для поднятия странички управления гирляндой, если сильно лень подходить и нажимать кнопку. Я не сильно дизайнер, но страничка получилась довольно простой и информативной.
UDP для общения между гирляндами. Да, я знаю, что есть ненулевой шанс потери данных, поэтому пришлось реализовать достаточно простой алгоритм проверки корректности пришедших данных. Битые пакеты отбрасываются. Вроде бы это не очень хорошо, но я тут не космический корабль запускаю, и не ядерным реактором управляю. Если синхронизация произойдёт на 100мс позже, то ничего страшного. Хардкод в данном случае - IP-адреса гирлянд, участвующих в обмене информацией, жестко прописанные в роутере.
ArduinoOTA. Лень каждый раз подключать ESP напрямую к компу, когда хочется что-то поменять в прошивке. А так всё выходит просто: обновились по воздуху, и радуемся.
Web-страничка для управления гирляндой
В качестве гирлянды-мастера выбрана ёлочная. На её страничке можно поставить галочку с требованиями синхронизации остальных гирлянд, и её режим будет транслироваться всем остальным.
Примеры гирлянды, которую мне лень снимать сейчас :)
Примеры гирлянды, которую мне лень снимать сейчас :)
Примеры гирлянды, которую мне лень снимать сейчас :)
В сухом остатке получилось несколько устройств, на которые не стыдно посмотреть, которые не стыдно показать и которые работают и радуют глаз. Возможно, когда разберусь с текущими проектами - вернусь к доработке гирлянд. Избавиться от хардкода, что не очень сложно и чуть улучшить синхронизацию (заставить гирлянду-мастера передавать не только свой текущий режим, но и конкретный тик из millis() для более эффектного внешнего вида) и всё, пожалуй. Сделать полноценное Android-приложение, управляющее гирляндами. Возможно, имеет смысл сделать отдельный сервер на полновесной ESP32, который собирал бы данные с гирлянд, и синхронизировал их при необходимости. Но это уже вопрос полноценного самописного умного дома, т.к. к такому серверу можно подключить любое устройство на базе ESP. Для работы с MQTT так же есть полноценные библиотеки. В общем, проект получился достаточно простым, но интересным с точки зрения возможности масштабирования.
На этом всё, спасибо, что дочитали. Ссылок на телегу не будет, это всё от лукавого :)