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

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

Комментарии

Slava7

✩✩✩✩✩✩✩
18 Мар 2020
15
3
@Slava7, можно. Но вероятность что они будут реализованы - крайне мала.
В меню Web-приложения раздел "Режимы" добавить режим VIP (или даже несколько VIP-1, VIP-2) который имел бы приоритет над всеми режимами и работал по дате и времени. Пример 31.12.24 с 19.00 по 01.01.25 до 20.00 (+ Выбор действия.)
Как-то так. 😊
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Slava7, Это вряд ли...
Во первых - достаточно мудрено переделывать.
Во вторых - не вижу в этом практического смысла, повышения удобства или того факта, что это нужно мне или большому количеству пользователей.
А то что мне не интересно (или в чем я не вижу смысла) - я как правило не делаю...

По последним переделкам.
То, что в скетче используется возможность включения DHCP, а из UI его включить нельзя было - неправильно. Переделал.
То, что иногда часы нужно сдвинуть потому что размещение по центру не подходит. Это нужно мне, как оказалось. И кто-то просил. Сделал.
То же - с шириной точки в часах и пробелами вокруг нее - в эту же копилку.
То что градусы в макросе {WT} - добавляется несложно плюс до кучи в вышеизложенные переделки рядом меняются. Если бы делать только ее одну - даже не стал браться бы.

А вот эти vip-режимы - ну не вижу я в них смысла....
Может быть когда-нибудь, когда будет скучно и нечем заняться...

А пока - ну можно же просто задать время, в которое включить конкретный указанный режим. А следующей настройкой - в которое включить опять режим "Демо"... По крайней мере один "VIP" режим так можно организовать и без переделок. Ну и нюанс - через сутки не перескочишь - то есть с 19 одних суток до 20 других не сделать...
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Taza777, эффект "Вышиванка" не мой. Цельнотянутый у кого-то. И то, сначала он вообще был какой-то глючный, я его даже выкинуть хотел. Поскольку сам не разобрался как ого работает. Но потом кто-то переписал его и он стал нормально работать.

Беглый взгляд по коду говорит, что там вроде бы максимальная ширина на которой оно работает 32.
В общем - я не знаю как оно работает. Работает вот так, и всё...

Хотите поэкспериментировать - попробуйте вот тут вместо 32 поставить, например, 48
1733561049697.png
 
Изменено:

Slava7

✩✩✩✩✩✩✩
18 Мар 2020
15
3
@vvip
Решил подвигать часы, двигаются но не сохраняется настройка, нет ПРЕМЕНИТЬ.
И при нулевой температуре появляется С Была минусовая температура С не было.
8.png7.png8.png7.png
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Slava7,
Да, при нулевой температуре добавляется С/F, потому что одиноко торчащий 0 выглядит несимпатично. Так запрограммировано
Кнопки "Применить нет", потому что изменения применяются автоматически при изменении позиции ползунка

Не хотите значок С при нулевой температуре поставьте тут вместо 0 примеру 100 (clock.ino)

1733572635910.png
 
Изменено:

Slava7

