ESP, IoT WiFi лампа/гирлянда/информер ws2812/HUB75 - Обсуждение прошивки FireLamp_EmbUI

FireLamp_EmbUI - деполитизированный форк проекта "огненной" лампы (исходный проект FireLamp_EmbUI)

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

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




Внимание! Более актуальное описание и документацию можно найти на странице проекта в GitHub, шапка обновляется редко.
Так же рекоммендуется заглянуть в WiKi проекта, туда будет по мере возможностей собираться более подробная информация по функционалу лампы

Концепт
Исходный проект был значительно переписан и реструктурирован. В разработке основное внимание уделяется структуре кода, декомпозиции и объектоориентированности даже в ущерб функциональнсти и "фичам". Основная идея развития - вся конфигурация и управление периферией должна быть максимально доступна во время работы кода без необходимости пересборки всего проекта. Параметры в конфигурационных файлах и опции сборки сводятся к минимуму, упраздняются и заменяются настройками через WebUI.

ESP8266 vs ESP32

Разработка ведется только под контроллеры семейства esp32. ESP8266 морально устарел, было принято решение не тратить время на поддержку совместимости и уделить больше времени и ресурсов актуальной платформе. Последний стабильно работающий на контроллерах 8266 выпуск проекта - версия v3.1.1, исправления будут аккумулироваться в ветке legacy.

Как собрать проект
Для 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 - прошивка Фс
pio run -e esp8266 -t upload - прошивка
pio run -e esp8266 -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 esp8266 -t upload - собрать и записать версию esp8266, будет собрана облегченная прошивка без вывода отладочных сообщений через serial интерфейс Рекомендуется для повседневного использования, если нет нужды отлаживать работу лампы
  • pio run -e esp32debug -t upload - собрать и записать версию esp32 с отладкой, будет собрана прошивка под esp32 c выводом отладочных сообщений через serial интерфейс
  • pio run -e esp8266dev -t upload - собрать и прошить отладочную версию под esp8266
  • pio deviсe monitor - запустить serial-монитор для просмотра сообщений, выдаваемых контроллером


Для работы лампы нужно сформировать и залить в контроллер образ файловой системы. Выполняется это командой аналогично записи прошивки, но с параметром -t uploadfs, к примеру
  • pio run -t uploadfs - записать в контроллер образ ФС под платформу esp32
  • pio run -e esp8266 -t uploadfs - записать в контроллер образ ФС под платформу esp8266

После первой прошивки дальнейшие обновления можно заливать в контроллер по воздуху. Для этого нужно зайти браузером на контроллер по URL вида http://embui-xxxx/update, где xxxx это ID контроллера, нажать на кномку 'Firmware', выбрать файл с прошивкой и загрузить его в контроллер. Файл с прошивкой Platformio кладет в подпапки проекта:


  • .pio/build/esp8266/firmware.bin - версия под esp8266
  • .pio/build/esp32/firmware.bin - версия под esp32

В случае каких-либо проблем со сборкой, перво наперво нужно полностью очистить рабочий каталог платформио и попробовать пересобрать прошивку (платфомио заново выкачает актуальные версии зависимых библиотек).
Для очистки рабочего каталога нужно удалить из папки прокта каталог .pio

О том как настроить обновление по воздуху (OTA) для своей лампы см страницу проекта на Гитхабе.

Для знакомства с проектом можно воспользоваться собранными бинарниками от @andy040670 из этого поста

Озвучка для мп3 плеера
набор звуковых файлов для MP3 плеера можно скачать по ссылке из WiKi

Говорящие часы / кукушка
- настраиваема озвучка времени почасовая / пол часа / четверть часа
- тихие часы для отключения озвучки по ночам

Будильник
- 4 независимых будильника со своей мелодией у каждого
- каждый будильник может иметь один из режимов на выбор
- однократное срабатывание
- ежедневное срабатывание
- по будним дням
- по выходным дням

Управление
Лампа управляется через WEB-интерфейс или через мобильное приложение WLED-Native-Android, WLED-Native-iOS, старый WLED


