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

Комментарии

Брякомякс

★✩✩✩✩✩✩
14 Янв 2023
95
20
@vortigont, я неправильно выразился.
Плата-носитель.
Я находил герберы Монстра, но он под обычный Wemos, а не 32.
 

vortigont

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

Andron-65

★✩✩✩✩✩✩
18 Май 2020
71
18
@vortigont, Эффекты также виснут. Дошел до эффекта блуждающий кубик и все . Далее только выключение питания . и по новой. А может быть от кд эновских эффетов отказаться вообще . Они на этой панели как то куце смотрятся . да и зачем информеру эффекты от лампы . Также думаю найдется мало желающих рисовать на этой панели . Тогда зачем пункт меню рисование.. И хотелось бы понять смысл тестирования эффектов на этой панели. Хотелось бы увидеть вместо кучи куцих эффектов одну бегущую строку и часы ну а потом и парочку тройку или пяток идущих эффектов к этому добавить. Это чисто мое мнение. А что думает народ и наш уважаемый тестер Дина?
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
Я же уже объяснял - я не буду делать захардкоженый информер на одну бегущую строку и часы под конкретную панель. Их подобных уже навалом готовых есть, вы же сами ссылки приводили на проекты.
Я строю некий общий проект где "эффект" это абстрактный алгорим, который рисует что-то из пикселей. Это может быть эффект узоров, может быть "бегущая строка", может быть часы в виде "тетриса". Я предупреждал что это всё не быстро ибо накидать скетч под что-то бегущее конкретно в одном месте намного быстрее чем параллельно писать библиотеки, семейство наследных классов, вмену конфигурации налету. Но я не тороплюсь, работаю по мере наличия времени и интереса.
То что эффекты "виснут" или выводятся коряво это именно следствие того что их писали без оглядки на разноформатный вывод. Проблемные алгоритмы надо исправлять.
Хотите помочь - помогайте, проверьте проблемные эффекты на панели и на "ленте" с таким же размером как и панель, выясните где проблема, поможете съэкономить мне время на тестах. Вообще я не против выкинуть какие-то некрасивые/глючащие/непопулярные эффекты, но не по принципу "раз на панели не идут, значит выбрасываем". Это не значит что я кинусь их все чинить, но все равно этим нужно заниматься, сортировать, и раскидывать по приоритетам.
 

dina

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

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
В последнем обновлении с часами (прикольные) ,потерялся плеер , микрофон ,в вэбморде.(в конфиге акктивированно) и энкодер перестал работать. В предпоследнем всё было и работало. Рабочие эффекты ,не морозяться при переключении. Чекрыжик вкл. выкл. без откл. питания ,морозит эффекты. Артеффакты явные ушли. Но смущает одно панель Р2.5 ,работает почти чистенько ,а панель Р4 на одной половине ,как то подергиваеться ,двоиться что ли. Драйвера у обеих одинаковые 2037. Настройки ,Другие при перезагрузке не сохраняються. Пока это увидел.
 
Изменено:

bort707

★★★★★★✩
21 Сен 2020
3,046
909
Р2.5 ,работает почти чистенько ,а панель Р4 на одной половине ,как то подергиваеться ,двоиться что ли. Драйвера у обеих одинаковые 2037.
Драйвера это не все. Во-первых, на каждой панели как минимум по три типа микросхем - драйвер, мультиплексор и буфер. И указывать их надо все :)
Но в вашем случае, судя по тому что картинка есть, но дергается - дело либо в контактах, либо в логических уровнях. HUB75 протокол очень чувствителен к плохим контактам. потому что там используются высокие частоты вплоть до 25 МГц. И еще - поскольку логика панелей рассчитана на 5в, некоторые панели могут неустойчиво работать при логических уровнях 3.3в
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@bort707, Да ,Вы правы 2037и 74hc245 одинаковые. А другие TC 7262 и RUC7258 ,я так понимаю буфер?.Ну контакт ,я думаю можно исключить ,в другом проекте где нет эффектов ,работает нормально.
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
2037и 74hc245 одинаковые. А другие TC 7262 и RUC7258 ,я так понимаю буфер?.
Нет, это74hc245 буфер, а TC 7262 и RUC7258 - мультиплексоры(или декодеры - отвечают за переключение строк).
7262 и 7258 - мультики одного типа, так что от них вряд ли будет разница.
Да и как я писал раньше, если б дело было в чипах - у вас бы одна из панелей просто не работала.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
7262 и 7258 - мультики одного типа, так что от них вряд ли будет разница.
Тем не менее ,разница заметна. Попробывал питанием поиграться при 4.4 в (меньше не даёт бп) ,картинка получше ,чем с питанием 5в. Чет даташиты не нашел на них почитать.
 
Изменено:

vortigont

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

Чекрыжик вкл. выкл. без откл. питания ,морозит эффекты
это есть, да, забавно. Посмотрю позже.

Вообще по панелям и качетву картинки на них это тема бесконечная и как таковая к коду проекта имеющая мало отношения. Тут большая часть это проблемы электрики и помехи - преобразователь уровней и хороший шильдик может решить кучу проблем. С программной части тут все зависит от библиотеки. Единственное что могу сделать, это добавлю настройку параметров либы, как то фазу тактирования, банкинг и что там еще было. Может это поможет, может нет. В любом случае это все надо обсуждать в отрыве от кода самого проекта. И панели лучше гонять и тестировать на примерах от самой либы для чистоты эксперимента. Например работа i2s может давать сильные помехи на WiFi и это зависит опять же от конкретной платы, её разводки и проводов.
Можно подумать и заменить либу на другую. Возможно работающая на гораздо меньшей частоте 2dom/PxMatrix даст более стабильную картинку. Но тут еще вопрос насколько она будет сравнима по цветам и скорости обновления и насколько много она будет жрать ресурсов без ДМА, останется ли их на работу всего остального. В общем желающим поэкспериментировать тут непаханое поле.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Попробую перепрошить ,может плеер и микрофон появяться. На одном и том же шильде ,панели по разному работают. Если доп. настройки не помогут ,то это конечно печально... Тут может получиться тупик. А именно что информеры-часы ,с более простым графическим отображением ,будут намного привлекательнее ))) Большая проблема ,будет развести плату ,с высоко-частотными участками. У меня сейчас едет Р3 и Р4 гибкая панель ,будет целый зоопарк. Попробуем набрать статистику. П. С. Перезалил прошивку и фс ,плеер ,микрофон ,энкодер не появились.
 
Изменено:

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Вот так у меня ,на последней. Настройки ,Другие изменения не сохраняються. ТМ1637 стартует выкл.(яркость 0) Включишь работает ,до следущего передергивания питания. Ну и чекрыжек вкл. откл. морозит эффекты, это из явного.
 

Вложения

Изменено:

vortigont

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

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,Пардон ,все появилось. Хотел облегчить себе задачу))). А как мне тогда 2 разных конфиг файла обозвать ,что бы я их подкидывал готовые в вс коде. Для 16х16 и 32х64. У меня там пины энкодера отличаються. И в догонку настройки плеера не сохраняються ,после обесточивания. Очищать лампу чекрыжек ,морозит эффекты.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina, можно.
Создаете в платформио два профиля отдельных и в build_flags добавляете -DCUSTOM_CFG='"user_cfg_my01.h"', в другой профиль -DCUSTOM_CFG='"user_cfg_my02.h"'

Остальное пока в процессе, вожусь с переименованием секций, оттуда всё и лезет.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Мне легче 7 пинов перепаять. Сделаю одинаковые пины ,на 2 шилдах.Чем вопросами засыпать.
 

Andron-65

★✩✩✩✩✩✩
18 Май 2020
71
18
@dina, Какой блок питания . У меня от роутера 12 вольт и понижайкой до 5 все четко ни каких подергиваний нет на рабочих эффектах. Все информеры также с блоком от роутера и понижайка все четко. Даже от смартфона чисто пробовал там 5.1 вольт выдает информер с проекта Игоря Шилова совершенно спокойно работает. Помню года два назад с китайским блоком питания 5 вольт было такое в верхней части экрана типа мельтешенье и произвольное вспыхивание пикселей блок заменил и все. Попробуй.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@Andron-65, Не в питании дело ,у меня питаний куча всяких. В проекте Шилова ,у меня все панели без проблем работают ,с разными питальниками. Вортигонт правильно сказал ,про согласование уровней ,частот обновления и разводки плат. Позже подумаю как свою макетку переразвести. У нас частоты и скорости алгоритмов, покруче будут. Вот и 2 панели ,по разному работают. Скоро еще 2 приедут. У китайцев целый зоопарк панелей на разных чипах и не факт ,что через год можно будет купить панели ,на таких же чипах. Буду глядеть.Перепаял макетку ,теперь 2 одинаковые для 16х16 и 32х64.
 
Изменено:

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Вообщем поглядел я повнимательнее 2 панели своих Р4 ,купленные у одного продавца. Одна панель относительно нормально ,с нашей лампой работает и в другом проекте. Вторая в другом проекте нормально работает ,в нашем с косяками. Так вот у неё на 1 микросхему меньше 74нс245 ,чем у другой нормальной. Вот таки дела.
 
Изменено: