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

Комментарии

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
Резистор помог ,только на 3.3кОм. на 12 пине. Запустился ,но с артефактом. На 10 и 4.7 кОм не стартовал. 12 пин ,также мешает старту , на TM Clk gpio и на TM DIO gpio . После загрузки есп 32, тм 1637 подтыкаешь ,работает. Грустно. Остались пины 12 ,22 ,16 ,17 ,5 ,14 ,15. Как мне их раскидать ,по переферии тм1637 ,энкодер ,плеер ? Что бы не мешало старту ,есп 32.
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
тм1637 использует i2c, ему не надо отдельные выводы.

Остались пины 12 ,22 ,16 ,17 ,5 ,14 ,15
в смысле "остались"? Если остались, берите любой и переносите на него 12й, что у вас не срастается я не пойму. 12й пин должен быть притянут к земле при старте, вешайте на него ту периферию, нога которой притянута к земле - проверить можно тестером.
Судя по тому куску даташита что вы кинули у конвертора есть нога OE, которая отключает подтяжку. Можно ею управлять через пин МОП-транзистора, который должен управлять питанием матрицы.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Победил ! 12 пин повесил на Пин TX плеера. Стартует ,вся перефирия работает. Ура!
QUOTE="vortigont, post: 157176, member: 18409"]
у конвертора есть нога OE, которая отключает подтяжку. Можно ею управлять через пин МОП-транзистора
Дело в том ,что на есп 32 38пин ,у меня все пины заняты. Хаб панель ,плеер ,тм 1637 ,энкодер ,микрофон. Ни одного пина на выход ,не осталось.:)
 
Изменено:
  • Лойс +1
Реакции: vortigont

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont, Можете в прошивку добавить камень esp32s3 N16R8. А то лежит без дела ,хочу на нем еще макетку сделать. Там с пинами есть ,где разгуляться ,на перспективу.
 

Andron-65

★✩✩✩✩✩✩
18 Май 2020
71
18
Снимок экрана (119).pngДоброго времени суток всем. Господа подскажите что за фигня выскакивает при открытии
 

vortigont

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

@Andron-65, наверное что-то глюкнуло при обновлении вскоде. Думаю перезагрузка компа должна помочь.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@dina,
под неё подходит lolin_s3

попробуйте такой файл создать user_my.ini

INI:
[env:my_s3]
extends = env:esp32debug
board = lolin_s3
;monitor_port = /dev/ttyACM0
;upload_port = /dev/ttyACM0

и потом собирать командой pio run -e my_s3
но там могут быть подводные камни с тем что при перезагрузке плата меняет ком-порт на CDC устройство. Я не знаю как под виндой себя платформио ведёт в этом случае. И потом лог на ней надо смотреть подключив ее через другой порт. Или менять флаги сборки чтобы отключить CDC устройство на USB. КОроче повозиться надо.
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,
Шил через вскоде .Прям там заменил боард=лолин s3.Ну вроде как прошилось ,через ком тип с. К вифи подключилось. Через ком тип с ,дебага нет. Дебаг идет через усб тип с. Повторно прошил через усб тип с ,прошивка аж влетела ,по сравнению с ком усб тип с. Мощяя. Вроде прочитал гпио 0 и 45 нельзя использовать. GPIO 39, 40, 41, 42 могут менять свое состояние при загрузке платы. GPIO 46 может использоваться только как вход. GPIO 38 встроенный светодиод. GPIO 48 адресный RGB светодиод. Может ,что по пинам Вы скажите ,что бы чудес не было ? Вопрос эти 38 и 48 можно использовать или светодиоды удалять ? Подключил тм 1637 тикает. Буду ещё одну макетку ваять. Вортигонт может на ней замахнетесь (в перспективе), на 128х64 и сд карту приделать, чтобы крутило какую нибудь красивость :love:
 
  • Лойс +1
Реакции: vortigont

vortigont

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

Andron-65

★✩✩✩✩✩✩
18 Май 2020
71
18
@andy040670,Спасибо переустановка помогла. Прошился последней прошивкой теперь все в норме . пины назначенные для хаб 75 сохраняются. Часы тетрис идут . правда что то у них ориентация нетрадиционная , приходится поворачивать матрицу вверх ногами. Часики прикольные. Эффекты переключаются , правда не все пробовал.
 

vortigont

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

vvip

★★★★✩✩✩
18 Дек 2018
469
206
@vortigont, так а для случая HUB75 координату по Y пересчитывать как 'Yo = HEIGHT - Y' когда картинка формируется?
 

vortigont

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

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
т.е. нулевой пиксель в левом нижнем углу холста, а не в левом верхнем.
У всех и всегда так было по умолчанию. Все эффекты так написаны, что "внутренняя" развертка слева на право, и снизу вверх.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
@vortigont,Вопрос. Шанс есть ,что панель 128х64 запуститься ,если я пин Е панели задействую ?На выходной спаять планирую ,макетку, на есп 32S3. И еще ,если я гпио 20 ,21 задействую ,дебаг на есп32S3,останеться ?
 

vortigont

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

P.S.
Я таки сделал шину сообщений для обмена событиями и данными между компонентами. Получается оч гибкая система для взаимодействия. Пока еще не выкладываю в общедоступный реп, т.к. комплексных изменений довольно много. Соберу что-то более более цельное потом выложу. Дальше будет проще возвращать вырезанные фичи.
 
Изменено:

dRocket

✩✩✩✩✩✩✩
11 Мар 2019
8
1
привет.
Спасибо, за поддержание этого варианта прошивки. Пару лет как пользуюсь ею на новый год (гирлянда на окона) отдельный респект за то что выложили самые древние прошики. Я использую их. 3.0.0. Более свежие к сожалению не могу адаптировать под готовую гирлянду но, если буду делать еще именно лампы, с выбором колебаться не буду))
Есть интерес разобраться. Буду пытаться понять как мне "mx.size()" поделить на 2 отрезка))
Самая печалька это тормозящий частотный анализатор на esp8266... Хотя может это я чет не так делаю/настраиваю
 

dina

★★✩✩✩✩✩
3 Окт 2021
359
91
49
По гпио точно не скажу
Да пофиг ,там пинов остаёться ,хоть попой ешь :)
Просто хотел дорожки ,покороче. Да вроде и так ,без помех ,на других камнях работает. Вортигонт добавьте в прошивку профиль есп32 s3 ,если нормально после тестов отпишу.