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

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

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

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




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

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

ESP8266 vs ESP32

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

Как собрать проект
Для 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 - прошивка Фс
pio run -e esp8266 -t upload - прошивка
pio run -e esp8266 -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 esp8266 -t upload - собрать и записать версию esp8266, будет собрана облегченная прошивка без вывода отладочных сообщений через serial интерфейс Рекомендуется для повседневного использования, если нет нужды отлаживать работу лампы
  • pio run -e esp32debug -t upload - собрать и записать версию esp32 с отладкой, будет собрана прошивка под esp32 c выводом отладочных сообщений через serial интерфейс
  • pio run -e esp8266dev -t upload - собрать и прошить отладочную версию под esp8266
  • pio deviсe monitor - запустить serial-монитор для просмотра сообщений, выдаваемых контроллером


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

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


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

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

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

Для знакомства с проектом можно воспользоваться собранными бинарниками от @andy040670 из этого поста

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

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

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

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


По кнопке:

  • Из выключенного состояния
    • 1 касание - включить на последнем эффекте
    • 2 касания - включить в режиме ДЕМО
    • долгое удержание - включить в режиме "белая лампа" на минимальную яркость (ночник)
    • касание, удержание - включить в режиме "белая лампа" на максимальную яркость
  • Во включенном состоянии
    • 1 касание - выключить лампу
    • 2 касания - следующий эффект
    • 3 касания - предыдущий эффект
    • 5 касаний - вывод IP на лампу
    • 6 касаний - вывод текущего времени бегущей строкой
    • удержание - регулировка яркости
    • 1 касание, удержание - регулировка "скорости" эффекта
    • 2 касания, удержание - регулировка "масштаба" эффекта

Это дефолтное состояние для кнопки, но абсолютно любую настройку можно поменять

HTTP/MQTT команды

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

Комментарии

vortigont

★★★★★✩✩
24 Апр 2020
917
493
Saint-Petersburg, Russia
переработал переключатели на главной странице (те что под кнопкой "ещё").

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

vortigont

★★★★★✩✩
24 Апр 2020
917
493
Saint-Petersburg, Russia
переписал целиком работу с энекодером, корявую либу выкинул, заменил на либу с аппаратным квадратурным декодером.
Энкодер целиком настраивается через вебморду, поддерживаются 1х, 2х, 4х энкодеры. Подробнее про настройки в вики.
Последнее что осталось в "конфиге" как оказалось пин микрофона :p
 
  • Лойс +1
Реакции: dina и andy040670

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
190
108
@vortigont,
Ну что. Скачал новый "мастер" Скомпилировал прошивку и ФС. Прошил как обычно "по воздуху" Зашел с пятого раза в настройки. Настроил пины панели как обычно, засветилась "белая лампа" и на этом ВСЕ! Все погасло. В вебморде все работает через одно место. При попытке зайти в настройки перезагрузка. Попадаю только через несколько попыток. Панель при этом вообще не работает. Почти при любых изменениях крашь и перезагрузка. Микрофон не включается т.е. его включаешь, а он через 1-2 секунды выключается. Пробовал перепрошить по новой, не помогло. Пред-идущей сборки не сохранил и теперь вообще не знаю что делать. Первый раз с таким столкнулся. Комплект проверил на непропай, все хорошо. Комплекту уже не один год. (я про железо) Так что что то пошло не так с прошивкой. Проверил работоспособность другим проектом. На том все заработало.
 
Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
328
85
49
последняя кривая там. нормально работает с комитом ,исправления в настройках и работы микрофона.
Вортигонт ,пора еще релиз делать :)
 
Изменено:

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Пред-идущей сборки не сохранил и теперь вообще не знаю что делать.
Если хотите вернуть прошивку на тот момент, когда у вас всё работало, то на гитхабе выберете коммит, который по времени примерно соответствует, скачайте архив, разархивируйте в рабочую папку, шейте.
 

dina

★★✩✩✩✩✩
3 Окт 2021
328
85
49
Или для есп 32 s3 ,отдельную ветку заводить, что бы мастер под есп 32 ,не ломать ,обновками.
 

vortigont

★★★★★✩✩
24 Апр 2020
917
493
Saint-Petersburg, Russia
чего там у вас кривое-то? У меня 2 платы - есп32 на лед матрице и есп32s3 на панели, обе работают. Под s3 я добавил тест в автосборщик, если сломается, я увижу. Проверяйте настройки внимательно, ФС перезалейте.
 

dina

★★✩✩✩✩✩
3 Окт 2021
328
85
49
я последнюю в s3 ,заливал ,такое же поведение с падениями. лог от s3 в телеге в общем чате :)
 

vortigont

★★★★★✩✩
24 Апр 2020
917
493
Saint-Petersburg, Russia
да я видел, ошибка на стеке но не оч понятно от чего, если еще поймаете - кидайте. У меня вполне стабильно работает, морда открывается с пол пинка, эффекты переключаются. Пока проблем не вижу. Кидайте логи, буду смотреть.
 

