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

Комментарии

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont,Щас мастер залил ,все нормально.Спасибо за исправленные эффекты.Я в этом vsc ,как медведь на льду.Хочу спаять сейчас есп 32. Потом буду пробывать 8266.Из пока замеченного эффект 24 ,прыгающие мячики, остаёться артеффакт кольца, на следующем эффекте ,в рижиме демо.
 
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
Я в этом vsc ,как медведь на льду
да зачем вам всц, собирайте из консоли, команды все указаны на странице проекта.

остаёться артеффакт кольца, на следующем эффекте ,в рижиме демо
вообще это нормально, гляну какой там следующий эффект, добавлю очистку буфера. Вообще там в настройках есть флажек, если включить, то буфер будет очищаться при смене эффектов принудительно.
 

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
@dina, да вы спрашивайте, будет досуг я отвечу. Бинари сделать не проблема, но вам это не подойдет, если собираетесь тестировать, то нужно будет оперативно обновлять репозиторий и проливать свежие сборки. Пяток команд освоить не так сложно.
Консоль можете открыть прямо в VSCode, гит у вас уже должен быть, инструменты сборки тоже.
 

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont,Получилось через vsc, поставил пока, 8266newcore_oldlib. В демо ,с интервалом ,в 1 минуту. Нормально работало ,с мелкими косяками по эффектам. На ночь выключил ,утром не включилась. В браузере страница есть ,все ползунки работают ,матрица не включаеться. Перепрошил заработало ,буду дальше наблюдать.
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
@dina, ну звучит неплохо. Я свою проводком подключал висячим, так там лезли всякие вспышки.
Ну поглядите дальше, может @andy040670 еще что-то у себя погоняет.

Посмотрел по остальной периферии в плане настройки гпио из вебморды - энкодер висит на гайверовской либе, в которой пины определяются при компиляции, либу под замену. С Фастлед и матрицей тоже интересно, там пин тоже определяется при компиляции из-за типизированных шаблонов.
На гитхабе куча вопросов как назначать пины во время работы, но толку мало, апи менять не хотят из-за оптимизаций под неткорые платформы типа авр. Для есп32, думаю, это в принципе решаемо, через IDF API можно работать с коммутатором. Посмотрю что можно сделать не влезая в фастлед либу.
По идее большую часть конфига сборки можно выкинуть нафиг.
 

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont, Я конечно ,мало понимаю. То оборудование ,которое проблемно ,по пинам ,жестко ,прописывать в прошивке. То ,что меняеться ,менять. 2-3 прошивки будут. Я правильно понимаю , что Вы идете ,к универсальному бин файлу? И кнопка на энкодере ,работает как обычная кнопка? Я это к тому ,чтобы на экодере оставить ,регулировку яркости и обычную кнопку.А там каждый выберет энкодер или кнопку ,на фиксированных пинах.Сенсорная кнопка ,это зло ,еще незнаю , что капризней, сенсор или мп3.
.Дс18б20 ,он вообще по моему ,только у костямата был.8266newcore_oldlib. пункт настройка ,другие ,сохранить ,валит лампу.
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
Совсем универсального может и не получится, но то что можно и проще вынести в живые настройки я постараюсь перенести.
Если что и останется, то какие-то сильно специфичные вещи и скорее работать будет от противного - по-умолчанию будет наиболее полный вариант сколько влезет в стандартный флеш, а что не лезет уже добавляться/убираться опциями сборки. В текущем конфиге черт ногу сломит, да и под каждый чих пересобирать проект просто глупо.

Энкодер и кнопка ща на разных либах работают по-разному обрабатываются. Не знаю зачем так, как смогли так и сделали, наверное. Эту часть все равно переписывать надо и другие либы брать.

8266newcore_oldlib. пункт настройка ,другие ,сохранить ,валит лампу
Беру таймаут на выходные, дел поднакопилось. То что падает посмотрю, наверное где-то в флеш-стригах опять. есп32 нормально работает.
Вы пока матрицу погоняйте с новой версией либы еще и там уже решим поднимать версию ядра и либы в мастер ветке или нет.
 
  • Лойс +1
Реакции: dina

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont, Вообщем погонял в демо ,олд и нев, разницы вообще не увидел. Обе работают нормально.
 

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
Доброго времени всем. При старте PlatforvmIo вот такая беда на экране. Что то предлагает установить. Вопрос к знатокам . Что делать .
 

Вложения

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
@Andron-65, думаю можно пропустить ) при следующей обновке файл перезатрется по идее...

Вообщем погонял в демо ,олд и нев, разницы вообще не увидел
спасибо за то что потестировали! странно конечно, ну раз никто больше не подтверждает или не опровергает результаты, то принимаем такой вариант за истину. Я сформирую корректирующий выпуск из текущего мастера, в случае чего от него можно будет сделать ответвление (хотя вряд ли).
В мастер перенесу наработки из фит ветки + то что успел сделать по gpio. По крайней мере это будет уже другой фреймворк, а там посмотрим когда отвалится 8266.
 
  • Лойс +1
Реакции: shax

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
Обновки
- корректирующий выпуск v3.1.1 на старом фреймворке

- feat ветка
* добавлена настройка gpio для части периферии из вебморды, соответсвующие опции конфига убраны​
* 8266 поднят до актуального ардуино ядра и библиотеки fastled​
* используется другой фреймворк из моего репа, конфиги и ресурс-файлы на ФС несовместимы с версией из мастера, требуется залить ФС с нуля​
 
  • Лойс +1