По кнопке:

  • Из выключенного состояния
    • 1 касание - включить на последнем эффекте
    • 2 касания - включить в режиме ДЕМО
    • долгое удержание - включить в режиме "белая лампа" на минимальную яркость (ночник)
    • касание, удержание - включить в режиме "белая лампа" на максимальную яркость
  • Во включенном состоянии
    • 1 касание - выключить лампу
    • 2 касания - следующий эффект
    • 3 касания - предыдущий эффект
    • 5 касаний - вывод IP на лампу
    • 6 касаний - вывод текущего времени бегущей строкой
    • удержание - регулировка яркости
    • 1 касание, удержание - регулировка "скорости" эффекта
    • 2 касания, удержание - регулировка "масштаба" эффекта

Это дефолтное состояние для кнопки, но абсолютно любую настройку можно поменять

HTTP/MQTT команды

Device API описан на странице в WiKi
 
Изменено:

Комментарии

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
мигалку двоеточия поправил.

@Andron-65,
не работают одновременно плеер и дисплей. Если что т о одно то работают оба
выражайте мысли яснее, что и как не работает, я не понял. Указывайте конкретно какие пины настраивали.
 

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
@vortigont, Доброго вечера. Может я не совсем точно изложил проблему . Постараюсь сформулировать правильно. В юзер конфиг раскоментирую строки дисплей и плеер. Когда в веб назначаю пины плееру он работает. . . когда назначаю пины димплею он тоже работает. А если назначить пины и дисплею и плееру то плеер работает а дисплей нет. Пины назначаю плеер D5 D6 дисплей D4 D7 как было у KDN просто осталось много плат со старого проекта.. Еще есть проблема с кнопкой если строка кнопки закоментирована проект собирается если в конфиг раскоментирую ее то при назначении пина проект не собирается. У меня кнопка D1 . GPIO 14 12 - плеер GPIO 2 13 дисплей. Я совсем недавно с платформио познакомился. . Я буду очень благодарен за помощь.

@Andron-65, Кстати есть лишние платы для есп 32 . Могу выслать для экспериментов . Платка удобная хорошо спроектирована. Заводского изготовления. Разумеется в виде призента и благодарности Вам за развитие проекта
 
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
проблема с кнопкой если в конфиг раскоментирую ее то при назначении пина проект не собирается
спасибо за сообщение, поправил сборку с кнопкой, добавил проверку в автосборщик.

Про одновременную (не)работу плеера и экранчика, ну с ходу даже не знаю... у меня на стенде это точно работает на есп32. На 8266 возможно есть какие-то камни, если получится - проверю, но в низком приоритете. Поковыряйтесь сами еще, попробуйте в разном порядке настраивать - сначала экран, перезагрузка, убедиться что работает, потом добавить плеер или наоборот. Если есть возможность пины поменять, тоже пробуйте. Пока по этой настройке отзывов мало, вон у @dina спросите если у него плеер есть. А по возможности планируйте перезд на есп32.

За предложение спасибо большое, оч. признателен, но особой нужды нет. Мир не без добрых людей, пока есть над чем работать. Видел что появилась куча разных новых плат поэтому подумываю поскорее сбросить наследие есп8266 и заниматься уже одной платформой.
 

dina

★★✩✩✩✩✩
3 Окт 2021
321
80
49
Докладываю. Есп 8266 фит ,с полным обвесом работает (энкодер ,мп3 ,дисплей, микрофон, упр.транзистором.) Долго не гонял. Только вспышки яркие на матрице (когда тестировал олд и нев вспышек не было) ,но там я тестировал без обвеса ,только кнопка. Конфигурация такая A0-микрофон ,D0(16) TM 1637 CLK, D7(13) TM 1637 DIO, D5(14) кнопка энк, D2(4) DT энк, D1(5) CLK энк, D4(2) TX MP3, D6(12) RX MP3 ,D8(15) упр. транз, D3(0) пин матрицы. Есп 32 все работает.
 
Изменено:
  • Лойс +1
Реакции: vortigont

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
@vortigont, Добрый вечер. Да Вы правы уже пора переходить на ESP 32/ Просто корпус лампы под определенную плату сделан. Немного жаль.
 

dina

★★✩✩✩✩✩
3 Окт 2021
321
80
49
Поработал со звуковыми файлами ,ужал битрейт ,вывел к одному уровню громкости ,теперь влезет в 2 гиговую сд. Архив вин рар, в облаке майл ру https://cloud.mail.ru/public/gU1P/SuAgrvKvd
 
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
@vortigont, Добрый вечер. Да Вы правы уже пора переходить на ESP 32/ Просто корпус лампы под определенную плату сделан. Немного жаль.
да сейчас навалом плат на есп32 в том же форм-факторе как 8266, думаю поменять не так и невозможно при желании.

@dina, спасибо. Добавлю ссылку в шапки.
 

dina

★★✩✩✩✩✩
3 Окт 2021
321
80
49

@vortigont,
По поводу вспышек на 8266 (на олд и нев не было) ,что то поменялось?
 

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
@dina, ну в текущей feat ветке сборака идет с новым ардуино и фастлед. Сравните с мастер-веткой, если там всё нормально значит новое арудино ядро и новый фастлед глючат, чтож тут поделать.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
340
109
53
Ну поглядите дальше, может @andy040670 еще что-то у себя погоняет.
Погонял,
C++:
[env:8266newcore_oldlib]
не собирается, ошибок компиляции вроде нет, но в конце выдаёт вот это:
C++:
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\8266newcore_oldlib\firmware.elf] Error 1
============================= [FAILED] Took 409.43 seconds =============================


Environment         Status    Duration
------------------  --------  ------------
8266newcore_oldlib  FAILED    00:06:49.432
======================== 1 failed, 0 succeeded in 00:06:49.432 ========================
The system cannot find the file specified.
C++:
[env:8266newcore_newlib]
вспышки присутствуют, некоторые эффекты "замерзают" ~0-1fps работают. ФС через вебморду не шьётся.
Всё это соответственно на 8266, на esp32 проверить не могу, так как их у меня три: первый ESP32-WROVER-I Flash: 16 MB (Quad SPI) PSRAM: 8 MB (Quad SPI) - модуль без обвязки, не хочется замарачиваться, да и жирно будет для лампы, два других: модули с LORA и spi дисплеем на борту (сервер и нода). Один из них уже использовал для проверки без периферии, но с подключением там могут быть проблемы, так как пины заняты лорой и дисплеем, в общем замарачиваться не охота. Так что я пока на 8266, у меня их море)))
 
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
@dina, автосборка проходит нормально. Укажите с какими опциями собираете.

не собирается, ошибок компиляции вроде нет, но в конце выдаёт вот это:
а чуть раньше чем это там что? должно быть указание на символы которые линкер не нашел.
ну тогда стабильно работающий для 8266 будет считать 3.1.1, там все старое :)
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
340
109
53
ну тогда стабильно работающий для 8266 будет считать 3.1.1, там все старое :)
Там тоже вспышки.(
По хлеще чем в 8266newcore_newlib, и мне кажется что ограничение тока не работает. Прошил 1.5А, не заметил что яркость изменилась, вебморде поставил 1А, ничего не изменилось (с перезагрузкой).
 
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
При акктивации энкодера ,перестает собираться.
что-то это у вас с конфигом. Склонировал мастер ветку в отдельный каталог, добавил флаг сборки энкодера - 8266 нормально собрался.
[env:esp8266]
platform = [email protected]
board = d1_mini
board_build.ldscript = eagle.flash.4m2m.ld
build_flags =
${extra.build_flags}
-DENCODER
lib_deps =
${libs.esp8266}


и мне кажется что ограничение тока не работает
в фит ветке или в мастере? А когда работало? тоже надо смотреть как эта настройка в 2х местах живет.
 

andy040670

★★★✩✩✩✩
13 Ноя 2019
340
109
53
в фит ветке или в мастере? А когда работало? тоже надо смотреть как эта настройка в 2х местах живет.
В 3.1.1
Там тоже вспышки.(
По хлеще чем в 8266newcore_newlib
Нет, это всё-таки матрица "нагнулась". Просто касаюсь отвёрткой до вывода определённого диода, вообще без нажима и всё нормализуется.
Пропайка не помогает. Поживем пока с цветомузыкой.)))
P/s
8266 - feat.
28. Кометы, Парящие Огни - работает не правильно.
34. Попкорн - стартует нормально, останавливается, стоит на месте, нет движения. Движение появляется на время изменения яркости.
45. Магма - стартует нормально, останавливается, стоит на месте, нет движения. Движение появляется на время изменения яркости.
72. Лавовая лампа - стартует нормально, останавливается, стоит на месте, нет движения. Движение появляется на время изменения яркости.
Пины на Мп3 плеер назначаются нормально, больше не на чем проверить.
 
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
останавливается, стоит на месте, нет движения
да, я натыкался на это когда 8266 цеплял на свежей сборке. Короче под 8266 есть возможность менять ардуино ядро, версию СДК и версию фастлед.
Для желающих пораскладывать пасьянс из всего это в поиске более-менее рабочей комбинации открывается широкий простор.

И еще на "поразмыслить". Я покопался с фастлед и возможностью настраивать пин матрицы без перекомпиляции. Там всё не оч просто, у фастлед обобщенные шаблоны классов строятся с пином даже если для движка под конкретную платформу это не нужно. На гитхабе уже годами по этому поводу ноют, но дело не движется.
Я написал свои шаблоны к фастлед движку и обошел это ограничение без необходимости хачить саму фастлед либу. Есть одно "но", это работает только под есп32. Т.е. сейчас ничего не мешает полностью все настройки матрицы вынести в веб-морду - пин подключения, геометрию, ориентацию, размер. Но 8266 тогда отлетает сразу вся целиком, делать какие-то смешанные костыли где одна платформа настраивается из веба, а другая из конфига с дефайнами я не буду.
 
  • Лойс +1
Реакции: andy040670 и dina

dina

★★✩✩✩✩✩
3 Окт 2021
321
80
49
Осталось Andron-65 попросить ,что бы выслал andy040670 есп 32 ) Наверно пора" уже пришла ,зафиксировать 8266 ,с рабочим обвесом и двигать на есп 32 дальше.( Боливар не выдержит двоих). Не собираеться 8266 мастер ,с энкодером ,фит собираеться и черт с ним. Готов потестить 8266 с полным обвесом (без вспышек) и закрыть тему с 8266.
 
Изменено:
  • Лойс +1
  • Ахах! +1
Реакции: andy040670 и vortigont

andy040670

★★★✩✩✩✩
13 Ноя 2019
340
109
53
Наверно пора" уже пришла ,зафиксировать 8266 ,с рабочим обвесом
Давно предлагал вывести 8266 в отдельную ветку, пока всё работало и забыть, а дальше пилить основной проект под есп32 и выкинуть от туда все костыли 8266)))
 

dina

★★✩✩✩✩✩
3 Окт 2021
321
80
49

@vortigont,Ну вот и порешили. Какой теперь план ,по прошивкам и тестам? У меня 12 отпуск заканчиваеться ,оперативности убавиться.
 

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
ну пока я не сделаю всё что нужно по матрице текущий код будет собираться под обе платформы. Есть там вспышки или нет это дело другое.
В описании отмечу что под 8266 подходит сборка выпуска 3.1.1.
По тестам гоняйте feat ветку на есп32, что найдете - пишите, буду складывать в очередь дел.
Если есть желание причесать документацию - вики в вашем распоряжении.
Есть еще пара мыслей на обсуждение, напищу чуть позже.
 

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
Может не по теме сообщение на все же . Не так давно собирал проект WLED на есп 32. Там пин матрицы , кнопки и мосфета из веб морды назначаются . Может можно глянуть как там устроено . Собирал на печатной плате от проекта лампы. Кстати осталась одна печатная плата для проекта WLED. Желающим могу выслать даром плюс пересылка.
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★✩✩
24 Апр 2020
915
491
Saint-Petersburg, Russia
судя по описанию WLED довольно навороченный проект, я, видимо, пропустил. Вопрос к тем кто собирал - а чем тогда текущая "Огненная лампа" лучше-то?