✩✩✩✩✩✩✩
18 Мар 2020
15
3
@vvip,
У меня ползунок не фиксируется, зашёл на другую вкладку - вернулся все по нулям.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Slava7, да, какой-то косяк... :( Посмотрю в чем дело

UPD: Исправил, выложил в репозиторий. Нужно обновить файлы Web-интерфейса (перезалить). Код компилить и загружать не нужно.
 
Изменено:
  • Лойс +1
Реакции: Slava7

Slava7

✩✩✩✩✩✩✩
18 Мар 2020
15
3
@vvip
Я уже боюсь что-то спрашивать, обновился перестал работать Web-интерфейса. Откатился назад заработал.

Ура! С третей попытки работает!
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Slava7, даже не знаю что ответить. Перед выкладыванием и сообщением, что исправил - все проверил, обновил два своих устройства - наWemos d1 mini и на ESP32 WROOM. Оба исправно работают...
 
  • Лойс +1
Реакции: Slava7

Slava7

✩✩✩✩✩✩✩
18 Мар 2020
15
3
@vvip
Web-интерфейс умирает если после обновления загружаешь сохранённые ранее настройки.

Web-интерфейса опять пропал, а гирлянда работает.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Slava7, естественно я загружал сохраненные ранее настройки - не настраивать же всё заново. Никаких проблем не возникло...

Сразу после перезагрузки устройства - в мониторе порта сесть вывод содержимого папки web в логе? Она не пустая?
Может у вас просто файлы не загрузились? Если загрузка из Arduino IDE 2.x.x - там плагин довольно глючный - бывает делает вид, что всё ок, но на самом деле ничего не загружает... Проверяйте наличие файлов после загрузки...
 
Изменено:

Slava7

✩✩✩✩✩✩✩
18 Мар 2020
15
3
@vvip,

Установил старую, проверенную Arduino 1.8.19
Прошил всё по новому. Всё работает хорошо. Спасибо!
 

Игорь К.

✩✩✩✩✩✩✩
25 Дек 2023
21
2
Добрый день, уважаемый автор и форумчане. Все как всегда, до Нового Года осталось... и взялся за проект прошлого года: превратить панель из 225 диодов в 900. были закуплены гирлянды 3 шт по 300 шт. с шагом 5 см между диодами, сделал конструкцию крепления (1.5 м по горизонтали на 1,5 м по вертикали) исходя из посыла дражайшей: "не вздумай клеить что-то на окна, я их мыла". Если кому интересно сфотаю и выложу вариант. От прошлой работы остался Wemos D1 mini, надеясь впихнуть в него 900 диодов, оставил в схеме только SD-модуль и реле. Пока, версия прошивки 1.13. Вчера ночью удалось внести свои изменения в скетч и запустить компиляцию. Отчет ниже:
In file included from C:\Program Files (x86)\Arduino\libraries\FastLED\src/FastLED.h:75,
from sketch\a_def_hard.h:431,
from D:\Project Arduino\Projects\2024\GyverPanelWiFi-master-ver1.13\firmware\GyverPanelWiFi_v1.13\GyverPanelWiFi_v1.13.ino:246:
C:\Program Files (x86)\Arduino\libraries\FastLED\src/fastspi.h:157:23: note: '#pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output'
157 | # pragma message "No hardware SPI pins defined. All SPI access will default to bitbanged output"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
. Variables and constants in RAM (global, static), used 43444 / 80192 bytes (54%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1852 initialized variables
╠══ RODATA 6184 constants
╚══ BSS 35408 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 61435 / 65536 bytes (93%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 28667 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 588492 / 1048576 bytes (56%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 588492 code in flash
Если можно, попрошу прокомментировать отчет компиляции. Ну, не силен в понимании, проценты вижу, не совсем понимаю, их суммировать - тогда превышение... или как?
В рекомендауии скетча предлагается отключить обновление по воздуху OTA, для увеличения памяти: в меню "Инструменты", "Partition Scheme" - выберите "No OTA (2MB App / 2MB SPIFFS)". Ткните, не нашел в Инструментах данной строки. В менеджере плат для ESP8266 "NodeMCU 1.0 (ESP12E Module) во всех предлагаемых вариантах OTA не отключаемая.
И, если можно, еще вопрос: обязательно ли нужно устанавливать плагин для загрузки данных в файловую систему LittleFS для ESP8266? Как я понял из написанного в скетче, если без него, то матрица стартует ка Зигзаг. У меня она Зигзаг. Спасибо.
P.S. Огромное спасибо за прошлогоднюю помощь с панелью на 225 диодов. Отработала все новогодние каникулы. Она и подвигла сделать более читабельную панель.
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Игорь К., так а загружать прошивку то пробовали? Что говорит?
По отчету - никаких ошибок нет, все вмещается в разметку с ОТА.Плагин для загрузки файловой системы не нужен.
 
Изменено:

Игорь К.

✩✩✩✩✩✩✩
25 Дек 2023
21
2
vvip, время было позднее, к часу ночи стремилось, компиляция не с первого раза прошла (FastLed установил 3.6.0, как рекомендовано, а ядро ESP осталось от прежней сборки 2.7.4. Пока пришло осознание что не так, пока установил рекомендованное ядро 3.1.2, откомпилировал, увидел три группы процентов - понял, нужна консультация профи. Решил не заводиться на прошивку, а то так и на работу не дойти. Сегодня, обязательно прошью, раз Вы не видите ошибок. Постараюсь сегодня и о результате написать. Единственное, пока провод питания не развел. Может и его успею сделать. Спасибо.
*** просто для себя, ибо вопрос гложет - так где и как отключить OTA в Arduino IDE? Может в этом дело: в скетче рекомендована версия 1.8.19, у меня стоит 1.8.13 (нравится она мне, все, пусть и немногие проекты сделаны на ней без танцев с бубном), может в рекомендованной есть этот пункт, а в моей нет?
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
@Игорь К., это не зависит от версии Arduino IDE. Это зависит от ядра поддержки микроконтроллера (его версии) и какую в этой версии разметку таблицы разделов производитель ядра сконфигурировал. Меню"Инструменты" - "Flash Size"
 

Игорь К.

✩✩✩✩✩✩✩
25 Дек 2023
21
2
Еще побеспокою. Имеет значение прошивать МК без обвеса (SD-модуль и реле) или можно с ними? Спасибо
 

vvip

★★★★✩✩✩
18 Дек 2018
503
225
Еще побеспокою. Имеет значение прошивать МК без обвеса (SD-модуль и реле) или можно с ними? Спасибо
Не имеет. Можно вообще голую плату прошивать. Но проверить то все работает или нет - все равно подключать нужно.
 

Игорь К.

✩✩✩✩✩✩✩
25 Дек 2023
21
2
vvip, добрый вечер. Как и год назад, я Вам премного благодарен за помощь и советы. Скетч залился в МК без ошибок. Запустил монитор порта: идет перебор эффектов, показывается текущее время и погода. Осталось дело за разводкой питания и проверкой на "живой" панели. Попробую начать сегодня. Обязательно отчитаюсь о результате. И... если будут вопросы - обращусь.
Хорошего вечера, доброй ночи.
 

hhrhhr

✩✩✩✩✩✩✩
5 Дек 2024
7
1
Игрался с Jinx!, захотел фейерверк из встроенных скриптов. Выглядит он примерно так (один канал):
ezgif-5-3cc70ed148.gif

Первым делом записал ролик с анимацей в файл, скинул на флешку, но захотелось большего: чтобы повторений не было, чтобы было отдельным эффектом и тому подобное. Пустил трансляцию из Jinx! напрямую на гирлянду, 600 светодиодов потребовали уменьшить скорость эффекта, но в целом выглядело прилично. Смущала лишь необходимость наличия компьютера ;)

Попробовал сходу создать и добавить новый эффект прямо в прошивку, но столкнулся с кучей проблем из-за отсутствия отладчика. Чтобы исправлять одну опечатку нужно ждать пересборки и заливки, для понимания "да что ж тебе не нравится" нужно расставить кучу отладочных сообщений, понять что не так... В общем, долго и не эффективно.
Решил набросать эмулятор матрицы на Love2D (Lua(jit) под капотом, есть отладчик, перенос с C/C++ на Lua довольно простой). Набросал затычки и упрощённые функции вызываемые из FastLED, взял несколько эффектов из прошивки, чуток пошаманил - вуаля (исходники для Love2D), эффекты очень почти похожи на реальные:
ezgif-5-afed08e6cc.gif

Заработали как простенькие снегопады и матрицы, так и эффекты на шуме Перлина (правда, генератор самого шума перенести из FastLED я не осилил, как-то там очень железозависимо, поэтому взял готовый из Love2D). А вот, собственно, и сам реализованный фейерверк, почти полностью повторяющий оригинальный из Jinx!:
ezgif-5-90f3f8d984.gif
Добавил пару мелочей для красоты, типа затухания частиц и обсчёта их за экраном (чтобы улетающие вверх могли упасть обратно вниз). Но опять появилось НО, Lua - язык без строгой типизации, все приведения типов автоматические. Если использовать возможности luajit, то можно делать примерно так: local int_array = ffi.new("int[3]", {}) и быть уверенным, что любой элемент не станет внезапно double, но "дословного" поведения C-кода, ессно, не будет. Да и обратно перенести код из Lua в C/C++ тот ещё гемор, массивы индексируются с 1, а не 0, циклы for итерируются включительно, а не i < max, и тд.

И тут вижу коммит с описанием "Совместимость проекта с FastLED 3.9.4". Полез трогать, что это такое и как-то прям сразу нагуглил (точнее, надакдачил) четырехлетний fastled-wasm от jandelgado - модифицированные примеры для компиляции через WebAssymbly, то есть FastLED в браузере. Понял, что это то, что нужно, и чуть позже вышел на https://pypi.org/project/fastled/ , питоновский модуль для компиляции своего кода и запуска его в браузере.
Из версии 3.9.4 взял пару 2D-примеров, сделал по инструкции pip install fastled, в каталоге с примером просто запустил команду fastled - оно живое и работает в браузере!! Меняешь пару строк в коде, тут же автоматически происходит перекомпиляция и через несколько секунд наблюдаешь обновлённый результат.

Я, наверное, сильно отстал от моды, но для меня это было просто волшебно. Ессно, тут же нашёл первый "косяк", по умолчанию код компилируется через веб-сервис, что немного удлинняет процесс и непонятно, сколько времени это будет ещё работать. Чтобы запустить собственный локальный компилятор нужно ставить локальный docker (минус 10-20 Гб на диске и 2-3 Гб оперативки). Но таки всё установил с такой-то матерью и начал переносить фейерверк для внедрения в прошивку. Собсно, вот код, а вот и результат в виде веб-эмулятора (ссылка под картинкой):
Opera Снимок_2024-12-10_014508_hhrhhr.github.io.png
Реально, с локальным компилятором любое изменение буквально через 5-10 секунд сразу же видно.

Сходу брать и добавлять эффект в прошивку я побоялся, поэтому прошу помощи.
Во-первых, я где-то накосячил и салют получился с "искорками", которых не планировалось (гифка не передаст, но в эмуляторе они очень заметны). Что-то с работой с цветом или адресацией светодиодов, может кто более в FastLED понимающий поправит.
Во-вторых, там всякие float-ы и прочие синусы. Оптимизировать под железо, память и архитектуру я совсем никак, поэтому в примерах и никакого контроля ресурсов и их освобождения. Может и тут кто поможет ;)

Опус сей назначался теоретическим создателям новых и крутых эффектов, которых, как и меня, останавливало лишь отсутствие отладчиков.
 

hhrhhr

✩✩✩✩✩✩✩
5 Дек 2024
7
1
@Сотнег, под отладчиком я подразумевал это:
https://docs.platformio.org/en/stable/boards/espressif8266 написал(а):
Debugging currently does not support WeMos D1 R2 and mini board.
...
Debugging currently does not support WeMos D1 ESP-WROOM-02 board.
По первой ссылке вижу просто редактор кода и оооочень медленный эмулятор, буквально 1-2 кадра в секунду независимо от размера матрицы. Сравните сами, "чёрная дыра" из галереи там и она же скомпилированная вышеописанным способом.

Ставить бреки и изучать состояние переменных нельзя в обоих случаях, сделать вывод куда-нибудь на soulmatelights.com тоже не нашёл. То есть компилятор позволяет использовать любую IDE или просто редактор с автодополнением, и за это будет реактивная компиляция, быстрая эмуляция и отладочный перехват Serial.print в консоль браузера.

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

Oleg Ivanov

✩✩✩✩✩✩✩
26 Окт 2023
12
0
На WemosD1Mini с SD-шилдом для него (тем, который бутербродом,, без доп. стабилизатора 3.3V), заработала только 1 из 4-х разных MicroSd карт. На ESP32 c распаянным адаптером MicroSD/SD , работают 3 из 4. На неделе, как другие железки подвезут, продолжу эксперименты.
Эксперименты показали, что при использовании Micro SD Shield как на фото ниже с WemosD1Mini, нужно делать PullDown пина D8 (GPIO15). После этого все работает как часы.

MicroSDShield-1.jpgMicroSDShield-2.jpg
 

Oleg Ivanov

✩✩✩✩✩✩✩
26 Окт 2023
12
0
Вопросик по макросам бегущей строки:
{#n} в любом месте строки означает, что после отображения этой строки будет немедленно отображена строка с номером n, где n - 1..35 или '1'..'9','A'..'Z'
Правильно я понимаю, что если в ячейке "В" будет текст товарищи, а в ячейке "А" Ура {#B}, то при проигрывании ячейки "B" должно получиться Ура товарищи?
Что-то никак не получается прицепить строку {#n}.