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
@andy040670, ну норм! я специально оставил что бы было видно нормально что происходит. Проверял в вокви эмуляторе атмеги, там так себе эмуляция. Волью изменения с другой веткой с прочими наработками, тогда уберу покадровый вывод.
 
  • Лойс +1
Реакции: andy040670

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
ну это, похоже, был далеко не последний хитрый план хождения по своим же граблям.
* Ясно, человек так и не понял зачем движок рисования переписали, и зачем слепой светодиод. *
Уф, все нормально, план не раскрыт, расходимся. 😁
 
  • Лойс +1
Реакции: vortigont

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@vortigont, сменив кодовую страницу билдера на utf (wget из той же оперы), вы послали огромное количество пользователей win7-8.1, и даже ранних версий 10, в лес бабочек ловить. С чем вас и поздравляю. )
Мне ваша манера, не думая "зачем, почему так?", рубить лес от плеча, с размахом, все больше нравится. Продолжайте. 👌
 
Изменено:
  • Лойс +1
Реакции: Дрон

vortigont

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

Мне ваша манера, не думая "зачем, почему так?", рубить лес от плеча, с размахом, все больше нравится. Продолжайте. 👌
О Зевс громовержец... кдн'а все подрывало что он один был думающий и разбирающийся, и вы туда же...
 

vortigont

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

@andy040670 я вам там работы подкинул в feat ветке. Довольно много изменений в методах отрисовки точек, всё собирается и работает, но как выглядит я понятия не имею. Сильно сомневаюсь что где-нибудь не скосячил. Если прям будет полная чехарда, надо будет бисектом искать в каком комите сломалось.
Если на вид все норм, то посмотрите внимательно на эффект 28 "Кометы", это пробный шар. Я переписал в нем метод работы с буфером генерации шума и отрисовки результата. Теперь там вместо покадровой аллокации памяти под буфер/копировани/деаллокации используется атомарное переключение между 2мя буферами. Мне надо понять не поломало ли это реальный вывод прежде чем в других местах переписывать по похожей схеме.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
@andy040670 я вам там работы подкинул в feat ветке. Довольно много изменений в методах отрисовки точек, всё собирается и работает, но как выглядит я понятия не имею.
Эффекты имеющие проблемы:
4. "Конфетти" - эффект стартует, постепенно затухает, исчезает.
17. "Пятнашки" - двигается один кубик, туда, сюда.
28. "Кометы, Парящие Огни +" - не правильное отображение (светятся только одна строка светодиодов через один меняя цвет).
51. "Звёзды" - опять появился мусор, но в меньшей степени.
53. "Ферверк" - нет вспышек. (выкрутил на полную частоту и количество, вспышки появились, но ооочень редко).
59. "Узоры" - полностью сломались.
65. "Лабиринт" - в лабиринте ничего не двигается.
К всему прочему опять появились вспышки артефактов при смене эффектов или изменении яркости.
 

vortigont

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

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
так а остальные эффекты вы хотите сказать что на вид норм или не смотрели?
Вроде нормально с настройками по умолчанию, ползунки не дёргал кроме:
53. "Ферверк" - нет вспышек. (выкрутил на полную частоту и количество, вспышки появились, но ооочень редко).
 

vortigont

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

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
А с "кометами" там как, на всех эффектах одинаково одна строка светится? Потыкайте ползунок который их переключает.
Первый под эффект - переливается разными цветами 4 пикселя в центре матрицы.
Второй под эффект - нормально.
Третий под эффект - строка по центру матрицы переливается разными цветами.
Четвёртый под эффект - как и третий, но сверху.
Пятый под эффект - возможно правильно работает, не помню как должен.
Шестой под эффект - возможно тоже правильно работает.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
541
Saint-Petersburg, Russia
@andy040670, нашел ошибку. Залил правку, глядите теперь.
Там еще похоже какой-то косяк в коде инициализации этой кометы
C++:
    e_x[i] = random16();
    e_y[i] = random16();
    e_z[i] = random16();
    e_x[i] = 6000;
    e_y[i] = 6000;
одни и теже переменные инициализируются случайной величиной и константой. Не знаю что там должно быть, я заменил переменные как подсказала логика, посмотри как это на внешний вид отразится.

На этом же алгоритме переписал эффект Огонь2018, циклические побайтовые копии заменил заменой указателей и еще по-мелочи. Мог напутать с направлением заполнения массивов, поглядите этот эффект тоже как сейчас выглядит.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
нашел ошибку. Залил правку, глядите теперь.
Ничего не изменилось.
На этом же алгоритме переписал эффект Огонь2018,
Теперь нет языков пламени.
Третий под эффект - строка по центру матрицы переливается разными цветами.
Четвёртый под эффект - как и третий, но сверху.
Тут тоже должны быть всполохи пламени.
 

vortigont

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

vortigont

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

vortigont

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

vortigont

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

Нашел ошибку в Огонь 2018, запустил в эмуляторе. Не знаю как он выглядит на матрице, но в масштабе 64х64 выглядит довольно странно :)
Толи это проблема при работе на большой кадр толи так и есть на самом деле.
@andy040670 проверьте по возможности, теперь похоже стало на то что было?

1681907408350.png
 
  • Лойс +1
Реакции: andy040670

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Не знаю как он выглядит на матрице, но в масштабе 64х64 выглядит довольно странно
На 16х16 выглядит нормально.
проверьте по возможности, теперь похоже стало на то что было?
Вроде похоже, но физика какая то странная, направления хаотичные, в разные стороны. Может так и было, я уже не помню, но смотрится не очень.)))
Ещё бы убрать вспышки артефактов, при смене эффектов и регулировке яркости.
P/s
Загрузился из мастера, там огонь по лучше будет. Он выше, всполохи длиннее и отрываются от самого пламени, не так мельтешит.
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

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

Насчет вспышек пока не знаю куда смотреть, надо железо. С версией из мастера тоже теже вспышки наблюдаются или это из последний изменний проявилось?
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Насчет вспышек пока не знаю куда смотреть, надо железо. С версией из мастера тоже вспышки наблюдаются или это из последний изменний проявилось?
В мастере тоже есть, после последнего коммита, если не ошибаюсь, а в ветке feat были до коммита "Commits on Apr 12, 2023" потом норм и опять появились после "Commits on Apr 16, 2023", как то так.
 

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
Приветствую! А как вывести текст что-бы он просто стоял и не исчезал?
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
353
109
54
Приветствую! А как вывести текст что-бы он просто стоял и не исчезал?
А смысл? Текст в 99.9% случаев просто не влезет.
Ну если очень хочется, то в юзерконфиге есть такая строка:
C++:
// #define DEFAULT_TEXT_SPEED    (100U)  // скорость движения текста, в миллисекундах - меньше == быстрее
Раскоментируйте и измените значение например на 259200000 (строка не сдвинется трое суток), или на 0, но это не проверено, по идее должно работать.
 
Изменено:

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
@andy040670,
Ну мне надо вывести всего 4 символа на широкую матрицу (19х8). И они влазят. Ваш совет проверил -- ничего не изменилось. Строка как бежала так и бежит(
Есть еще идеи как остановить текст?