dina

★★✩✩✩✩✩
3 Окт 2021
328
85
49
дак это лог и есть. ничего не дает сделать ,падает при переключении эффекта ,панель не горит ,стартует с 0 эффекта.. у меня в 2-ух есп 32 предыдущяя прошивка ,до изменения 10 бит ,там все нормально.
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
190
108
@vortigont,
Мне к сожалению не снять лог. Далеко панель от компа.

Если хотите вернуть прошивку на тот момент, когда у вас всё работало, то на гитхабе выберете коммит, который по времени примерно соответствует, скачайте архив, разархивируйте в рабочую папку, шейте.
Вот бы знать как это сделать?
 

vortigont

★★★★★✩✩
24 Апр 2020
917
493
Saint-Petersburg, Russia
@wadimsuv, вот сюда заходите, выбираете нужный комит, тыкаете справа в <>, откроется срез репозитория на момент времени когда был сделан комит, дальше как обычно скачиваете, собираете прошиваете.

Но мне пока все равно не понятно в чем суть проблемы - у вас есп32, у Дины есп32s3 у него не работает с3, но работают обычные, у вас не работают обычные. У меня работают обе ) Я пока в тупике. Подождём еще отзывов.
 

dina

★★✩✩✩✩✩
3 Окт 2021
328
85
49
У меня простые есп 32 на предыдуших прошивках ,до изменения 10 бит. На s3 последняя ,она падает.
Я последнюю не лил ,в простые есп 32 ,потому что на s3 она падает.
Только что ,залил последнюю мастер 16х16 и 64х32 ,ВСЕ РАБОТАЕТ.
 
Изменено:
  • Вау +0
Реакции: vortigont

vortigont

★★★★★✩✩
24 Апр 2020
917
493
Saint-Petersburg, Russia
увеличил немного размер стека под шину событий, похоже после недавних изменений там добавились тяжелые обработчики. @wadimsuv попробуйте, залейте обновленную сборку.
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
190
108
@vortigont,
Попробовал. Видно, что очень тяжело ей (панели) работать. Вроде и работает, но тормозит сильно. Переключение эффектов при ДЕМО переключает через минут 5-10,т.е. работает один эффект, потом гаснет на примерно 5 минут, потом включается следующий. Микрофон не работает вообще. По меню в вэбморде переключается с 2го-3го раза. Адекватно работает только срез от 26 марта. Придется пока остаться на нем. Продублирую в телегу.
 

rero

✩✩✩✩✩✩✩
16 Мар 2024
3
0
@andy040670, добрый день пытаюсь залить готовы образ командой для esp8266

У меня MacOS и нет Flash Download Tools.
Пробую через esptool.py

Bash:
$ python3 bin/esptool.py  --chip esp8266 --baud 921600 --erase-all write_flash -z --flash_mode qio --flash_freq 40m 0x000 firmware.bin 0x002 littlefs.bin
esptool write_flash: error: argument <address> <filename>: Detected overlap at address: 0x2 for file: littlefs.bin
Так же пробовал собирать из исходников из веток https://github.com/vortigont/FireLamp_JeeUI/tree/legacy и https://github.com/vortigont/FireLamp_JeeUI/releases/tag/v3.1.1

но тоже получаю ошибку
Bash:
pio run -e esp8266

.pio/libdeps/esp8266/FTPClientServer/FTPServer.cpp: In member function 'virtual void FTPServer::handleFTP()':
.pio/libdeps/esp8266/FTPClientServer/FTPServer.cpp:134:31: error: 'class WiFiServer' has no member named 'accept'
       control = controlServer.accept();
                               ^
*** [.pio/build/esp8266/libdc6/FTPClientServer/FTPServer.cpp.o] Error 1
================================ [FAILED] Took 4.87 seconds ====================

Environment    Status    Duration
-------------  --------  ------------
esp8266        FAILED    00:00:04.866
под esp32 собирается без проблем

Хочу попробовать прошивку, но что-то пока никак не получается. Буду рад любой помощи.
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
190
108
@rero,
Так вроде и не была заявлена поддержка esp8266 Уже давно от этого отказались.
 

rero

✩✩✩✩✩✩✩
16 Мар 2024
3
0
@wadimsuv, да но как раз в шапке написано

ESP8266 vs ESP32

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

rero

✩✩✩✩✩✩✩
16 Мар 2024
3
0
@andy040670, да с полными адресами получилось спасибо

Bash:
python3 bin/esptool.py  --chip esp8266 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode qio --flash_freq 40m  0x00000000 firmware.bin 0x00200000 littlefs.bin

Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 84:cc:a8:xx:xx:xx
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0040
Compressed 879312 bytes to 580667...
Wrote 879312 bytes (580667 compressed) at 0x00000000 in 8.1 seconds (effective 863.2 kbit/s)...
Hash of data verified.
Compressed 2072576 bytes to 366243...
Wrote 2072576 bytes (366243 compressed) at 0x00200000 in 10.7 seconds (effective 1552.6 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...