ESP, IoT WiFi лампа/гирлянда/информер ws2812/HUB75 - Обсуждение прошивки FireLamp_EmbUI

FireLamp_EmbUI - деполитизированный форк проекта "огненной" лампы (исходный проект FireLamp_EmbUI)

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

Проект эволюционировал от "лампы" в гибридную прошивку для адресных лент / HUB75 RGB панелей.

Эволюцию проекта и смежные вопросы (архив) в теме универсальный информер/часы/лампа/гирлянда

Примеры работы проекта:



Внимание!
Актуальное описание и документацию можно найти на странице проекта в GitHub, шапка обновляется редко.
Вопросы сообществу можно задать в группе телеграм - LampDevs
Документация доступна в WiKi проекта,.

Концепт
Исходный проект был значительно переписан и реструктурирован. В разработке основное внимание уделяется структуре кода, декомпозиции и объектоориентированности даже в ущерб функциональнсти и "фичам". Основная идея развития - вся конфигурация и управление периферией должна быть максимально доступна во время работы кода без необходимости пересборки всего проекта. Параметры в конфигурационных файлах и опции сборки сводятся к минимуму, упраздняются и заменяются настройками через WebUI.

ESP8266 vs ESP32

Разработка ведется только под контроллеры семейства esp32. ESP8266 морально устарел, было принято решение не тратить время на поддержку совместимости и уделить больше времени и ресурсов актуальной платформе. Последний стабильно работающий на контроллерах 8266 выпуск проекта - версия v3.1.1, используйте на свое усмотрение, корректная сборка с обновлёнными библиотеками не гарантируется.

Бинарные сборки
Самый простой способ залить прошивку это воспользоваться веб-прошивальщиком из браузера. Прошивка работает из Chrome, Opera, MS Edge. Перейдите на страницу ESPWebFlasher и следуйте описаным инструкциям.
Проект можно прошить в чистую плату используя готовые сборки со страницы выпусков. Бинарные образы подготавливаются и прикрепеляются к выпускам начиная с v3.6.0. В списке Assets можно нати архивы factory_images_XX.zip и firmware_images_v3.6.0.zip. Factory - полный образ прошивки готовый для заливки в чистую плату, содержит в себе полный набор компонентов включая образ файловой системы с веб-ресурсами. Firmware - образы для обновления предыдущей версии прошивки, пригодные для заливки по воздуху через WebUI (OTA).


Как собрать проект
Для Windows понадобится установить git, python, platformio, проще всего это сделать с помощью скрипта. Подробнее можно прочесть в WiKi

Легкий способ:
для пользователей Windows OS можно использовать builder скрипт. Билдер был изначально написан @kostyamat (за что ему спасибо), адаптирован под форк текущей комадой (@andy040670).
Запускаете билдер и последовательно проходите шаги установки питона, гит, платформио, клонирование репозитория и сборку требуемого варианта прошивки.

Правильный способ:
Проект собирается с помощью Platformio
Для сборки проекта понадобится следующее:
Установить IDE Visual Studio Code, и, в качестве плагина к ней, установить Platformio. О том как это сделать можно найти массу роликов на youtube, например этот.

Желательно еще установить Git, обновлять проект будет значительно проще

Как скачать/обновлять проект

Актуальный срез проекта всегда можно скачать в виде zip-архива по ссылке, рекоммендуется скачивать последний выпуск со страницы релизов. Для желающих принять участие в тестировании можно поддерживать клон репозитория и подтягивать свежие обновления перед каждой новой сборкой. Открываем Git-bash, клонируем репозиторий в тукущую папку командой git clone --depth 1 --no-single-branch https://github.com/vortigont/FireLamp_JeeUI.git В дальнейшем для того чтобы обновить репозиторий достаточно перейти в папку проекта и выполнить команду 'git pull'.
Рекомендуется периодически обновлять зависимые библиотеки после обновления репозитория, обновление выполняется командой pio pkg update.

После того как вы скопировали проект (в виде zip архива или через git clone), необходимо в папке include скопировать файл user_config.h.default под новым именем user_config.h и в нем настроить сборку под свои параметры матрицы, номеров выводов и требуемых функций.

заметки по установке ПО под windows от @dina
дляпроверки того что всё ПО было установленн корректно в консоли в папке с проектом должны успешно выпоняться следующие команды:
git --version
git pull обновление репозитария
git status
pio --version
pio pkg update - обновление библиотек
pio run -e esp32 -t upload - прошивка
pio run -e esp32 -t uploadfs - прошивка Фс
git switch master - переключение на ветку мастер
git switch feat переключение на ветку feat


Сборка

  • Открываем папку проекта в VSCode
  • Что бы собрать прошивку, можно воспользоваться кнопками в нижней статусной строке:
    • PlatformIO:Build - собрать прошивку
    • PlatformIO:Upload - загрузить прошивку через USB в плату.

Platformio сам скачает необходимые библиотеки для сборки проекта.

Также можно открыть терминал с помощью клавиш Ctrl+Shit+` и воспользоваться расширенными командами для сборки проекта.

  • pio run -t upload - собрать и записать в контроллер проект по умолчанию под платформу esp32
  • pio run -e esp32debug -t upload - собрать и записать версию esp32 с отладкой, будет собрана прошивка под esp32 c выводом отладочных сообщений через serial интерфейс
  • pio deviсe monitor - запустить serial-монитор для просмотра сообщений, выдаваемых контроллером


Для работы лампы нужно сформировать и залить в контроллер образ файловой системы. Выполняется это командой аналогично записи прошивки, но с параметром -t uploadfs, к примеру
  • pio run -t uploadfs - записать в контроллер образ ФС под платформу esp32

После первой прошивки дальнейшие обновления можно заливать в контроллер по воздуху. Для этого нужно зайти браузером на контроллер по URL вида http://embui-xxxx/update, где xxxx это ID контроллера, нажать на кномку 'Firmware', выбрать файл с прошивкой и загрузить его в контроллер. Файл с прошивкой Platformio кладет в подпапки проекта:

  • .pio/build/esp32/firmware.bin - версия под esp32

В случае каких-либо проблем со сборкой, перво наперво нужно полностью очистить рабочий каталог платформио и попробовать пересобрать прошивку (платфомио заново выкачает актуальные версии зависимых библиотек).
Для очистки рабочего каталога нужно удалить из папки прокта каталог .pio

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


Озвучка для мп3 плеера
набор звуковых файлов для MP3 плеера можно скачать по ссылке из WiKi

Говорящие часы / кукушка
- настраиваема озвучка времени почасовая / пол часа / четверть часа
- тихие часы для отключения озвучки по ночам

Будильник
- 4 независимых будильника со своей мелодией у каждого
- каждый будильник может иметь один из режимов на выбор
- однократное срабатывание
- ежедневное срабатывание
- по будним дням
- по выходным дням

Управление
Лампа управляется через WEB-интерфейс или через мобильное приложение WLED-Native-Android, WLED-Native-iOS, старый WLED


Device API описан на странице в WiKi
 
Изменено:

Комментарии

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, они продают модули в блоке по 4 штуки, такие берите. Лучше с запасом, бывает они выгорают или подглюкивают.
А вообще они прикольные, у меня первый информер на них уже лет 5 работает.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Просто у меня часики на 3 матрицах 8х8 60х60мм и атмеге 32 ,там и шрифты и текст нормально выводиться. На 4 матрицах громоздко будет 32х32мм 1 матрица. На 3 матрицах реально часы ,сделать? Если нет то из 4 матриц. Их можно поштучно купить и 3 сделать ,а сборка из 4 на общей плате.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
стандартный фиксированный шрифт из адафрут_гфх по -моему как раз был размера 1 символ на один модуль 8х8, поэтому для часов вида 00:00 нужно было 4 модуля впритык. Я брал плашки из 4 модулей и собирал их в квадратное пано по 4 штуки и то был недоволен и думал что 6х4 модуля смотрелось бы лучше. Впрочим все зависит от шрифта и удобства, смотря какое устройство собирается. Шрифты меньше чем 5х7 пикселей как по мне выглядят совсем уж коряво по нынешним временам.
 

PavelNMSK

✩✩✩✩✩✩✩
12 Сен 2023
17
5
Накопились вопросы.
1) Не пойму, как работает функция рисования. Как-то нажимал, что рисунок поверх эффектов появлялся, но так и не понял, как это работает.
2) Как работает прокрутка текста? Как включить?
3) Что за эффект часы? У меня при его включении происходит перезагрузка. ( было бы круто, если этот эффект выводил бы часы на матрицу с заданным пользователем цветом и яркостью, 2 варианта часов на выбор - цифровые или со стрелками )
4) После прошивки включение каждого эффекта первый раз приводит к перезагрузке. Так и должно быть?
5) В настройках -> Дата / Время / Часовая зона -> строго прописаны 2 NTP сервера и есть возможность добавить 1 свой. Как установить приоритет обращения к серверам? Да и зачем нужны строго прописанные - почему бы не дать возможность их изменить?
 
Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@PavelNMSK, Что бы все понять ,надо хоть маленько почитать ,тему . Многое еще не работает. @vortigont, Пока заметил, что настройка Hub75 , в лед панели не сохраняеться.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
1) так и работает - рисуешь поверх эффекта. Можно рисовать на 0м эффекте на черном фоне. Не знаю зачем это нужно, мож детям поиграть если сделать "гирлянду" на окно
2) текст не работает, старая реализация дюже корявая. С новым оверлеем нужно переписывать, есть большой план по работе с текстом, пока руки не дошли.
3) Часы тупо выводили время в виде текста. На матрице 16х16 это были цифры в 2 ряда, смотрелось это ппц убого и мельтешило в глазах. Не работает по той же причине что и текст. Актуальность таких уродских часов для "лампы" у меня вообще вызывает большие сомнения, на круглой матрице под матовым плафоном их увидить все равно нереально, поэтому я их не чинил. Когда будет нормальный текст с разными шрифтами, тогда эффект нужно будет переписать, будет актуально на гирляндах и хаб75 матрице.
4) так быть не должно, приложите пару логов со стек-трейсами если это гарантированно воспроизводится.
5) 2 забитых сервера обеспечивают доступность времени "из коробки". Есть еще фунционал NTPoverDHCP, он может переопределять все 3 сервера. Менять первые два нельзя исторически чтобы пользователь не "наменял" там так что вообще без времени остался. Да и хранить еще 2 имени нужно в памяти. 3й нужен для пользователя в особо экстремальных случаях, если, например, нет выхода в инет из WiFi сети. Какой-то актуальной необходимости в настройке всех 3х серверов я не вижу. Если есть другие соображения - изложите, всегда можно передумать.

Наверное надо убрать эти часы дурацкие из списка вместе с текстом пока не исправлю.
 
  • Лойс +1
Реакции: Дрон и PavelNMSK

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Пока заметил, что настройка Hub75 , в лед панели не сохраняеться.
не сохраняется после чего - перезагрузки или переходе по страницам?
если не сохраняется, то работает ли после перезагрузки сама хаб панель?

залил мелкие правки:
скрыл из меню "текст", выключил эффект "часы", исправил ошибку с сохранением шкалы яркости на значение по-умолчанию.

Сейчас готовлю переработанный функционал интеграции с MQTT.
 

PavelNMSK

✩✩✩✩✩✩✩
12 Сен 2023
17
5
А модуль TM1637 работает? Если работает, то куда его подключать?Исходя из user_config.h: DIO к SCL пин D4, CLK к SDA пин D2. Так? Это не будет вырезаться?
 

PavelNMSK

✩✩✩✩✩✩✩
12 Сен 2023
17
5
@PavelNMSK, работает, подключайте куда угодно, пины настраиваются из вебморды.
Из конфига уберу определения, что бы не смущали
Не могу найти в вэб интерфейсе, где эти пины настраиваются. Или надо в конфиге сначала активировать?
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
да, надо в юзерконфиге прописать #define TM1637_CLOCK
ну или обновитесь, я убрал этот дейфайн, теперь тмдисплей собирается по-умолчанию
Пины настраиваются на странице gpio setup
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
не сохраняется после чего
Я попробывал подключить хаб 75 панель ,пока на проводах. Выбираю хаб 75 , перезагрузки не увидел ,ну и как бы хаб 75 не применяеться ,остаёться матрица 16х16. Второпях делал но вроде ,не ошибься ,панель не горела. На выходных ,хочу спаять ,капитально ,что бы дергать удобно было. P.S а сейчас перезагрузилось и такая картинка ,так должно быть? панель не подключал. И после этого настройки дфпплеера слетают и он отключаеться. И размеры матрицы 16х16 и пин настраивать надо.
 

Вложения

Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Вопрос ,гпио 20 , 24 ,28 ,29 ,31 на есп 32 (38 пин) ,не вижу? Энкодер появился? Тут надо будет для хаб 75 ,внимательно с пинами разобраться. Не собираеться.
 

Вложения

  • 23.3 KB Просмотры: 2
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, обновите зависимости.
Пины поставьте какие есть на плате, под вск платы конфигурацию не подберешь одинаковую. Я раскидал все прочее по удобным пинам, хаб75 на остатки.
Энкодер как был тот и остался
 
Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Из консоли попробывал. Не идет. Чет у меня поломалось ,я на днях откат системы делал. Ни вс коде ,ни консоль не хочет.
 

Вложения

  • 897 байт Просмотры: 4
  • 8.5 KB Просмотры: 2
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
А, нашел, в фреймворке константы обновленные не залил. Не могу понять как автосборщик тогда все тесты прошел :)
Доберусь до ноута поправлю позже сегодня.
 
  • Лойс +1
Реакции: dina

ldir

★✩✩✩✩✩✩
1 Мар 2020
11
13
Нафига вы разгребаете это дерьмище от КДН и сотоварищи? даже во WLED уже переварили эти степковские эффекты и заставили работать как надо. Беда в ядре, индусу понятно.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, поправил автоперезагрузку при переключении типа дисплея. При первичной настройке (если пин менять с -1 на реальный) настройки применяются без перезагрузки.

При выборе хаб -75 ,вечный рестарт
винимательно проверяйте свои пины, если для хаб панели указать пин который уже используется под кнопки/энкодер, то получите бесконечный ребут.
Я проверил на голом контроллере с умолчальными настройками хаб75 стартует нормально, что при этом на дисплей выводит не знаю. Если пины по-умолчанию неудачные, тестируйте, подбирайте, можно будет поменять. Позже сделаю настройку из вебморды, также как для адресной ленты.
 

digex

✩✩✩✩✩✩✩
16 Окт 2023
7
0
На последнем билде не настраивается MQTT, ввожу ip/port, изменения не принимаются и не сохраняются
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@digex, О, а вы пользуетесь мкутт? В каком виде? Мкутт движек я начал полностью переписывать, таки дошли руки. Поменяется всё - структура топиков, формат сообщений и т.п., сейчас там возможны любые капризы. Если нужен старый фунционал, лучше пока пользуйтесь прошлой версие.
Было бы интересно обсудить структуру как раз с теми кто пользуется.
Ошибку по сохранению посмотрю сегодня.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
За основу взял пины другого проекта Игоря Шилова ,с ними нормально переключаеться. Осталось спаять.
 

Вложения

  • 530 байт Просмотры: 5

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@digex, обновитесь или откатитесь. Не могу понять по логу какая версия у вас установлена, но не из свежих где mqtt уже работает по другой схеме.