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

Комментарии

Andron-65

★✩✩✩✩✩✩
18 Май 2020
71
18
@vortigont, Отличные новости. На пару дней выпал из темы. При первой возможности оттестим . Думаю лед тронулся а скоро еще и Dina подключится. Думаю информера с эффектами и переходами еще нет ни у кого
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@vortigont, Ко мне едут панели 64х32 и 64х128. Когда лампу тестить ? Фит ветку ?
ну я же выше все расписал - код в ветке hub75. В ветку feat, я пока ничего не скидываю. Модель разработки будет немного другая - какие-то наработки буду публиковать в отдельных ветках и потом сбрасывать в мастер-ветку.

А что за странные панели 64х128? Вообще сразу предупреждаю, с этими панелями гемора на порядок больше чем с адресной матрицей, т.к. их разных видов на разных чипах пруд пруди. Плюс китайцы как хотят меняют организацию строк в них. Охватить весь этот зоопарк практически нереально. Я насмотрелся на это когда кодил вышеуказанную библиотеку. Кстати, её походу тоже придется переписывать в обозримой перспективе. В текущем виде она неудобная для использования в наследуемых классах. Но там видно будет. Это, пока пробный шар.
Дальше в планах написать какой-то набор классов для наложения текстовых слоев с эффектами, многовато работы получается, по времени не знаю сколько займет. Матрица 16х16 для отображения текста выглядит совсем уж убого, поэтому сначала надо бы запустить HUB75 панели или еще какой-то дисплей.
 
  • Лойс +1
Реакции: Andron-65

Andron-65

★✩✩✩✩✩✩
18 Май 2020
71
18
@vortigont, Проект собирается к вай фай подключается. Матрица отображает эффекты, правда при выборочной проверке не все идут. ( это понятно эффекты под другую матрицу ) . При смене эффектов остается предыдущий, а текущий эффект как бы постепенно вытесняет предыдущий. . Но думаю самое главное что матрица отображает . Думаю для вывода бегущих строк в информерах будет нормально . Попробовать бы пробные часики на этой матрице а там и до полноценного информера не далеко
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Хех, круто! Вслепую с 1го раза заработало :))) значит в целом архитектура выбрана верно. Попробуйте еще "рисование" работает или нет, проверить работу с оверлеем.

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

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, вконтакт запрещает просмотр страниц для незарегистрированных пользователей, поэтому ссылка для меня не несет никакого смысла.
 

Andron-65

★✩✩✩✩✩✩
18 Май 2020
71
18
@dina, Там как раз матрица 64 на 128, 1/32 скан., я его собирал. Так все работоспособно. Единственный минус скорость бегущей строки очень маленькая. И автор сказал что увеличить невозможно.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Матрица 16х16 хаб 75. Эффект 1 ,не горят 2 верхних ряда пикселей. Эффект 24 , до 15 мячиков все нормально ,после 15 эффект сбиваеться ,мячики прыгают с краю матрицы (реулировка чекрыжика масштаб). Эффект 25 остаються артефакты ,от предыдушего эффекта.Эффект 44 ,просто заливка матрицы одним цветом ,эффекта нет.Эффект 54 ,темная матрица ,эффекта нет.Эффект 250 (часы) перезагрузка. Эффект 255 (осциллограф) ,просто прямая линия ,не работает.
 
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
добавил регулировку яркости к hub75 панели, очистка дисплея при смене эффектов тоже должна работать. @Andron-65 проверьте по возможности.

@dina, спасибо. Вы бы хоть по абзацам разделили свое сообщение.

Эффект 1 - покрутите ползунки, я х.з. какая там логика, но на значениях по-умолчанию вся матрица горит, масштаб 127, смещение 1.

Эффект 24 - ну а как вы предлагаете разместить больше 16 мячиков на матрице шириной в 16 пикселей? Можно, конечно, сделать что бы больше 16 значение полозка игнорировалось, но то так, косметика.

Эффект 25, хорошо, добавлю очистку при загрузке.

Часы битые, чинить не буду пока не сделаю нормальный набор средств для наложения текста со шрифтами и пр.

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

Остальные посмотрю по возможности.
 

vortigont

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

Вы обещали свое подключение микрофона рассказать.
так вы вроде же говорили что потыкали что-то у себя и все заработало?
У меня микрофон на gpio34, пин gain замкнут на Vdd, AR никуда не подключен, больше ничего не настраивал. В опциях "Коэф. коррекции нуля" - 1.2, остальное по нулям.
 
  • Лойс +1
Реакции: dina

dina

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

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,Одно чиним ,другое ломаеться ))) Ветка мастер.
Эффект 2 перезагрузка!
Эффект 6 заливаеться матрица одним цветом (наверно субпиксель)
Эффект 7 заливаеться матрица одним цветом (наверно субпиксель)
Эффект 23 мессиво цвета (наверно субпиксель)
Эффект 44 при размере кубиков ,больше 3х3 ,стройные ряды переодически сбиваються.
Эффект 59 при вкл чекрыжика субпиксель ,заливаеться матрица одним цветом. Ещё иногда криво стартует эффект ,выкл. вкл. лампу без обесточивания ,стартует нормально.
Эффект 63 при количестве 1 на регулировке ,матрица пустая ,при больше 1 всё нормально, змейки ползают.
 

Вложения

  • 6 KB Просмотры: 2
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

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

С новой либой получаются интересные штуки.
- добавил переключение между ws2812 и HUB75 бекэндом из вебморды. У хаб75 пока никаких настроек нет, при смене движка нужна перезагрузка.
- добавил поддержку организации холста из каскадных матриц. Блоки матриц можно выстраивать цепочкой по аналогии с тем как собираются диоды в одной матрице. Организация, направление и отражения для блоков настраиваются в вебморде так же как настраивается топология одной матрицы. Настроки применяются на лету.

1696277396562.png
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Не могу подключиться.
не можете подключить чем и куда? Откройте список WiFi сетей на устройстве, найтите точку лампы и подключитесь к ней, должна автоматом открыться страница с вебмордой.


Добавил страницу с описанием настройки матрицы/каскадов. У кого есть нестандартные/сборные конфигурации - потестируйте. На двух матрицах у меня норм работает. Некоторые эффекты корёжит, но то вопрос уже к эффектам.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Вэбморда не открываеться. Как то подключился клиент. В вэбе дикие тормоза. Во вкладке где данные время ,память,фс они пропадают и вэб не работает.
 
Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Устал я биться. Сделал полное стирание. Накатил по новой. Точка появляеться ,в морду захожу. Выбираю клиент ,ввожу данные сети и не подключаеться.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
у вас точно с wifi всё нормально? поднимите точку доступа на телефоне, попробуйте подключиться к ней
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, в логах постоянно сменяются события
ARDUINO_EVENT_WIFI_AP_STACONNECTED,
ARDUINO_EVENT_WIFI_AP_STADISCONNECTED,

значит плата подключается и отваливается от роутера. Что-то или с платой или с роутером или с эфиром у вас. Не знаю чем еще помочь.
 

PavelNMSK

✩✩✩✩✩✩✩
12 Сен 2023
17
5
А как сделать, чтоб настройки микрофона, плеера сохранялись при обесточивании? А ещё время не могу выставить в режиме AP с телефона
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@PavelNMSK, Это все пока в режиме теста. Нужно подождать ,тут один человек весь проект тянет.
 

PavelNMSK

✩✩✩✩✩✩✩
12 Сен 2023
17
5
Да функционал уже огонь! Кстати микрофон работает без каких-то танцев с бубном, а вот кнопку никак настроить не могу.(
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@PavelNMSK, а какие настройки микрофона/плеера у вас не сохраняются?
Время по-идее выставляется кнопкой "Set local time", будет взято время из браузера. Возможно там что-то сломалось, давно не проверял этот функционал. Проверьте, скажите как оно.

Функционал кнопки я не смотрел еще, руки не дошли.