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

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

Комментарии

Mikola

✩✩✩✩✩✩✩
6 Янв 2019
3
0
@vvip подскажите пожалуйста, ws2815 с esp32 будет работать, ничего в прошивке менять не надо?
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Mikola, такой ленты не имею, но думаю, что будет работать. Не вижу причин, чтобы не работало.
 

Alexversh

✩✩✩✩✩✩✩
23 Янв 2023
5
0
@vvip, Добрый вечер, при подключениии через вэб, пишет сервер не активен, в чем может быть проблема? Версия 1.14 последняя с гитхаба. ESP8266
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Alexversh, не загружены файлы странички веб-сервера в файловую системумикроконтроллера
 
  • Лойс +1
Реакции: Alexversh

Alexversh

✩✩✩✩✩✩✩
23 Янв 2023
5
0
@Alexversh, не загружены файлы странички веб-сервера в файловую системумикроконтроллера
Спасибо! Все получилось.
 

Andrey128

✩✩✩✩✩✩✩
8 Ноя 2023
4
0
Добрый день! Собрал Матрицу на прошивке от vvip-68 LedPanelWiFi_v1.14 размером 16*12 и подключенным дисплеем TM1637 плата esp32 Сама матрица работает корректно , но на дисплее TM1637 после загрузки платы отображается ( br 99 яркость ) и до нажатия физической кнопки дисплей сам не переходит на отображение текущего времени и температуры (висит только на яркости) но стоит для эксперимента поменять размер матрицы на 11*12 и перезагрузится дисплей сам начинает корректно работать показывает и время и температуру без всяких нажатий на кнопку. Пробным путем было выяснено что дисплей корректно работает до размеров 11*12 что больше виснет на яркости и не возвращается на температуру и время. Подскажите что можно сделать если кто сталкивался с такой проблемой????
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Andrey128, нет, не сталкивались с таким. Возможно что-то неправильно собрано.
Вот устройство - ESP32,кнопка, индикатор, SD-карта, матрица 32x16


Вот настройки. Все работает.

1699437256366.png
1699437284355.png
Проверяйте что сделали неправильно.
 

Andrey128

✩✩✩✩✩✩✩
8 Ноя 2023
4
0
@vvip, @vvip, 32*16 тоже работает попробуйте на своей поставить 16*12 , собрано все корректно проверил.

@vvip, @vvip, 32*16 тоже работает попробуйте на своей поставить 16*12 , собрано все корректно проверил.
меняю опять 16*12 и после загрузки висит на яркости ( яркость сама не прыгает)
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Andrey128, хм... действительно. При 16x12 показывает яркость... И падает при выборе эффекта...
Странно все это и неожиданно. Буду посмотреть.
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Andrey128,я не понимаю как это зависит от размера матрицы, но в основном файле скетча добавьте вот это:

1699441534660.png

И все равно у меня при попытке смены эффекта из UI микроконтроллер перезагружается.
Я не понимаю почему. Раньше такого не было. Вроде год уже ничего не менялось. Буду искать.
 
  • Лойс +1
Реакции: Andrey128

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@vvip, отвечаю сам себе, по поводу краша программы при смене эффекта...
Вот ведь память... Всем говорю - читайте комментарии в тексте скетча, в самом начале - сам же забыл и не прочитал.

1699443345845.png
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
542
Saint-Petersburg, Russia
@vvip, поглядел ваш проект - вебморда у вас прям зачетная получилась! Вы фронтэндом занимаетесь?
А куда столько места у вас на стеке уходит-то? Закинул вам ПРом сборку проекта в платформио.
 
  • Лойс +1
Реакции: vvip

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@vortigont, да, немножко занимаюсь фронтэндом.Web-морды для некоторых железяк пишу...
Про стек - не знаю. Может недостаточно квалифицирован и в прошивке где-то накосячил. Хотя вроде смотрел в свое время - ничего особо криминального не нашел. Хотя, Си (и плюсы) - не моё... Но ведь кроме моей части кода там еще куча сторонних библиотек работает и глубина вызовов там весьма приличная бывает. Может библиотеки (особенно веб-сервер) что-то довольно объемное через стек передают или вложенность вызовов большая. ХЗ в общем...
Причем на Wemos ESP8266 такого не наблюдается. И на других версиях ядра вроде как тоже. Так что - весьма вероятно вот такой вот косяк в ядре ESP32 версии 1.0.6. Пробовал более поздние версии ядра вплоть до 2.0.6 - но там своих косяков хватает из за чего прошивка просто нормально не работает. Эта - пока самая стабильная. Более новые после 2.0.6 не смотрел еще...
 
Изменено:

vortigont

★★★★★★✩
24 Апр 2020
1,022
542
Saint-Petersburg, Russia
@vvip, морда отлично вышла! Поглядел немного на ваш проект, вы весьма целеустремленный и старательный разработчик. Документация прям вызывает уважение! Круто! У меня на это вечно не хватает времени и терпения.
По поводу стека на 8266 он там нелимитирован - он растет навстречу куче пока они не столкнутся и не случится бах! А под есп32 ртос выделяет конкретный размер под конкретный тред. Дефолтовые 8к это довольно много. У вас весь проект построен на фунциональном программировании, очень много объектов живут на стеке, плюс огромная работа с копиями строк. В общем... тут есть над чем работать. Если лень оптимизировать стек и уходить на динамические объекты, то таком случае нужно запускать свои треды паралельно ардуино loop() и убирать туда часть сущностей. Но тут нужно быть оч осторожным - thread-safety поддерживать весьма непросто. Вообще как вы сумели это буйство функций в ардуиноиде развести и не запутаться это прям надо быть весьма методичным :) Если пожелаете, я могу кое что причесать у вас, закинуть ПРами.
Версия 1.0.6 уже древняя как какашки мамонта, от неё нужно уходить давно. В районе 2.0.6 там убрали совместимость с прогмем макросами от 8266, поэтому через нее трудно будет прыгнуть если требуется в одном проекте поддерживать совместимость с обеими платформами. Но в целом 2.0.6 на голову выше 1й ветки на 3м IDF. Ленты вполне нормально работают на новых ядрах есп32.
 
  • Лойс +1
Реакции: vvip

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@vortigont, причесать - это здорово, если Вам не лень, конечно. Главное - не сломать то, что работает :). Я не настолько сведущ в программировании на си под микроконтроллеры, глубоко в тему не лез. Это вообще было как хобби, которое началось с 2019 года примерно, когда в Гайверовской гирлянде мне перестало хватать функционала и я на этой основе стал потихонечку дописывать то, что мне было нужным.Проект вообще писался "под себя" и не намеревался быть публичным. Но как-то разошелся по сети...

Про версию 1.0.6 -да, она древняя, но единственная беспроблемно работающая. Пробовал версии 2.0.x - они (особенно первые) с FastLED вообще оказались несовместимыми - под ними даже не загорались диоды. По мере выхода пробовал следующие. С 2.0.5 и 2.0.6 вроде и диоды горят и как-то работает. Но, эффекты и особенно бегущая строка двигается весьма заметными на глаз рывками. Крутил я ее крутил, потом решил что если под 1.0.6 работает без проблем - новые версии не самоцель. Не ломай работающее. Откатился на старую.

Совместимость с платформами - желательна. Не особо хочется буде чего добавить - писать одно и то же для разделенных проектов...

Я там в личку на всякий случай черканул контакты...
 
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★★✩
24 Апр 2020
1,022
542
Saint-Petersburg, Russia
Я всю эту боль с версиями и двумя платформами уже прошел с другим проектом. В итоге отринул все старое наследие и сконцентрировался на актуальном. Но это если проект в стадии активного развития. Если у вас уже всё устаканено, то правильнее конечно не ломать то что работает.
Сильно тормошить ваш проект не планирую, но в какие-то слабые места по-возможности укажу, поправлю. Сделаю вам так что бы по крайней мере не приходилось руками править фалы ардуино ядра для есп32. В ответку может как-то по возможности чем-то поделитись по реакту и фронтэнду. Это вообще не моя область и я в этом плаваю, хотя вопросов много возникает.
 
  • Лойс +1
Реакции: VadZher и vvip

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
121
32
Омск
В версии проекта v.1.14.2023.0602 для ESP8266 на базе Wemos D1 mini с физической тактовой кнопкой наблюдаю такой эффект: При подключении питания матрица включается и автоматически плавно уменьшает яркость до минимума. Если вручную увеличить яркость нажатием на соответствующую кнопку веб-интерфейса - она опять автоматически уменьшится. Захожу в меню настроек, проверяю, что установлена тактовая кнопка на верном пине (D4) и нажимаю кнопку "Применить". Контролер перезагружается, но теперь при его включении яркость плавно увеличивается до максимума и уменьшить её вручную не получается. Этот эффект наблюдается каждый раз при включении (перезагрузке) контролера до первого нажатия на физическую кнопку.
Контролер использует матрицу 16x16, версия ядра ESP8266 - 3.1.2, версия FastLED - 3.5.0, прошит для LOLIN(WEMOS) D1 mini (clone), Flash Size: 4MB(FS:2MB OTA:~1019KB), параметр CONFIG_ARDUINO_LOOP_STACK_SIZE изменён на 16138.
В версии для ESP32 без физической кнопки подобного эффекта не наблюдается.
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@VadZher, давеча у кого-то был глюк (пятью постами выше) - на определенных размерах матрицы (при наличии индикатора TM1637) сразу после включения индикатор писал вместо времени 'br37', что свидетельствовало как бы о том, что прошивка находится в состоянии изменения яркости (нажатой кнопки). Я с индикатором повторил - у меня то же писало, но яркость не изменялась при этом.

Причиной было, что библиотека Гайвера которая опрашивает кнопку почему-то считала, что сразу после старта прошивки кнопка находится в нажатом и удерживаемом состоянии. Выше я написал где что добавить, чтобы этого избежать. Впрочем, обновленную версию также выложил в репозиторий. Вот попробуйте у себя ту строчку добавить - на картинке выше обведена красной рамкой.

Вот у меня такого эффекта не наблюдается, но чем черт не шутит...
 

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
121
32
Омск
@vvip,
Да, действительно, причина была в этом. Помогло, спасибо большое!

Обновился до версии 1.14.2023.1108, на esp8266 при выборе эффекта «Погода» текущее изображение на матрице замирает и не меняется до смены эффекта. На esp32 всё работает. Ничего же не менялось?
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@VadZher, Ничего не менялось. А что должно меняться в эффекте Погода? Это статический эффект, который показывает картинку, соответствующую текущей полученной от погодного сервера погоде и текущую температуру всё время эффекта, лишь чуть-чуть проявляя "дыхание" в виде плавного изменения яркости картинки туда-сюда. Глубина "дыхания" устанавливается в настройках эффекта.
 

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
121
32
Омск

@vvip, Я имел в виду, что не увидел изменений в файлах на GitHub между версиями v.1.14.2023.0602 и 1.14.2023.1108, касающихся эффекта «Погода». Вместе с тем, теперь, при его вызове (автоматически при смене эффекта, либо вручную) на матрице замирает предыдущий эффект, «дышащие» символы погоды с температурой не отображаются, но мелькают на долю секунды, если сменить эффект на любой другой.
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@VadZher, вероятно что-то с памятью. Нехватка, например, когда эффект не может получить память и просто ничего не отображает. Или какой-то глюк компилятора. На моей памяти был случаи, когда вот так же эффект переставал отображаться. Как ни странно, решилось добавлением в исходном коде эффекта нескольких пустых строк. Практически в случайном месте. Не знаю что это было, но факт был. Добавляешь пустые строки - эффект начинает работать. Убираешь - снова замораживается. Так что ничего внятного сказать не могу. Давайте смотреть в логе - может что-то пишется при включении эффекта...
 

VadZher

★✩✩✩✩✩✩
4 Ноя 2021
121
32
Омск
@vvip,
Смена эффектов настроена через 30 секунд, эффект "Анимация" и "Узоры" отображаются, эффект "Погода" - застывший кадр из эффекта "Анимация".
Лог при этой такой:
11:53:37.811 -> Настройки сохранены в EEPROM
11:53:53.470 -> Режим: Анимация
11:54:23.508 -> Режим: Погода
11:54:53.513 -> Режим: Узоры

С получением ответа от сервера погоды проблем нет:
12:02:34.722 -> Запрос текущей погоды
12:02:34.945 -> Погода получена: Yandex
12:02:34.945 -> Город: Омск
12:02:34.945 -> Сейчас: пасмурно, +3ºC
12:02:34.945 -> Код иконки: 'ovc'
12:02:34.945 -> Цвет неба: '#6dc1ff'
12:02:34.945 -> Сейчас:
12:02:34.945 -> Рассвет: 08:33
12:02:34.992 -> Закат: 17:08

Прошил контролер (esp8266) с настройками:
#define DEBUG_MEM_EFF 1
#define DEBUG_MEM_STP 1
#define DEBUG_SERIAL 1
И эффект "Погода" заработал в штатном режиме.

В общем, посмотреть, что происходит с памятью не получается, т.к. с включёнными опциями MEM_EFF, MEM_STP эффект "Погода" работает и в логе ничего интересного нет, а с выключенными - не работает, но и в логе сведений об использовании памяти нет.
 
Изменено: