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
 
Изменено:

Комментарии

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
да собирается же...
Да, теперь собирается. Видать я поторопился.
Блин, теперь есп32_debug во флэш не лезет.
C++:
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
Error: The program size (1646133 bytes) is greater than maximum allowed (1638400 bytes)
RAM:   [==        ]  16.1% (used 52820 bytes from 327680 bytes)
*** [checkprogsize] Explicit exit, status 1
Flash: [==========]  100.5% (used 1646133 bytes from 1638400 bytes)
============================= [FAILED] Took 410.11 seconds =============================
На гит сборщике
C++:
RAM:   [==        ]  15.9% (used 51996 bytes from 327680 bytes)
Flash: [==========]  95.6% (used 1566545 bytes from 1638400 bytes)
Почему такая разница?
P/s
Без дебага еле влезло.

Предварительный итог:
На 8266 злых багов пока не обнаружено, кроме уровня громкости после рестарта. На есп32 наверно тоже так, проверить не могу.
На есп32 в UI эффекты переключаются со второго нажатия, демо не листает.
 
Изменено:

vortigont

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

Когда меняешь яркость эффекта, потом переходишь на другой, а потом возвращаешься обратно, то яркость будет соответствовать номеру эффекта
поправлено в обоих ветках.

Блин, теперь есп32_debug во флэш не лезет.
нашел, это был неиспользуемый SSL от http клинета. Выкинул, теперь места валом.
Кстати, заодно сравнил карты двух веток по ресурсам - мастера и фит с включенными микрофоном, плеером, кнопкой и тм-дисплеем.
Разница в версиях фреймворка старый и мой и основной код в итоге вылилась в минус 1,3к dram памяти, 3к iram и 53к размера бинарника.
Это по сути за счет выкинутых литералов, стринг-оберток. есп32 вообще довольно толстые образы генерирует. Надо еще ради интереса сравнить с по коду эффектов из предыдущих версий.

кроме уровня громкости после рестарта
а что с громкостью? На feat ветке?
 
  • Лойс +1
Реакции: andy040670

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, по-моему вам надо очистить системный конфиг, там, вероятно, остались строковые значения звука/флагов от старого фреймворка, поэтому не сохраняется. Попробуйте, должно заработать. По крайней мере уровень звука точно сохраняется, демо/вкл проверю.
 
Изменено:

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Очистил через вебморду, удалось настроить только таймзону, потом лампа уходила в ребут по любому чиху, мп3 так же настроить не удалось.
Плюнул, перешил по кабелю с полным стиранием флэш, тоже не помогло, звук стартует на полную как и прежде.
Это на 8266, на есп32 проверить не могу.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, странные глюки у вас с этой 8266. На голой плате 8266 проверил вроде не падает и значение звука сохраяняет. Если не лень, соберите дебаг версию на 80 МГц и скиньте лог загрузки, плюс конфиг по http://lamp/config.json сразу после загрузки. Если упадет при сохранении номеров пинов в настройках - скиньше стек трейс.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
На голой плате 8266 проверил вроде не падает и значение звука сохраяняет
На голой не проверить, так как визуально всё нормально, ползунок на месте, а плеер орёт на полную. Стоит ползунок переместить буквально на одно деление, всё нормализуется до первой перезагрузки.
Падения были после очистки системного конфига из ui.
Если упадет при сохранении номеров пинов в настройках - скиньше стек трейс.
Пины я ещё менять не пробовал, это только предстоит))), а "настройки Мп3" подразумевалось всё кроме пинов.
Если не лень, соберите дебаг версию на 80 МГц и скиньте лог загрузки, плюс конфиг по http://lamp/config.json сразу после загрузки.
Не лень, но некогда. У меня до компьютера добраться только набегами получается.
Текущий конфиг 8266_160, расширение txt убрать. Громкость здесь на полную не смотря на то что в конфиге всё нормально.
Добавил лог актуальной конфигурации после рестарта.
 

Вложения

Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Вы бы в конфиг.файле ,для есп 32 все пины по умолчанию расписали бы ,а я по ним спаял ,бы капитально полный обвес и мп3. Что бы можно было шевелить ,мою конструкцию без проблем. Без чудес.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, да нету их по-молчанию под есп32. В конфиге вообще забиты были пины от вемоса 8266 в виде D1,D2.
Надо собирать, тестировать и составлять что можно брать за "умолчание". То что я лично проверил описано тут. Плюс еще плат на есп32 намного больше разных, с рамой внешней, с СД разъемом. Единого эталона не получится. Но собирать, тестировать и документировать надо :)
Поэтому я планирую что получится втащить в настройки из вебюи и выкинуть из конфигов. А по-умолчанию пины будут неопределены.
Под популярные платы можно наделать таблиц на вики если у кого будет желание принять участие. У меня итак возня с кодом хучу времени отнимает пока есть возможность.

@andy040670, я понял, надо где-то воткнуть в инициализацию восстановление громкости. Видимо у меня пищалка тихая, даже на полную она не особо громко орет.
Кстати на ползунке видно когда он не определен - он стоит в середине и сверху нет цифрового значения.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Ладно , я тогда , спаяю ,проверю ,что бы обвес хоть как то работал. На хороших пинах. И отпишусь. У меня есп 38 пинов. Все равно на макетке ,паять буду ,там пины перепаять не долго.Я только не понял ,там тм 1637 ,в двух вариантах, для чего?
 
Изменено:

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Да конечно. На кдн лампе ,8266 ,без проблем ,проверенно временем, крутиться полный фарш. На таких пинах. А0-микрофон ,D0-CLK 1637,D7-DIO 1637 ,D5-кнопка энк. ,D1-DT крутилка энк. ,D2- CLK крутилка энк. ,D3-матрица ,D4-TX mp3 ,D6-RX mp3 ,D8-упр. транз. N-канал .100% пины. В мастер ничего нового не сливали, проверять? Завтра или послезавтра паять ,сяду
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
В мастере нет, там только мелкие ошибки. Огонь поправил последний столбец потухший, но не залил еще.
Тестируйте feat ветку. Ща готовлю настройку гпио из вебморды для периферии. Опять, блин, спотыкаюсь об устаревшее ядро на 8266
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Ветка фит. Эффект 255 осциллограф ,наглухо вешает лампу. Я там еще в исуе ,накидал по мелочи.
 
Изменено:

vortigont

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

dina

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

vortigont

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

vortigont

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

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, в смысле тм, энкодера нет? У меня на столе лежит макетка с тм, работает на фит ветке. С 3мя пикселями из 256 проблема? Излагайте мысли яснее :)
Поправил там еще пару эффектов, выгрузил в обе ветки, смотрите.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Скачал , залил, в конфиг файле , при акктивации тм1637 и энкодера ,не дает прописать пины , не активно. И на матрице 1 пиксель не горел,2 пиксель мигал. Эффекты крутились ,полазил по меню , они вообще стали переключаться , каждые 2 секунды сами.Как то так.Завтра спаяю ,капитально ,буду шить,если все нормально. Из какой ветки шить? Буду делать полное стирание.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
в конфиг файле , при акктивации тм1637 и энкодера ,не дает прописать пины , не активно
я не понимаю смысла этой фразы. Файл user_config.h это текстовый файл, прописывайте туда что угодно, что там может быть неактивного в текстовом файле? Более того это ваш конфиг файл, он не меняется при переключении веток. С каким конфигом собираете мастер, с тем же собирайте и фит.
При сборке feat ветки обязательно надо перезалить файловую систему без сохранения json конфигов, т.к. там используется другой фреймворк EmbUI и их конфиги несовместимы.
Перед сборкой желательно обновлять зависимые библиотеки командой pio pkg update.
Так же, желательно, очистить кеш браузера.

Если хотите потестировать 8266 с новым ядром на фит ветке, то создайте в папке проекта файл user_test.ini со следующим содержимым
user_test.ini:
[env:8266newcore_oldlib]
extends = env:esp8266
platform = espressif8266
lib_deps =
    ${libs.common}
    me-no-dev/ESPAsyncUDP
    https://github.com/FastLED/FastLED.git#3.4.0

[env:8266newcore_newlib]
extends = env:esp8266
platform = espressif8266
lib_deps =
    ${libs.common}
    me-no-dev/ESPAsyncUDP
    https://github.com/FastLED/FastLED.git
затем можно собрать и залить 2 разных варианта окружений 8266newcore_oldlib и 8266newcore_newlib. Подключенная периферия и прочее не интересует, смотрите только как работает матрица, есть ли артефакты, вспышки в разных режимах и пр., остальное неважно.