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

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

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

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

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

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



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

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

ESP8266 vs ESP32

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

Бинарные сборки
Проект можно прошить в чистую плату используя готовые сборки со страницы выпусков. Бинарные образы подготавливаются и прикрепеляются к выпускам начиная с 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) для своей лампы см страницу проекта на Гитхабе.

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

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

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

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

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


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

Комментарии

dina

★★✩✩✩✩✩
3 Окт 2021
333
84
49

@vortigont,
У меня условно 2 вида дисплеев 0.56 и 0.36 дюйма ,отличаються размером цифр. Оба одинаково себя ведут.Попробуйте у себя сделать штук 5 ,передергиваний питания ,с интервалом пол минуты. Но опять же , с горящеми точками на старте иногда начинают мигать.Если же на старте не горят ,то четко работают. Как то так.
 
Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
333
84
49
Эх... ломать так ломать...
По тестам 8266 ,преоритет из какой ветки ,фит или легаси? На выходные готов потестить, с полным обвесом. Еще заметил ,мастер есп 32 , дисплей чуть заметно ,подмаргивает.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
@dina, тестируйте мастер или фит, они сейчас почти одинаковые, я буду чаще их сливать.
В дисплей я добавлял команду сброса экрана, но так и не понял сбрасывает она эти точки ли нет.
 

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
Потихоньку копаюсь с управлением яркости в отдельной ветке.
что уже запланированно:
- будет выкинуто переключение на глобальную яркость и яркость, хранимую в каждом эффекте
- будет реализован какой-то механизм коррекции яркости для каждого эффекта
- регулятор яркости примет какой-то человекоориентированный диапазон 0-10, 0-100, или что-то в этом роде

по поводу коррекции это довольно сложный вопрос ввиду того что воспринимаемая глазами яркость нелинейна.
Вариант ввести статическое смещение величины не подходит совсем. Вариант ввести какой-то дробный коэффициент будет так или иначе плохо работать либо в темной либо в яркой части шкалы.

Пока остановился на варианте ввести некий набор кривых для коррекции яркости - линейная, экспонента, cie1931 и пр. и возможность назначать кривую на каждый эффект. Получится может быть не так гибко, но достаточно предсказуемо по всей шкале яркости.

Если у кого есть конструктивные идеи/пожелания высказывайте, приму в учёт. Желательно высказываться в алгоритмическом ключе, а не "мне удобно и хочу красиво".
 
  • Лойс +1
Реакции: dina и shax

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
Добрый день всем. Мастер ветка. Точки часов неподвижны. Нет возможности в веб назначить пин мосфета ( у меня на печатной плате GPIO 4).
 

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
Нет возможности в веб назначить пин мосфета
в смысле? нет формы настройки, в ней значения не меняются, не применяются или что? Люди, вы хоть свои сообщения перечитывайте со стороны как это можно понять что вы сказать-то хотите.

Точки часов неподвижны
точки, да, какая-то проблема есть, пока руки не дошли
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
- будет выкинуто переключение на глобальную яркость и яркость, хранимую в каждом эффекте
Я уже высказывался по этому поводу.
ESP, IoT - WiFi лампа-будильник. Обсуждение прошивки FireLamp_EmbUI | AlexGyver Community
Без этого не вижу смысла использовать именно эту прошивку, так как таких уже море.
 

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
@andy040670, так вам шашечки или ехать? Есть желание именно сидеть и крутить каждый эффект отдельно или избавиться от этой необходимости вообще?
 

dina

★★✩✩✩✩✩
3 Окт 2021
333
84
49
Я в исуе писал ,что даже акктивация микрофона ,накладывает свой отпечаток в эффекте на яркость .Предлагаю выкинуть микрофон из таких эффектов. С микрофоном оставить ,радуга , цвета они неплохи в режиме цветомузыка ,анализатор ,осциллограф конечно тоже оставить.Ну еще более внимательно поглядеть. Мож кто крутую цветомузыку предложит отдельным эффектом.Если все подправить ,что я написал в исуе ,у нас будет рабочая кдн прошивка. Но благодаря Вортигонту (рабу пришельцев , халф лайф...) ,с пинами в меню ,мы уже ушли дальше !!!
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
ну и хрен с ней с этой яркостью тогда... пусть остается как есть в разнобой везде если так удобнее, что-нибудь другое посмотрю.

@dina, вас я тоже не понял - а что вам мешает не включать микрофон на этих эффектах-то? Кому нравится тот включит.
 

dina

★★✩✩✩✩✩
3 Окт 2021
333
84
49

@vortigont,
Да вообще ничего не мешает ,я просто хотел указать и на эту зависимость яркости (дискуссия же возникла)
 

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
@dina, ну да, на яркость влияет. Собственно есть только 2 варианта воздейтсвия микрофоном на эффект - на яркость или на появление каких-то объектов. Собственно цветомузыка это и есть отображение амплитуды/спектра на яркость/цвета.
Ну если не загоняться по совсем уж каким-то особым вариантам визуализаций.

Нормальная цветомузыка/анализатор есть вот в этом проекте, но прежде чем что-то вносить новое нужно раскидать текущий бардак с затычками в виде тех же особых эффектов, контролов и непонятно какими яркостями. Иначе это будет обрастать еще большим количеством затычек.
 

dina

★★✩✩✩✩✩
3 Окт 2021
333
84
49
Мастер 8266. Один раз даёт ,подключиться к точки доступа (4.1) ,пароль сети принимает.Далее в режим клиента не переходит.Остаёться в режиме точки доступа ,но при попытке повторного подключения ,сбрасывает подключение. Вообщем подключиться не возможно.
 

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
@dina, вы, наверное, пароль неверно ввели. Я знаю эту проблему, у есп начинает жутко лагать точка доступа когда клиент пытается подключиться к несуществующей сети или с неверными кредами. Точка вас со временем пустит - нужно долго долбиться в неё.
Я реализовал автомат который убирает эту проблему, отключая клиента при неудачных коннектах. Но он основан на событиях, которые есть только в есп32, входит в более новую ревизию моего фреймворка, лампа сейчас на предыдущей, совместимой с 8266. Наверное можно и для 8266 прикрутить какой-нибудь таймер, но мне не хочется время на нее тратить. Уйдет с отказом от 8266
 

dina

★★✩✩✩✩✩
3 Окт 2021
333
84
49

@vortigont, Я 2 раза с полным стиранием пробывал. Что тогда ,забиваем на 8266 ? Мне если честно ,не охота возиться с неактульной платформой. Для кого ? Как доедут одноядерные есп 32 s2 и с3 ,мож там ковырнуть ? Они у меня тоже будут для тестов.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
я высказал предположение - возможно у вас эта проблема, возможно другая. Точнее без более подробного описания и тестов ничего не скажу.
Если неверно ввели пароль, AP капризничает, но зайти в вебморду и подключиться к сети таки можно с какой-то попытки. Из вашего описания непонятно к чему вы не можете "подключиться" - к самой wifi сети, браузером к вебморе или к свой вифи сети.
Если хотите покопаться - соберите версию кода с логом и снимите лог сообщений из консоли, будет больше данных.
Если лениво, то тестируйте на есп32 какой-нибудь - всяко польза. Я там часть открытых вами багов уже закрыл (пока только в фит ветке) - спасибо!
 

dina

★★✩✩✩✩✩
3 Окт 2021
333
84
49
Вот. Какая то дата ,там левая.
 

Вложения

  • 22 KB Просмотры: 4
Изменено:

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
Мастер 8266. Один раз даёт ,подключиться к точки доступа (4.1) ,пароль сети принимает.Далее в режим клиента не переходит.Остаёться в режиме точки доступа ,но при попытке повторного подключения ,сбрасывает подключение. Вообщем подключиться не возможно.
Подтверждаю проблему, присутствует на всех ветках.
@vortigont, может 8266 пересадить на RTOS и забыть о не совместимости? Потом если и будут проблемы, то они будут общими с есп32.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
@andy040670,
под rtos sdk 8266 не работает ардуино ядро, что лишает всю затею какого либо смысла. И вообще я не уверен что работы на портированием есп-идф и ртос не заморозили, там уже 100 лет ничего не обновляли.
Но конкретно эта проблема чисто аппаратная - при одновременном включении ап и попытках подключения клиента или сканирования, радиомодуль скачет между каналами и АП теряет связь с клиентом. Как-то так. При повторных неудачных попытках клиента надо отключать что бы все не тупило. Есп32 тоже подобным страдает, но она выдает подробные события по файфай, ею проще управлять асинхронно.

полез воспроизводить случай dina, наступил на еще одну проблему с 8266 - контроллер тупо валится на WLED анонсах, т.е. сразу после запуска через пару секунд. Раньше проверял или нет, не помню, посмотрите у себя кто еще на ней сидит.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
339
108
53
полез воспроизводить случай dina, наступил на еще одну проблему с 8266 - контроллер тупо валится на WLED анонсах, т.е. сразу после запуска через пару секунд. Раньше проверял или нет, не помню, посмотрите у себя кто еще на ней сидит.
Вот- вот, я не стал просто описывать события, так как @dina, уже привёл лог.
под rtos sdk 8266 не работает ардуино ядро, что лишает всю затею какого либо смысла. И вообще я не уверен что работы на портированием есп-идф и ртос не заморозили, там уже 100 лет ничего не обновляли.
RTOS SDK 3.4 вполне нормально работает и с фастлед так и адуиноядром, может и есть нюансы, они не критичны и вполне решаемы. Практически всё что можно запустить на есп32 можно запустить и на RTOS_8266.
Это конечно выводы дилетанта, но....)))
Espresiv Git
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
943
507
Saint-Petersburg, Russia
кароче повозился немного и вырубил WLED для 8266. Падает оно где-то в потрохах mDNS либы. Терять время на отладку у меня желания нет, я лучше esp32-s3/c3 погоняю или настройкой матрицей из UI займусь.
В ближайшее время оформлю отдельную ветку от текущего состояния с 8266 дабы при наличии времени/желающих с этим возиться можно было вернуться и далее занимаюсь только с оглядкой на есп32. Профили 8266 из платформио уберу когда проект перестанет собираться под 8266.

@andy040670, я посмотрел на состояние ртос СДК, он скорее мертв чем жив.
Последний релиз был 2 с лишком года назад. За 23й год было сделано пяток комитов, за весь 22й может пару десятков.
Каких-то достоверных данных о том как собрать ардуино ядро под ртос сдк и, тем более, запустить там фастлед я не нашел вообще. Опять же не вижу смысла тратить на это время в ущерб более полезным вещам.
 
Изменено: