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

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Я вон из списка демо ,исключил эффект флаги. Месяц гирлянда на окне вертиться. Вортигонт ,можете временно эффект флаги ,переделать. Оставить пока ,только Российский флаг ? Уж больно ,эмоции у всех зашкаливают.
 
Изменено:

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Да вообще о цензуре ,речи нет. Сделайте ,как удобно на Ваш взгляд. Я просто ,хотел избежать ,каких то неприятных ситуаций.
🎅 👮‍♂️👮‍♂️
 
  • Лойс +1
Реакции: vortigont

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,Надо рассмотреть портирование эффектов из прошивки Мишани. И принимать в свои ряды "погорельцев" с соседней ветки.Я не знаю ,может для тех у кого трудности с прошивкой ,выкладывать стабильный релиз ,в бин файле ,с адресами на картинке. Если конечно они готовы перейти на есп 32. Для тестов 3 макетки есть 16х16 ,64х32 ,128х64 . Работы по тестам добавиться ,но я готов.
 
Изменено:
  • Лойс +1
  • Аррр! -2
Реакции: hsh777 и kostyamat

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
да я не против, всем желающии "добро пожаловать". Другое дело что фич в текущем проекте пока маловато по сравнению с проектом от @vvip, например. Кто всё еще сидит на 8266 лучше перебираться к нему. Не знаю насколько у него еще хватит терпения тащить эту платформу.
Наш проект получается более академический чем функциональный. Но "таков путь" ) Эффекты портировать вообще не проблема, в реализации с классами это сделать проще чем где-либо еще. Любая помощь будет весьма к месту кто готов взяться за посильные задачи - перебирать, сортировать чего не хватает, документировать и т.п.
По поводу бинарных сборок они будут обязательно со следующей версии как только я закончу кнопку/энкодер. Это последнее что привязано к конфигу сборки до сих пор. Думаю до конца января управлюсь, должно быть немного времени лишнего пока зима. Сейчас пишу черновик для кнопок/энкодера на основе событий и конечного автомата. Движек будет унифицированный для работы с обычными кнопками, сенсорными и на основе встроенного сенсора есп32, плюс энкодер с аппаратным счетчиком. Я так гляжу это будет вообще отдельная новая полностью асинхронная библиотека. Всему свое время.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
можно портировать эффекты
если будут желающие сравнить эффекты в той прошивке и выбрать действительно стоящие, то я посмотрю код.
Не хочется тащить все подряд ради "наполнения", я бы и из текущих четверть точно выкинул.
Еще желательно проверить их на авторство и лицензию, разводить очередные сопли "вы украли мой эффект" желания нет. В общем портировать код не сложно, а повозиться с остальным предлагаю заинтересованым лицам. Я пока поработаю над более низкоуровневыми вещами.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Поставил прошивку Мишани. Пришлось повозиться. Видать чет он не доделал. В настройках констант ,все что не надо закоментировал не собираеться. Расскоментировал собралась. Начал по одному пункту коментировать. Короче в итоге на комментировании дисплея 1637 не собираеться. Пришлось оставить ,не коментированным. Собрал ,гляжу эффекты. Ткните носом ,где эти лицензии глядеть?
P S в общем поглядел ,выбрал повыразительней и чего у нас нет. 2 аленький цветочек. 43 люменьер. 50 мозаика. 67 осьминог. 76 планета земля (не знаю как на 64х32 ,глядеться будет). 96 серпантин (из за этого ,я так понимаю вонь будет @SlingMaster )
 
Изменено:

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Проверил ,все нормально.
P S. По эффектам из соседней ветки. Можно добавить математики (чекрыжики) ,на эффекты. 43 люменьер ,добавить чекрыжик ,на диагональное ползание змеек. 50 мозаика ,добавить чикрыжик ,в эффект пятнашки, случайное вспыхивание кубиков.96 серпантин ,добавить настройки ,чекрыжик ,на регулировку змеек ,в эффект днк. 67 осьминог ,добавить чекрыжик ,в эффект радуга ,на вращение радуги от центра.
Надеюсь ни кого не обидим. Это так мысли вслух.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Натыкался тут на одну проблемку - Иногда переключение страниц в WebUI отваливается до полной перезагрузки контроллера.
Сейчас подтвердил еще один человек - обсуждение здесь. Если у кого есть что добавить пишите или туда или сюда. Лучше туда дабы не плодить сущности.
 

Jarik

✩✩✩✩✩✩✩
13 Сен 2020
3
0
Добрый день.
Пытаюсь залить FS, но при компиляции появляется ошибка:
1704464886005.png
Your choice [Ваш выбор]: ► f
Processing esp32 (board: esp32doit-devkit-v1; framework: arduino; platform: espressif32)
----------------------------------------------------------------------------------------
Library Manager: Installing AsyncUDP
Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32doit-devkit-v1.html
PLATFORM: Espressif 32 (6.5.0) > DOIT ESP32 DEVKIT V1
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20014.231204 (2.0.14)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- tool-mkfatfs @ 2.0.1
- tool-mklittlefs @ 1.203.210628 (2.3)
- tool-mkspiffs @ 2.230.0 (2.30)
- toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 59 compatible libraries
Scanning dependencies...
Dependency Graph
|-- DFRobotDFPlayerMini @ 1.0.5+sha.bc15936
|-- GyverButton @ 3.8.0
|-- ESP32 HUB75 LED MATRIX PANEL DMA Display @ 3.0.9
|-- TetrisAnimation @ 1.1.0+sha.db24894
|-- EmbUI @ 3.1.0+sha.11ae1e7
|-- LedFB @ 0.1.0+sha.74d1fdb
|-- TM1637 Driver @ 2.1.2+sha.605b69d
|-- StreamUtils @ 1.8.0+sha.03fafbb
|-- AsyncMqttClient @ 0.9.0
|-- EncButton
|-- luma
|-- LinkedList @ 1.5.0+sha.0cf24d0
|-- FastLED @ 3.6.0
|-- ArduinoJson @ 6.21.4
|-- WiFi @ 2.0.0
|-- LittleFS @ 2.0.0
|-- ESPAsyncE131-wled
|-- arduinoFFT @ 1.9.1
|-- iarduino RTC (часы реального времени) @ 1.3.4
Building in release mode
Building FS image from 'C:\Programs\Microsoft VS Code\data' directory to .pio\build\esp32\littlefs.bin
warning: can't read source directory
*** [.pio\build\esp32\littlefs.bin] Error 1
============================= [FAILED] Took 10.16 seconds =============================

Environment Status Duration
------------- -------- ------------
esp32 FAILED 00:00:10.162
======================== 1 failed, 0 succeeded in 00:00:10.162 ========================

Я уже и скриптом пытался скомпилировать, и с VSCode, все запускал от администратора. Можете подсказать, в чем может быть проблема?
 

Jarik

✩✩✩✩✩✩✩
13 Сен 2020
3
0
@vortigont,

Код:
Building FS image from 'C:\Programs\Microsoft VS Code\data' directory to .pio\build\esp32\littlefs.bin
warning: can't read source directory
*** [.pio\build\esp32\littlefs.bin] Error 1
Из студии аналогичная ошибка на команду pio run --target buildfs --environment esp32
В директории появляется файл .pio\build\esp32\littlefs.bin , не уверен, корректный ли он.

Ошибка "can't read source directory" намекает на какую-то проблему с папкой 'C:\Programs\Microsoft VS Code\data' - это там, где VSCode установлен. Но у меня там нет папки 'data'
 

Jarik

✩✩✩✩✩✩✩
13 Сен 2020
3
0
@vortigont,
Точно, спасибо.
После изменения в настройках проекта платы, переписался путь data_dir в platformio.ini c './data' на 'C:\Programs\Microsoft VS Code\data'
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@vortigont,
Простите, может я после болезни очень слабо соображаю, но я так и не увидел эффекта "Флаги" у себя.
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@vortigont,
Заметил вот такое поведение в WebUI. При включённом режиме "DEMO" и переходе в пункт "настройки" появляются ползунки эффекта. Появляются не сразу, а когда меняется эффект. (выделил красной рамкой)
 

Вложения

  • 101.4 KB Просмотры: 25

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Изменено:

dina

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

Вложения

Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Проблема осталась, или вы её ещё не правили?
еще не правил.

Нету кнопки в UI. Пин настроил, кнопка не появилась.
настройки кнопки находятся в "настройки" - "периферия" - "кнопка".

Физ. кнопка не работает. В вэбморде работает.
энкодер с кнопкой не связан. Можно кнопку в энкоде использовать как "кнопку", я так и тестировал у себя - настроить sw пин куда прицеплен энкодер как "кнопку" с логическим уровнем low.

Плеер статус конктед ,не работает.
плеер я где-то отключал недавно, не помню почему. Погляжу.

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