WiFi лампа-будильник. Обсуждение прошивки от vvip-68

WiFi лампа-будильник. Обсуждение прошивки от vvip-68
Всем добрый день. Собрал светодиодную матрицу на wemos d1r1 и на прошивке от vvip-68(за прошивку огромное ему спасибо). Матрица получилась размером 102 на 16 пикселей. Захотелось управлять гирляндой с телефона, чтобы wemos был подключён к домашнему роутеру. Плата подключается к WiFi но не получает данных о погоде и данных с сервера времени. Гирлянда зависает, и плата так и не может получить данные из интернета. Монитор порта выглядит вот так:1645769623394.png
Буду благодарен любой помощи в решении проблемы.
Заранее спасибо!
 
Изменено:

Комментарии

SlavikBerdsk

✩✩✩✩✩✩✩
2 Апр 2021
10
2
Добрый день.
Подскажите что делать?
F:\Arduino\LedPanelWiFi-main_2\firmware\LedPanelWiFi_v1.14\custom.ino: In function 'void FastLEDshow()':
custom:407:54: error: 'E131_FRAME_DELAY' was not declared in this scope
if (abs((long long)(millis() - prevSendTimer)) > E131_FRAME_DELAY) {
^~~~~~~~~~~~~~~~
F:\Arduino\LedPanelWiFi-main_2\firmware\LedPanelWiFi_v1.14\custom.ino:407:54: note: suggested alternative: 'E131_FRAME_SEQ'
if (abs((long long)(millis() - prevSendTimer)) > E131_FRAME_DELAY) {
^~~~~~~~~~~~~~~~
E131_FRAME_SEQ
И ещё: пытаюсь запустить матрицу 60х20 из 3-х 20х20. Ругается на матрицу из-за нехватки памяти.

ESP32S3 n16r8 (ставлю Flash: 16, Partition: 8)
 

vvip

★★★✩✩✩✩
18 Дек 2018
413
167
, файл a_def_hard.h
Найти вот этот кусочек
1707541566623.png
и скопировать его ниже, там , где определение конфигурации для ESP32, примерно сюда
1707541662720.png

Или в строке 489 по данному скриншоту поставить USE_E131 0
Или там где пишет об ошибке - custom:407:54: - вместо E131_FRAME_DELAY написать 25

@Gress33, про достаточность тока 1A

Если вы всё-таки получше вглядитесь в поле со значением тока по умолчанию, то по умолчанию там стоит 10000мА - или 10 Ампер
На практике - для гирлянды на окно на 252 диода хватает 3-4 ампер - вы же не улицу освещать собираетесь. А для демонстрации рисунка в темное время суток хватает обычно 15-25% яркости. На особо неярких диодах - 50%...

PS: Все изменения в эффектах, ошибки и прочее - я читаю и записываю. Сейчас прошивка находится в стадии подготовки к реализации некоторых фич, запрошенных где-то ранее, поэтому требует переделки некоторых блоков. Она в разобранном некомпилируемом состоянии, поэтому пока исправления ошибок ( в т.ч и с неопределением некоторых констант, неприменением параметров эффекта макроск {E} и т.д.) нет. Всё будет позже, когда у меня появится свободное время заниматься прошивкой.
 
Изменено:

vvip

★★★✩✩✩✩
18 Дек 2018
413
167
@Zordog, можете куда-нибудь выложить видео как у вас выглядит эффект "Синусы 2" - которые с регулировками?

У меня это выглядит примерно так -

Какое-то довольно бессмысленное мельтешение точек. А при убирании параметра "Хвост" ближе к нулю - вообще перевернутый "Камин" или "Огонь" непонятного цвета. Или я где-то что-то напутал? Пока - не впечатлился.

По эффекту "Фейерверк" - выглядит более осмысленно. Может даже имеет право на жизнь. Беда в том, что он постоянно перегружает контроллер. Если ничего не трогать - валится секунд через 10-15. Если открыть параметры и подвигать ползунок - валится моментально.
Я снова чего-то упустил?
 

Zordog

✩✩✩✩✩✩✩
14 Дек 2019
26
3
Какое-то довольно бессмысленное мельтешение точек. А при убирании параметра "Хвост" ближе к нулю - вообще перевернутый "Камин" или "Огонь" непонятного цвета. Или я где-то что-то напутал? Пока - не впечатлился.
В отправленных вам файлах есть ошибка, параметр "скорость" не работает.
По регулировкам эффекта:
effectSpeed - отвечает за shiftDown (общую скорость отображения);
ScaleParam - отвечает за частоту (BMP) синусоиды;
ScaleParam2 - отвечает за величину затухания в fadeToBlackBy;

Видео позже выложу и с 20х8 и с 16х16.

По эффекту "Фейерверк" - выглядит более осмысленно. Может даже имеет право на жизнь. Беда в том, что он постоянно перегружает контроллер. Если ничего не трогать - валится секунд через 10-15. Если открыть параметры и подвигать ползунок - валится моментально.
Я снова чего-то упустил?
Размер массивов фигур(количество) создаётся на основе размеров матрицы. На моих тестовых размерах (20х8 и 16х16 ) ничего не валится.
Может стоит поиграться с количеством фигур?

UPD. У меня ESP32
 

vvip

★★★✩✩✩✩
18 Дек 2018
413
167
@Zordog,

Пара замечаний по коду фейерверка:
Объявление переменных и выделение памяти:
  bool     *the_figState   = NULL; // true - фигура отображается; false - фигура не отображается
  uint8_t  *the_figMode    = NULL; // тип фигуры 0 - круг; 1 - снежинка;
  uint8_t  *the_figX       = NULL;
  uint8_t  *the_figY       = NULL;
  uint8_t  *the_figSize    = NULL; // текущий размер фигуры
  uint8_t  *the_figSizeMax = NULL; // максимальный размер фигуры
  uint8_t  *the_figHue     = NULL;
  uint16_t *the_figStart   = NULL;
  uint16_t *the_figPos     = NULL;
...
  if (the_figState   == NULL) { the_figState   = new bool     [the_figCount]; }
  if (the_figMode    == NULL) { the_figMode    = new uint8_t  [the_figCount]; }
  if (the_figX       == NULL) { the_figX       = new uint8_t  [the_figCount]; }
  if (the_figY       == NULL) { the_figY       = new uint8_t  [the_figCount]; }
  if (the_figSize    == NULL) { the_figSize    = new uint8_t  [the_figCount]; }
  if (the_figSizeMax == NULL) { the_figSizeMax = new uint8_t  [the_figCount]; }
  if (the_figHue     == NULL) { the_figHue     = new uint8_t  [the_figCount]; }
  if (the_figStart   == NULL) { the_figStart   = new uint16_t [the_figCount]; }
  if (the_figPos     == NULL) { the_figPos     = new uint16_t [the_figCount]; }
Все же при объявлении массивов их лучше инициализировать значением NULL, иначе проверка дальше - если NULL - выделить память.При старте программы в неинициализированных переменных вполне может быть какой-то мусор, который не NULL. Значит память будет не выделена (мусор же не NULL) - значит в эти массивы будет писаться что-то куда-то в неизвестное место памяти, что приведет к краху программы. К тому же освобождение невыделенной памяти в fireworksRoutineRelease() нарушит структуру heap`a и хрен знает что произойдет.

Второе замечание. Функции drawSnowflakesBlend() и drawCircleBlend()
Идет напрямую обращение к массиву leds[]

Обращение к массиву:
...
  nblend(leds[getPixelNumber(x0, y0 - figSize)], color,128); //луч вверх
  nblend(leds[getPixelNumber(x0 + figSize, y0)], color,128); //луч вправо
  nblend(leds[getPixelNumber(x0, y0 + figSize)], color,128); //луч вниз
  nblend(leds[getPixelNumber(x0 - figSize, y0)], color,128); //луч влево
...
Смотрим функцию getPixelNumber()
Она вполне способна возвращать значение -1, когда x,y выходит за размеры матрицы или идет работа с индексными файлами, в которых в карте индексов некоторых областей вполне может и не быть. Тогда getPixelNumber() вернет -1, а обращение к массиву светодиодов leds[-1] запишет некое значение куда? Правильно - хрен знает куда, что приведет к повреждению памяти и вероятному краху системы.

Пожалуй этот кусочек кода стоит писать примерно в таком виде:
C++:
int16_t pn;
...
  pn = getPixelNumber(x0, y0 - figSize); if (pn >= 0 && pn < NUM_LEDS) nblend(leds[pn], color,128); //луч вверх
  pn = getPixelNumber(x0 + figSize, y0); if (pn >= 0 && pn < NUM_LEDS) nblend(leds[pn], color,128); //луч вправо
  pn = getPixelNumber(x0, y0 + figSize); if (pn >= 0 && pn < NUM_LEDS) nblend(leds[pn], color,128); //луч вниз
  pn = getPixelNumber(x0 - figSize, y0); if (pn >= 0 && pn < NUM_LEDS) nblend(leds[pn], color,128); //луч влево
...
Вот у меня после этих исправлений эффект перестал крашить систему...
 
  • Лойс +1
Реакции: Zordog

vortigont

★★★★★✩✩
24 Апр 2020
916
493
Saint-Petersburg, Russia
bool *the_figState = NULL; // true - фигура отображается; false - фигура не отображается uint8_t *the_figMode = NULL;
И прочие указатели не нужны. Размер указателя больше чем переменная на которую он указывает. Вы так не только память не съэкономите, но еще и потратите больше вдвое минимум. Выкините это все и определите переменные статически раз классы или структуры не успользуете.
 

Zordog

✩✩✩✩✩✩✩
14 Дек 2019
26
3
@vortigont,
Писать класс в данном случае - это оверкап.
Расточительство памяти только на булеве.
Структуру не использовал т.к. эффект писался на коленке, ради написания и просмотра на макетке.

За замечание, спасибо.
 
  • Лойс +1
Реакции: vortigont

Gress33

✩✩✩✩✩✩✩
9 Фев 2024
9
0
Здравствуйте. Wemos d1 mini, прошивка 1.13. Всё работает без проблем. Подключил модуль SD. Собирал по схеме. При первом включении с вставленной картой контроллер завис и отвалился от сети, с приложением не коннектился. Перезагрузка не помогала. Заработал только после физического отсоединения модуля SD. Затем модуль пристыковал обратно, вставил карту. Все работает, но карту не видит. Припаял питание +5V. Теперь при включении с вставленной картой загорается только первый светодиод, либо вообще ничего, но как только вынимаю карту без перезагрузки, сразу начинает работать. Карточка старая 2гб ноунейм, рабочая, на всякий случай отформатировал в FAT32, ничего не дало. В чем может быть проблема?
 

TM1

✩✩✩✩✩✩✩
9 Дек 2023
22
0
Тоже проблема с воспроизведением эффектов с sd card. Всё работало, и с флешки тоже воспроизводилось. Перепрошил сам wemos и перестали воспроизводится эффекты с флешки. карту прога видит, эффекты тоже видит, ИА воспроизводить не хочет, сразу перепрыгивает на стандартные из памяти. В чем может быть проблема? До перепрошивки всё хорошо работало. флешка тоже рабочая.
 

Zordog

✩✩✩✩✩✩✩
14 Дек 2019
26
3
@TM1,
В прошивке реализован очень подробный debug лог в serial порт. Вы бы хоть его выложили. Лог включения и инициализации контроллера и лог выбора эффекта.

@Gress33,
Не пользуюсь SD, не подскажу, увы.
 
Изменено:

TM1

✩✩✩✩✩✩✩
9 Дек 2023
22
0
точно не знаю, где находится этот лог выбора эффекта. попробую найти.
 

vvip

★★★✩✩✩✩
18 Дек 2018
413
167
Для экстремалов и энтузиастов.
Я выложил в общий доступ версию WiFiPanel v.1.14с.2024.0215

Такая себе промежуточная версия в которой,

1. Переработан внутренний механизм формирования и отрисовки часов / температуры / календаря.
Это нужно было под будущие изменения, которые пока не сделаны.
Из видимых - в большом шрифте цифр 5x7 в '0' убраны внутренние точки (перечеркивание),
в малом шрифте - 3x5 доступен второй вариант начертания цифр - "Скругленные".
В настройках отображения температуры - опция вывода буквы шкалы Цельсий/Фаренгейт - C/F и,
собственно, сам значок градуса.

2.Исправлена ошибка макроса бегущей строки {E} - когда не применялись настройки (скорость) фонового эффекта, а использовалась скорость текущего эффекта.
Исправлен макрос бегущей строки {A} -срабатывал со второго нажатия на кнопку "Показать" строку, повтор (вариант макроса {A+} вообще не работал. Но нужно наблюдать / проверять. У меня, вроде, починилось.

3.Добавлены эффект от @Zordog -"Фейерверк",и эффекты по мотивам от @Zordog - "Поток" (бывшие "Синусы-2", но где там синусы?) и "Полосы" - некая вариация на "Тени". Эти два последних - экспериментальные, не решил еще оставлять их или выкинуть...

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

5. Скорее всего добавлены новые ошибки, которые еще предстоит найти и исправить...

На ESP8266 работает более-менее стабильно, если ничего кроме кнопки и ленты нет. Если есть MP3 плеер и SD-карта, нужно проверить, что в меню "Инструменты", "lwIP Variant" выбрано "v2 Lower Memory", потому как с "v2 Higher Bandwidth", видимо, Web-серверу не хватает памяти и он не может нормально отдать файлы странички браузеру - в "F12/ закладка Сеть" браузера при загрузке страницы показывается обрыв соединения при передачи файлов и страница не открывается, а сам контроллер часто перезагружается при обновлении страницы в браузере. На моем тестовом ESP32 проблем не наблюдается, за исключением того, что при включенном в меню Инструменты File partitions OTA прошивка не помещается в память - его нужно отключать (на некоторых платах). Зависит также от того что включено/выключено из оборудования в прошивке.

Кроме обновления прошивки требуется обновление файловой системы с WebUI. Не забываете про сохранение настроек. Настройки эффектов "Анимация", "Слайды" и "SD-карта" сдвинуты, так как перед ними появились три новых эффекта - их нужно будет перенастроить.

В папке data - пока убрал папку со слайдами 16p16 - она есть в проекте в папке "pics" - кто пользуется эффектом "Слайды" - скопируйте ее в папку data перед заливкой файловой системы. Там много файлов - если все не влазять - удаляйте по одному, пока не исчезнет ошибка загрузки файловой системы из за нехватки места. Зависит от контроллера.

Но, кому не интересно - можно пока и не ставить. Этот пост просто для информации, что что-то делается.
 
Изменено:

mikewap83

✩✩✩✩✩✩✩
2 Фев 2024
3
2
Добрый вечер, я новичок в Arduino и тоже стокнулся что не хватает памяти для скетча на ESP 32 4MB если включить все, методом проб и ошибок, нашел метод как переразметить структуру памяти
Вот инструкция
Открыть файл C:\Users\[ИМЯ пользователя]\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.14\boards.txt

Добавить строки в разделе ## IDE 2.0 Seems to not update the value где идет описание PartitionScheme

esp32.menu.PartitionScheme.default_1_4MB=4MB with spiffs (1.408MB APP/1.152MB SPIFFS)
esp32.menu.PartitionScheme.default_1_4MB.build.partitions=default_1_4MB
esp32.menu.PartitionScheme.default_1_4MB.upload.maximum_size=1441792

Скопировать файл default_1_4MB.csv в папку C:\Users\[ИМЯ пользователя]\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.14\tools\partitions

Перезапустить Arduino и выбрать в настройка размер памяти 4M with spiffs (1.408MB APP/1.152MB SPIFFS)

После этого получается 1.408MB на скетч, столько же для OTA обновлений и 1.152MB для хранения папки Data, может конечно и меньше нужно, знать бы какой размер нужен для хранения папки Data и настроек, так бы может быть и больше под скетч можно было выделить
 

Вложения

  • Лойс +1
Реакции: Zordog и vvip

Zordog

✩✩✩✩✩✩✩
14 Дек 2019
26
3
@vvip,
Как раз хотел предложить попробовать градиентные палитры в эффекте "Тени" :)

UPD.
Эффект "Поток" хорошо смотрится только на большой скорости, но отрисовка часов / температуры / календаря на этой же скорости, делает их не читабельными.
Эффект "Полосы" начинает глючить при крайнем правом положении слайдера "Изменчивость".
В эффекте "Фейерверк", у слайдера "Затухание", стоит увеличить максимальное значение хотя бы до 192.
Макрос {E} работает :)
 
Изменено:

vvip

★★★✩✩✩✩
18 Дек 2018
413
167
@Zordog,

"Поток" - сильно зависит от палитры. На некоторых палитрах хорошо смотрится и на относительно небольших скоростях. Показ часов отключается в правом крайнем положении ползунка "Интервал".

"Полосы" - уменьшил макс. значение параметра "Изменчивость". Вроде не глючит... Часы также отключаются в крайнем правом положении ползунка "Интервал"

"Фейерверк" - увеличил "Затухание" до 192.

ЗЫ: Я тут всем говорю - эффект "Камин" хорошо смотрится только на максимальной скорости, когда эффект огня как живой". А мне всё время в ответ - "скачет как сумасшедший". А он на малой скорости вообще не работает, просто по алгоритму формирования эффекта.... Так что и с Потоком обязательно кто-нибудь скажет - "а что так быстро? течет как сумасшедший"...
 
Изменено:
  • Лойс +1
Реакции: Zordog

6yJlka

✩✩✩✩✩✩✩
27 Ноя 2023
17
0
Доброго дня! Решил обновить оснастку, добавив возможность управлять кнопкой и СД карту, заодно обновить прошивку на своем Wemos, на версию 1.14с.2024.0126 (была 1.14.2023.1114). После заливки скетча МК постоянно перезагружается, без остановки. Прошиваю обратно на версию, что стояла - все норм, стартует и работает (включая кнопку и сд карту). Так же на версии 1.14a.2023.1218 - всё робит. Вот именно на 1.14с.2024.0126 наблюдается такая вакханлия с перезапусками МК. В порте краш происходит после пункта инициализации СД карты.
В чем может быть проблема, есть идеи?
 

Вложения

AnCore

★✩✩✩✩✩✩
27 Янв 2020
157
28
@6yJlka, памяти, наверное, не хватает у esp8266 (отключите всё, кроме кнопки, и снова прошейте плату), но лучше использовать esp32 (в том числе C3, S2, S3)
 
  • Лойс +1
Реакции: 6yJlka

sax-ru

✩✩✩✩✩✩✩
18 Фев 2024
1
0
Добрый день.
Подскажите, пожалуйста, почему бегущая строка работает только если я пишу текст без макросов. Если добавляю макрос, то ничего не происходит.
Версия самая последняя WiFiPanel v.1.14с.2024.0215 использую esp32.
Пробовал текст вбивать через web-интерфес - тоже самое.
 

TM1

✩✩✩✩✩✩✩
9 Дек 2023
22
0
Всем привет! Кто- нибудь пробовал, Wemos d1 mini потянет 1150 светодиодов?
 

vvip

★★★✩✩✩✩
18 Дек 2018
413
167
@TM1, Не потянет. 500-600 максимум. ESP32 с бОльшим объемом памяти стоит на копейки дороже...
 

AnCore

★✩✩✩✩✩✩
27 Янв 2020
157
28
@TM1, скомпилируйте прошивку, увидите, сколько памяти требуется (если не будет хватать, отключайте OTA, например)