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

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

Комментарии

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@xsjado_mw, ну оно понятно - оно не рассчитана на такую длину строки. Там просто буфера не хватает. И индекс - байт. По идее вообще длинее 128 символов не должно показывать. А почему не по килобайту строки? Ты что, роман какой-то по строкам выводишь?
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@xsjado_mw,ну тогда тебе точно другой проект нужно - не новогоднюю гирлянду и часы... И чтобы строк забить много можно было, а не 35 как тут - возможно с SD-карты из файла, и чтобы длина была неограниченной, и чтобы лишнего не было. А может еще и показ как-то регулировался/настраивался. Этот проект точно не то, что нужно... Попытка натянуть сову на глобус.
 

Aleks_1975

✩✩✩✩✩✩✩
24 Май 2023
16
1
Добрый день. Версия LedPanelWiFi-main_1_14__15_05_2023. При включении прокрутки часов скорость примерно от 50 до 70 эффекты снегопад и матрица замирают на полсекунды и получаются рывками. Если включить часы поверх эффектов рывки пропадают. На версии LedPanelWiFi-main_1_14__22_05_2023 такой эффект стал сразу даже если прокрутка выключена при максимальной скорости замирания пропадают.
 

vvip

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

Для интересующихся - причина была в следующем: привыкнув к более-менее стабильной работе ядра 2.7.4 для ESP8266 и 1.0.6 для ESP32 я полагал, что все в нем и библиотеке FastLED работает стабильно и никаких особо сбоев нет. То есть - работаем по таймеру эффекта и таймеру бегущей строки. В цикле loop проверяем, если таймер эффекта или строки сработал - нужно сформировать новый кадр и вывести его на матрицу. Так и делаем. Если время для формирования нового кадра не пришло - ничего не изменилось, ничего не делаем, просто возвращаемся в loop() и дожидаемся когда сработают таймеры эффекта и бегущей строки (то есть - скорость эффекта).

В том то и была ошибка. Новые ядра в сочетании с библиотекой FastLED работают нестабильно. В том плане, что кадр сформировали, дали команду вывода кадра на матрицу и... А вот тут фиг. По только ядру известной причине он может вывести кадр, а может проигнорировать его и никуда ничего не выводить. Кадр просто теряется. По следующему таймеру смены кадра вывод произойдет, но визуально этот пропущенный кадр выглядит как рывки в эффекте или в бегущей строке.
Когда скорость эффекта / строки большая - команда вывода на матрицу отправляется часто и пропущенные кадры незаметны. Визуально они сглаживаются.

Поняв причину - добавил вывод на матрицу в каждом цикле loop() вне зависимости - изменилось что-то в кадре или он точно такой же как был. Зато, если предыдущий цикл вывода на матрицу ядро проигнорировало - изображение все равно будет выведено в следующем цикле loop() и визуально не будет пропуска кадров, то есть подергиваний не должно быть.

Протестировал и на ESP8266 на последнем ядре 3.1.2 и на ESP32 тоже на последнем ядре 2.0.9 - подергиваний не вижу.
Проверяйте.

А вообще, похоже, проект 1.14 с веб-интерфейсом нужно признать не слишком удачным. И из за нестабильной работы новых ядер, и из за нестабильной работы самого Web-сервера. Ему часто не хватает памяти для отправки / приема сообщений и он просто может перезагружать контроллер, по нехватке памяти, если что-то пошло не так. Особенно на ESP8266... Вероятно стоит признать проект неудачным и закрыть его...
 
Изменено:
  • Лойс +1
Реакции: Дрон

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
Здравствуйте форумчане и уважаемый @vvip, в последней версии исчезли дёрганья и торможения, но остались "строчные артефакты", вспышки разной длинны. У меня матрица 15*15, может в ней проблема?
Контроллер ESP32,
Прошивку по OTA в IDE отключил,
Загружаю с Erase All Flash,
Скетч использует 1208429 байт (57%) памяти устройства,
Спасибо за проект, интерфейс классный!
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Дрон, 99% вспышек и артефактов - проблемы с питанием. Нужно чтобы питание на систему было не более 5.1 вольт, лучше -4.8, иначе нужно ставить подпирающий диод. Проблема точно не в размерах матрицы.
Второй возможный вариант (у меня не проявляется, но тут жаловались) - такие эффекты случаются на ядре ESP32 версии 2.06-2.09 (на других из серии 2.x.x вообще не работает). Если стоит ядро 2.06-2.09 - попробуй откатиться на версию 1.0.6...
 

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
@vvip,
Помогло только смена ядра на 1.0.6. Спасибо, надеюсь Вы не бросите проект.
Ещё вопрос, как сделать "Erase" с ядром 1.0.6.?
В IDE нет такой строки.
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Дрон, не понимаю зачем это нужно, но наверное можно использовать какой-нибудь сторонний ESPTools. Гуглите. Еще теоретически стирание EEPROM происходит при смене таблицы разбивки разделов - попробуйте выбирать между первыми двумя пунктами -1.2App / 1.5 SPIFFS и FAT каждый раз при загрузке скетча.
 

Aleks_1975

✩✩✩✩✩✩✩
24 Май 2023
16
1
Добрый день уважаемый vvip. Вы пишите что увеличили длину текста бегущей строки до 1024. А сколько общее количество символов, в ранних версиях по моему было чуть больше 1500, это теперь почти весь объём в одну строку забить можно.
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Aleks_1975, раньше все строки хранились в памяти EEPROM размер которой был ограничен 4К минус сколько то еще на хранение всяких других параметров. Теперь с версии 1.14 все строки хранятся в файловой системе микроконтроллера. То есть - 36 строк по 1К - значит - 36К будет занимать...