Реакции: Andron-65 и dina

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont,Есп 32. Поставил.Первое вкл. и остальные настройки гпио ,не быстро подхватывались ,перезагрузок много было ,потом проперделось и пошло(наверно оптом надо было настраивать). Явные косяки ,1 на тм1637 постоянно горят точки секунд ,не мигают(время идет). 2 пункт настройки ,настройки есп ,выкидывает в эффекты. 3 пункт настройки ,другие ,выкидывает в эффекты. Остальное на первый взгляд работает ,энкодер крутит ,мп 3 мурлыкает. Микрофоном ,я так понимаю не занимались ? Скажите ,что кокретно тестить.
 
Изменено:

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
@vortigont, Будем тестить. А скажите , я так понимаю мосфет на вкл матрицы пока не предусмотрен в юзер конфиг не могу найти. Просто платы под мосфет На 8266 был D2
 

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@Andron-65, Там ,уже в настройках (в вэб) этот пин назначаеться ,работает.Также мп3 и тм1637 в настройках вэб. Правда у меня есп32 ,8266 еще не тестил.Посмотри распиновку 8266 ,D2 это гпио 4 итд.
 

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
@dina,
с пинами оно не тупит, после каждого сохранения надо дождаться перезагрузки через 5 сек и проверить что настроенное устройство подхватилось.
Наверное можно сделать что бы и без перезагрузки применялось, но это сложнее. Позже может займусь когда остальная периферия подтянется.

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

Работу с установкой пинов на 8266 я вообще не проверял и не жду что она будет нормально работать, поглядите, если при рекоммендованых на вики пинах все работает, то ОК, пометим что работает.
 
  • Лойс +1
Реакции: dina

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
@Andron-65, @dina, С мосфетом , дисплеем и плеером разобрался. А у матрицы и кнопки строго определенные пины или можно свои. Плата у меня от старого проекта KDN там матрица G2 , кнопка G4. Не пинайте больно с PlatformIO второй день знаком только. Где там прописать можно.
 

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
исправил кнопки в "настройках".

@Andron-65, матрица, энкодер и кнопка пока из веб не настраиваются. Пины меняются как и раньше в файле user_config.h, подробнее на странице в WiKi
 

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont,Есп 32.Поставил.Делал через полное стирание.Первое подключение ,целое колдовство.Нормально. Не знаю микрофон не работает, эффекты осциллограф и частотный анализатор тоже ( может из за микрофона).С сохранениями какая то беда ,глюки всякие. За то убедился ,что не надо сд карту ,на горячую дергать (данные теряються). Ветка фит. Есп 8266. Не собираеться.
 

Вложения

  • 27.6 KB Просмотры: 4
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
Ветка фит. Есп 8266. Не собираеться.
вы или что-то не обновили или используете какой-то свой конфиг для платформио. Ошибка из-за того что собирается со старым Ардуино ядром.

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

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont,Микрофон заработал, заново перепрошил, пин был тот же самый,какой то глюк. Пункт настройки ,другие ,сохранить , сбой дает ,начинаються в вэбе эффекты быстро-быстро перебираться. После каких либо сохранений ,на тм1637 зацикливаеться показ ,ип адреса. Точки ,то работают ,то замерзают ,после каких либо настроек-сохранений. Вообщем от всяких сохранений , колбасит лампу ,помогает передергивание питания. 8266 проверить не могу ,ошибку эту не победил. Вс коде и гит сносил, заново ставил бестолку.
 
Изменено:

vortigont

★★★★★✩✩
24 Апр 2020
891
482
Saint-Petersburg, Russia
настройки ,другие ,сохранить , сбой дает ,начинаються в вэбе эффекты быстро-быстро перебираться
блин, я же чинил этот баг давно :( что-то криво прошло последние слияние. Лан, посмотрю внимательнее

8266 проверить не могу ,ошибку эту не победил. Вс коде и гит сносил, заново ставил бестолку
чет я не понимаю как вы тогда тестировали 8266 до этого. VSCode больше путаницы вносит, блин.
В VSCode откройте консоль и работайте в консоли командами.
Наберите
Bash:
git pull
git status
pio pkg update
pio run -e esp8266 -t upload
поправил быстрые переключения эффектов в демо. Дисплей глянул, что-то там мутно, число повторов показа ип-адреса по-умолчанию стояло 17, х.з. откуда это. Подрихтую там еще кое-что потом выложу.
 

dina

★★✩✩✩✩✩
3 Окт 2021
316
80
49
@vortigont,Глядите какая ботва.Я до этого собирал прошивку для 8266 только с одной кнопкой (энкодер ,дисплей ,микрофон ,мп 3 отключены в конфиг файле) она не собиралась. Активировал в конфиг файле , всю периферию ,прошивка 8266 собралась!!! Наверно как то связано ,с прописыванием гпио. Попробую потестить с полной периферией. Личку поглядите. 8266 прошивка зашла ,фс не шьёться.
 

Вложения

  • 4.1 KB Просмотры: 3
Изменено:

Andron-65

★✩✩✩✩✩✩
18 Май 2020
68
18
Добрый день всем. Вопрос к знатокам. Прошивка feat . При настройке конфигурации GPIO настраивается мосфет плеер дисплей. Но проблема в том что не работают одновременно плеер и дисплей. Если что т о одно то работают оба. Контроллер esp 8266. Дисплей время корректно отображает . Двоеточие заморожено и горит постоянно
 
Изменено: