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
свежие к сожалению не могу адаптировать под готовую гирлянду
а в чем проблема-то? У вас куски ленты на разных пинах висят? Версия 3.0.0 и 8266 с текушем проектом уже не совсем не актуальны.
 

dRocket

✩✩✩✩✩✩✩
11 Мар 2019
8
1
а в чем проблема-то? У вас куски ленты на разных пинах висят?
Ага. На разных.


Версия 3.0.0 и 8266 с текушем проектом уже не совсем не актуальны.
Это я понимаю. до 3.11 я просмотрел код в части конфигурации... Уже там прогресс ого-го. Когда собирал проект впервые ещё из старой ветки, там конечно черт ногу сломит... В 3.11 уже все причёсано)) приятно читать)) спасибо вам, за такую педантичность!
Я точно сделаю и на esp32, но пока творческий кризис)) нет идей зачем оно мне..
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,Вообщем откладываем есп32s3. Бардак там полный. Энкодер подключил на 47,21,38 пин ,работает. 48 и 37 для него не подошло. Дисплей на 35 и 36 пин ,работает. Только память из фс куда то делась (было 8 метров ,после подключения 0). Плеер 13 и 14 пин ,статус конектед, не играет.Панель не подключал. Еще прикол после подключенного дисплея ,если его физически выдернуть ,есп32s3 не работает в вэб морде не грузиться ,подключишь работает ))) Заморачиваться пока не вижу смысла.:mad:
P.S могу пины для панели поискать ,которые мешать старту не будут. Еще вопрос ,у обычной есп32 на пины 34-36,39 энкодер можно повесить?
Запустил на обычной есп32 ,панель 128х64. Много эффектов работает. Некоторые не адаптированные ,либо криво ,либо черная панель. Есть которые перезагружают есп. В целом не плохо ,но скорости не хватает ))) Если видео интересно сделаю.
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
у обычной есп32 на пины 34-36,39 энкодер можно повесить
да, можно если на энкодере есть подтягивающие резисторы.

В целом не плохо ,но скорости не хватает
ну это уже надо математику эффектов сильно оптимизировать или отдельную видеокарту :))))
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Переписываю драйвер дисплея ТМ1637 и возник вопрос - в старой прошивке зачем-то есть переключатель 12/24-х часовой формат вывода веремени. Я понимаю что на западе использую 12 часовой, но при этом на экране должны быть еще буквы AM/PM. На этих дисплеях их нет, соответственно вопрос - зачем козе баян? Кто-то может предложить сценарий использования 12 часового формата вывода времени на таком экране? Я пока оставлю эту опцию, но мне просто интересно?
 

vvip

★★★★✩✩✩
18 Дек 2018
469
206
@vortigont, ну, обычно пользователь видит что за окном - утро или вечер. Так что AM/PM - чистая формальность
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
да, можно если на энкодере есть подтягивающие резисторы
Это хорошо попробую,а то голову сломал ,где ещё пины взять. На освободившиеся попробую пин панели Е повесить.
или отдельную видеокарту :))))
Дак ещё одну есп прицепить ,как видеокарту :)
переключатель 12/24-х часовой формат вывода веремени
Да нафиг не нужен.
видел экранчики с буквами а/р, но вот где - не помню
По моему на видиках или двд или на микроволновках есть.
ну, обычно пользователь видит что за окном - утро или вечер
Я по молодости ,когда водку пил ,бывало проснусь вечером и на работу приходил ,сторож меня домой отправлял или дальше водку с ним пили ))). Вот так утро ,с вечером путал и окно было ))):)

P.S Вообщем докладываю. Энкодер на пинах 39 ,35 ,36 прекрасно работает. По подключению хаб панели 128х64 ,не пойму где засада. Подключил с конвертерами уровней ,на свои проверенные пины которые работают на 64х32 панели. R1-0 G1-19 B1-2 R2-17 G2-4 B2-25 A-26 B-27 C-23 D-18 CLK-13 OE-33 LAT-32 ,пин Е подключал на 5 ,14 ,15 пины . Криво работает панель.

Пересобрал макетку от другого проекта на 128х64 панели. Там Автор выстрадал пины, пока панель не заработала. Подключил 128х64 по этим пинам без конвертера R1-25 G1-26 B1-27 R2-17 G2-18 B2-23 A-12 B-16 C-13 D-14 E-5 CLK-15 OE-33 LAT-32. Панель прекрасно работает !
Плеер подключил RX-0 TX-4 работает. ТМ дисплей на 22 и 21 пин.Микрофон 34 пин. Энкодер 39, 35 ,36 пины. На есп 32 38 пин ,еще остались пины 2 ,15 ,19. Здорово. Вортигонт ,можете куда нибудь добавить ,2 дня корпел.

Теперь у меня есть ещё одна заряженная макетка для панели 128х64. На вопрос куда мне столько ,отвечаю ,у меня 6 панелей ,буду потом раздаривать ,все уйдет в пользу ;)
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

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

@dina, круто вы навалились :))) По глюкавым эффектам пишите или здесь или в ишус на гитхаб, попробую посмотреть.
По пинам можете в вики страничку обновить, сделать табличку. Укажите тип платы и пины, думаю всяко пригодится!

Следующим, наверное, возмусь за энкодер ибо там совсем бардак. Но чую это тоже не быстро будет.
 
  • Лойс +1
Реакции: wadimsuv и dina

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, С акктивированным энкодером ,прошивка не собираеться. С физ. кнопкой собралась ,кнопка реагирует на нажатия ,только пишет на дисплее -On- не отключая. В вэб морде кнопка работает.
Дисплей работает ,настройки яркости сохраняет ,например вкл 2 выкл. 1 ,но вэб морде если зайти всегда яркость вкл. 4 выкл.4. Ип адрес ,четко работает.Изменение яркости ,на дисплее ,четко отображаеться. Непонятно поведение строки при включении ,On и OFF. То бегает ,то статично.После перезагрузки бегает ,если какие нибудь манипуляции в настройке дисплея сделать и сохранить ,то статично. Так даже этот дисплей ,оживился ,Вы хорошо придумали 👍
Плеер статус конектед ,но не играет.
Еще прикол с джейсонами дисплей и гпио ,которые в дата добавляю ,пины применяються ,только у панели и плеера. У дисплея руками забиваю не применяються. Эффекты выборочно поглядел все работают.Пока все.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
спасибо за тесты.
С акктивированным энкодером ,прошивка не собираеться
а какие ошибки? У меня с CI проверке вроде собралось и с экодрером тоже. Вообще энкодер и кнопка это следующие кандидаты на переписывание ибо уже дальше это тащить в режиме совместимости невозможно.

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

поведение строки при включении ,On и OFF. То бегает ,то статично
хм... не заметил. При сохранении настроек драйвер дисплея переинициализируется, может это влияет. Гляну при случае.

Плеер статус конектед ,но не играет.
плеер я не трогал вроде

пины применяються ,только у панели и плеера
настройки дисплея тм теперь хранятся в отдельной секции в файле display.json вместе с настройками остальных диплеев. В gpio.json только ноги плеера остались пока не переделаю в свой конфиг.
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@vortigont,
Подскажите, а сколько по времени проходит калибровка микрофона? Или эта функция пока не сделана?
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49

Вложения

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Повторюсь Вы про панель 128х64 ?
ну да, где глючат там и пишите ) если на большой панели, то укажите что на большой

энкодер поправил, пробуйте.

Может сделают ,может нет. Бесполезная функция ,шумодавом сами можете отрегулировать.
согласен. когда-то работало, разницы до и после калибрации я не заметил, надо убрать кнопку что бы не смущала. Шумодав крутите в настройках.
 
  • Лойс +1
Реакции: dina

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Вообщем поведение строки ON и OFF ,нашел закономерность. В вэб морде кнопкой откл или вкл ,строка бегает. С энкодера откл или вкл ,строка статично. Я там на гит ,в исуе накидал ,по панели 128х64 :)
 

vortigont

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

А по вашим пинам для вики укажите хоть точно что за плата у вас, к чему относится распиновка, добавлю в вики.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Вот для информации ,может это Вам о чем нибудь говорит. Когда пины для панели 128х64 подбирал ,другой автор. Спасибо ему.
It does have some new limitations, mostly significant RAM overhead (hence no plans for AVR port) and (with a few exceptions) that all RGB data pins and the clock pin MUST be on the same PORT register (e.g. all PORTA or PORTB ,can't intermix). RAM overhead is somewhat reduced (but still large) if those pins are all in a single 8-bit byte within the PORT (they do not need to be contiguous or sequential within this byte, if for instance it makes PCB routing easier, but they should all aim for a single byte). Other pins (matrix address lines, latch and output enable) can reside on any PORT or bit.
Это по моему для библиотеки фастлед.
Может расшифруете ,я через переводчик ничего не понял.
А вот камень.
 

Вложения

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
@vortigont,
Посмотрите пожалуйста эффект (59. Узоры) не разворачивается на широкой матрице 20х15
 

vortigont

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

UPD: @dina на 128х64 эффекты будут падать из-за нехватки памяти. Большую часть имеющейся памяти занимает буфер ДМА плюс буфер холста. Некторые эффекты для своей работы аллоцируют дополнительно еще фура пропорционально размеру экрана.
Напр. та же купина аллоцирует два буфера WxH под флоаты, т.е. для 128х64 это будет 64 кб :)
Выше головы не прыгнешь к сожалению.
Масштабирование постараюсь поправить, но мне видно только четвертушку )
 
Изменено:
  • Лойс +1
Реакции: dina

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,
128х64 эффекты будут падать из-за нехватки памяти
В дальнейшем на есп32 s3 N16R8 ,реально ?
Я конечно в этом не понимаю ,но эффект огненная лампа ,без проблем работает на 128х64. По картинке у них на мой взгляд ,много общего )))
Да больно то не стоит заморачиваться ,в дальнейшем на 128х64 ,если будет возможность ,загнать по больше ,буквенно-циферной информации ,с легкой графикой 👍
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
В дальнейшем на есп32 s3 N16R8 ,реально ?
Ну в принципе да реально до тех пор пока DMA буфер панели влезает в основную память. Дополнительные буфера можно аллоцировать из SPI-RAM. Но это надо будет заморочаться со своим аллокатором для STL объектов. Оставим это как задачу со звёздочкой )

Я там подрихтовал пару мат функций под большие экраны, эффект "Радар" начал что-то показывать на четвертинке панели. Посмотрите что получилось. Дальше пока особо сильно потрошить не хочу, дабы не покорёжить то что уже норм работает.