Тут, правда, может, слегка обманул.... Наверное все же длина строки кириллицы будет около 512 символов. Потому что кирилличесский текст хранится в двухбайтовых UTF8, а 1024 - это размер буфера чтения из файла. Причем в этот же объём входят символы макросов, которые не отображаются, но как-то меняют текст. Наверное если кому-то реально нужно 1К строку - надо будет увеличить размер буфера и выделять не в стеке, а в хипе. Но это уже детали. Если у кого строка будет обрезаться - пишите, увеличим буфер под строку.
 
Изменено:

Aleks_1975

✩✩✩✩✩✩✩
24 Май 2023
16
1
Да и еще может настала пора подчистить код.
Вроде не имеет смысла хранить настройки в файле a_def_hard.h если компилятор берет их из других файлов. Это создает путтаницу для тех кто только начинает. К тому же у меня с параметрами #define A_DEF_DEVC 0 и #define A_DEF_PASS 0 скетч не скомпилировался да наверное этим уже никто и не пользуется.
У меня закоментированы строки:
В файле "a_def_hard.h" закомментированы строки - 23-27, 150-234, 258-328, 365-433.
В файле "a_def_soft.h" закомментированы строки - 17-35, 45-66.
И все прекрасно компилируется и работает, но с кахдой новой прошивкой это приходится повторять. А понимаю что на работе кода не как не отражается но было бы удобнее.
Я не силен в программировании, может еще что то можно убрать или хотя бы закомментировать, а в комментарии написать кому нужно чтоб раскоментировали. А в остальном проект отличный, мне очень нравится, спасибо
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Aleks_1975, хм... А у меня - скомпилировался... Других файлов в папке нет - они в зип-архиве. Это для новичков нужно пойти, распаковать, менять там... А так - в одном месте в a_def_hard.h поменял 1 на 0 - и настройки тут же в этих файлах по умолчанию... А если свои приватные файлы имеешь - так и менять ничего не нужно - оно твои файлы и подхватит.
Я опросы не проводил кто чем пользуется, но тем не менее - запасной вариант есть.

А на что ругается то, что компиляция не проходит? У меня нет проблем с компиляцией.
 

Aleks_1975

✩✩✩✩✩✩✩
24 Май 2023
16
1
На что ругался не помню, я просто попробовал, не скомпилировался ну я и забросил это, стал пользоваться другим вариантом, может я изменил что то не то. надо будет еще попробовать

Проверил, правда ничего не менял, тоже скомпилировался, значит я что то где то еще зацепил. Спасибо
 

Aleks_1975

✩✩✩✩✩✩✩
24 Май 2023
16
1
Добрый день. Подскажите где изменить IP 192.168.4.1 точки доступа которую создает ESP. Потестировал версию от 25 мая. Тексты кирилицей 270 символов, если больше МК перезагружается, с макросом S не более 70 символов иначе тоже перезагруз. Спасибо
 

Aleks_1975

✩✩✩✩✩✩✩
24 Май 2023
16
1
ESP8266 может в нем дело, сейчас нет под рукой, в монитор порта типо какогото массива выводит и уходит в перегагруз, дома вечером сделаю
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Aleks_1975, ну у меня 8266 не зависал, но с ним совсем все плохо. В плане того, что экспериментальным путем установлено, что приемный буфер под сообщения с web-сокета ядро (точнее библиотека AsyncWebServer) у него 258 байт и он тубо обрезает хвост. Сообщения передаются в json, он получается обрезанным - сообщение все что не влезло в буфер - игнорируется, даже команда на сохранение/показ длинной строки не проходит. Остаток строки приходит вторым сообщением. Попробовал переписать, склеивая строку из нескольких сообщений, но он принимает их как-то или не по порядку или к ней прилеплена часть команды пинга или другой предыдущей, или, похоже просто мусор из буфера. То есть склеить строку могу, но внутри будет мусор. И отделить мух от котлет невозможно.

С ESP32 видимо попроще - там подлиннее строка влазит - вот 340 букв UTF8 влезало (больше не проверял) - то есть в байтах - более 670.

Так то это проект гирлянды на окно и длинные строки в нем совсем не предполагались, максимум - "С Новым Годом!". По хорошему для вывесок нужно ответвлять отдельный проект, выбрасывать из него все эффекты (особенно шумовые). Тогда и длину матрицы можно более 128 диодов делать, и всякие фишки именно для бегущей строки придумывать / реализовывать. И передачу длинных строк как-то на части разрезать, для гарантированно правильного приема, чтобы не было проблем с буферами, которые внутри сторонних библиотек) и из скетча с ними ничего толком сделать нельзя......
 

Дрон

✩✩✩✩✩✩✩
18 Окт 2019
28
5
Здравствуйте, у меня панель 15*15 работает в основном с эффектом "Штора" с часами и температурой. Заметил такую особенность: шрифт как раз подходит под эту матрицу, но при наступлении 21.00 и далее до 22.00 строки смещаются в право на один сигмент(полосу сигментов), при достижении 22.00 шрифт восстанавливается.
 

vvip

★★★★✩✩✩
18 Дек 2018
504
227
@Дрон,возьми сейчас последнюю версию. Может исправится.