А разработчик то данного проекта появляется в данной ветке?
Вот к примеру один из глюков с инициализацией WiFi, рассмотрим только последнюю версию.
Если выбрать свою сеть, но ввести "левый" пароль (или не ввести), модуль вечно будет по WiFi недоступен, т.к. роутер вроде увидели, но дальнейшее подключение пущено на самотек. В итоге ни AP не подняли, ни к роутеру прицепиться не смогли. В самой либе ESP`шки, автор напрямую лезет к структуре, т.е. внутрь класса WiFi, но не контролирует длину строки SSID и пароля. А при этом если произойдет переполнение по длине заданных переменных, произойдет х.з. что в самой низкоуровневой части программы коннекта к роутеру и поднятия IP стека (в SDK данная часть кода к сожалению закрыта). Скорее всего именно из за этого и вечные перезагрузки модуля у некоторых.
p.s. Если автор проекта все еще посещает данную тему, стукнись в личку, может что и подскажу дельного.
p.p.s. Мне самому проект не интересен для повторения или доработок, есть свои наработки по данной теме, ну и рулёжка силовухой в данном варианте меня точно не устраивает. Просто отслеживаю практически все проекты автоматизации, чтобы быть так скажем всегда в теме. Помочь в этом плане, или поделиться знаниями/наработками мне не влом (ну только что от разжёвывания своих коммерческих проектов воздержусь ).
Автоматика с веб управлением на основе esp32 и pzem
serjrv
Кандидат наук
Камышин
393 219
Отв.760 16 Дек. 21, 22:12
sechevoy
Специалист
Запорожье
148 26
Отв.761 16 Дек. 21, 22:46, через 34 мин
Не плодите сущности без необходимости. Проблема в поднятии точки доступа, а не в подключении к роутеру. В проекте точка доступа без пароля. Поэтому всё, что Вы описали к проблеме не относится. Не знаю как в этой автоматике, но я в других проектах использую билиотеку Wi-Fi manager, которая как раз отвечает за поднятие точки доступа, сканирования wi-fi сетей и сохранении SSID/PASSWORD в память. Глюк происходит до поднятия точки доступа. Что скажете по поводу лога из сериалпорта?
В логе ошибка происходит после строки
[0;32mI (476) cpu_start: Pro cpu start user code[0m
В логе ошибка происходит после строки
[0;32mI (476) cpu_start: Pro cpu start user code[0m
serjrv
Кандидат наук
Камышин
393 219
Отв.762 16 Дек. 21, 23:27, через 42 мин
sechevoy, У тебя с чтением текста проблемы? Если ПАРОЛЬ к роутеру не верен, не будет и точки доступа поднято, просто железка будет в ауте...
Трахайтесь в общем то дальше тогда сами.
Трахайтесь в общем то дальше тогда сами.
sechevoy
Специалист
Запорожье
148 26
Отв.763 16 Дек. 21, 23:39, через 12 мин
Новая железка после первой прошивки знает какую-то сеть wi-fi?
serjrv
Кандидат наук
Камышин
393 219
Отв.764 17 Дек. 21, 00:11, через 33 мин
Новая железка после первой прошивки знает какую-то сеть wi-fi?sechevoy, 16 Дек. 21, 23:39Для тех кто в танке...
При первом подключении, ESP`шка не знает название домашней сетки (SSID), соответственно и подключиться к ней не пытается, а просто поднимает точку доступа (AP). А вот если название/имя (SSID) (я хер его знает как доступно объяснять народу, кому ОКЕЙ ГУГЛ недоступен...) ПРИСУТСТВУЕТ уже в памяти контроллера, а ее вы нихрена не стираете при пере прошивке, контроллер и пытается подрубиться к домашней сетке, и совершенно насрать что парольик не тот или пуст. Контроллер думает, если уж пользователь задал что то, и тем более SSID сошлось, значит и паролик к сетке берем не задумываясь (который кстати разработчик бездумно и бесконтрольно сразу во внутреннюю структуру класса прописывает). Вот именно от этого у вас проблемы... Ну и если не только последние сообщения читаешь, мог бы и увидеть/прочитать, почему прошивка посредством самой среды в большинстве случае работает, а прошивая ВСЕГО 4 выложенных файлика - ни черта.
Надеюсь сейчас доступно?
p.s. Однозначно последняя подсказка, задолбало такое общение с гордыми, но не компетентными орлами...
sechevoy
Специалист
Запорожье
148 26
Отв.765 17 Дек. 21, 00:57, через 47 мин
Но по логике библиотеки после нескольких неудачных попыток подключения к "старой" сети еспэшка должна подымать точку доступа. Судя по логам она не пытается подключиться к wi-fi сети.
Очень жаль, что топикстартер давно не появляется в ветке.
Коллеги, попробуйте скомпилировать бинарники по совету serjrv. Поможет, поблагодарим от души, не поможет, будем копать дальше.
Очень жаль, что топикстартер давно не появляется в ветке.
Коллеги, попробуйте скомпилировать бинарники по совету serjrv. Поможет, поблагодарим от души, не поможет, будем копать дальше.
gol_avto
Доцент
Москва - Серпухов - Анапа
1.3K 458
Отв.766 17 Дек. 21, 06:08
p.s. Попробуй все же файлик "hd_wifi.c" из 71 версии заменить в 74.serjrv, 15 Дек. 21, 20:53Где ж его взять то? Архива на Гитхабе старой версии нет, у меня тоже. Так что менять нечем.
========
Ещё раз попробовал и 071 и 074 версии прошить бинарниками с последующим выкл/вкл Wi-Fi на ноуте - увы фокус не удался. Ноут ESP не увидел. Через среду всё восстановилось.
Так что у всех фломастеры разные, у кого то 071 работает, а 074 - нет. У меня обе мертвые через бинарники.
Браузер Chrome - версия 96.0.4664.110 (Официальная сборка), (64 бит)
P.S. бедная ESP-шка, уже изнасиловал её перепрошивками.
сообщение удалено
Volume
Кандидат наук
Уфа
478 274
Отв.767 17 Дек. 21, 10:40
Если выбрать свою сеть, но ввести "левый" пароль (или не ввести), модуль вечно будет по WiFi недоступенserjrv, 16 Дек. 21, 22:12если добавлять проверки везде где пользователь может накосячить, код как минимум удвоится.
В коммерческих проектах это маст хэв, но в некоммерческих , как в этом, резоны совершенно иные - минимизировать свои трудозатраты. Автор и так массу времени на проект потратил, просто чтоб запускался и работал, поэтому к нему никаких вопросов.
Развитие проекта - дело коллективное. У меня как будет свободное время - попробую разобраться. Пока занят другим проектом
сообщение удалено
serjrv
Кандидат наук
Камышин
393 219
Отв.768 17 Дек. 21, 12:59
Volume, Там делов на 5 минут, у меня просто среда не установлена НУЖНЫМ для проверки способом (уже писал об этом).
Но чтобы тебе долго не ковырять:
В файле hd_wifi.c в последней функции wifiSetup(), надо полностью переписать код инициализации WiFi
Основные косяки вот:
if (!WIFI_knowApCount) {
// Нет заданных точек доступа - переходим в режим AP
... }
Т.е. точку доступа ESP`шка поднимет ТОЛЬКО если наш роутер ни разу не прописан, или его не увидели.
Далее:
else {
...
strlcpy((char*) wifi_config.sta.ssid, w->ssid, sizeof(wifi_config.sta.ssid));
if (strlen(w->password)) strncpy((char*) wifi_config.sta.password, w->password, sizeof(wifi_config.sta.password));
...
}
Вот именно здесь надо проверять не только на пустой пароль, но и на его максимальную длину и допустимость символов (т.е. любой символ в пароле > 0x20 && < 0x80). SSID кстати тоже не повредит проверить аналогичным образом, вдруг это первая прошивка с "кашей" в памяти. Именно из за бардака в этом месте кода, у народа и вечные перезагрузки, и прочие глюки.
Далее надо завести таймер секунд на 20 - 30, и если за это время не смогли подключиться к домашней WiFi, идем поднимать свою точку доступа (AP).
p.s. Вот кстати у кого точка доступа не появляется, могли бы у себя так проверить: выключить из розетки свой роутер, а затем уже подать питание на ESP`шку. Поднимется точка доступа в этом случае? Если да, то я прав на 100%, если не поднимется AP, значит есть и еще косяки в коде. Просто глянув чутка внимательнее, видно что у автора просто куски кода из разных проектов надерганы и адаптированы к данной прошивке (уж слишком сильно различается стиль написания в разных кусках кода).
Но чтобы тебе долго не ковырять:
В файле hd_wifi.c в последней функции wifiSetup(), надо полностью переписать код инициализации WiFi
Основные косяки вот:
if (!WIFI_knowApCount) {
// Нет заданных точек доступа - переходим в режим AP
... }
Т.е. точку доступа ESP`шка поднимет ТОЛЬКО если наш роутер ни разу не прописан, или его не увидели.
Далее:
else {
...
strlcpy((char*) wifi_config.sta.ssid, w->ssid, sizeof(wifi_config.sta.ssid));
if (strlen(w->password)) strncpy((char*) wifi_config.sta.password, w->password, sizeof(wifi_config.sta.password));
...
}
Вот именно здесь надо проверять не только на пустой пароль, но и на его максимальную длину и допустимость символов (т.е. любой символ в пароле > 0x20 && < 0x80). SSID кстати тоже не повредит проверить аналогичным образом, вдруг это первая прошивка с "кашей" в памяти. Именно из за бардака в этом месте кода, у народа и вечные перезагрузки, и прочие глюки.
Далее надо завести таймер секунд на 20 - 30, и если за это время не смогли подключиться к домашней WiFi, идем поднимать свою точку доступа (AP).
p.s. Вот кстати у кого точка доступа не появляется, могли бы у себя так проверить: выключить из розетки свой роутер, а затем уже подать питание на ESP`шку. Поднимется точка доступа в этом случае? Если да, то я прав на 100%, если не поднимется AP, значит есть и еще косяки в коде. Просто глянув чутка внимательнее, видно что у автора просто куски кода из разных проектов надерганы и адаптированы к данной прошивке (уж слишком сильно различается стиль написания в разных кусках кода).
sechevoy
Специалист
Запорожье
148 26
Отв.769 17 Дек. 21, 16:08
Переименовал свой SSID на роутере и включил еспэшку, ребуты повторились.
serjrv
Кандидат наук
Камышин
393 219
Отв.770 17 Дек. 21, 16:49, через 41 мин
sechevoy, Ну так выложи сюда свой лог загрузки, чтобы было видно в какой момент (на каком шаге загрузки) у тебя сбой происходит. Посмотреть лог загрузки можно к примеру монитором порта среды Arduino, скорость 115200.
К примеру если не выводит как минимум это:
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:5736
load:0x40078000,len:14452
load:0x40080400,len:3864
entry 0x4008065c
[0;32mI (415) cpu_start: Pro cpu up.[0m
[0;32mI (415) cpu_start: Application information:[0m
[0;32mI (415) cpu_start: Project name: esp32_hd[0m
[0;32mI (417) cpu_start: App version: c725aad-dirty[0m
[0;32mI (423) cpu_start: Compile time: Apr 12 2020 16:43:47[0m
[0;32mI (429) cpu_start: ELF file SHA256: 0afc069ca9a60c29...[0m
[0;32mI (435) cpu_start: ESP-IDF: v4.2-dev-414-g132cc67c0[0m
[0;32mI (441) cpu_start: Single core mode[0m
[0;32mI (445) heap_init: Initializing. RAM available for dynamic allocation:[0m
[0;32mI (452) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM[0m
[0;32mI (458) heap_init: At 3FFBA308 len 00025CF8 (151 KiB): DRAM[0m
[0;32mI (465) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM[0m
[0;32mI (471) heap_init: At 40078000 len 00008000 (32 KiB): IRAM[0m
[0;32mI (477) heap_init: At 40097CB4 len 0000834C (32 KiB): IRAM[0m
[0;32mI (483) cpu_start: Pro cpu start user code[0m
[0;32mI (501) spi_flash: detected chip: gd[0m
[0;32mI (502) spi_flash: flash io: dio[0m
[0;32mI (502) cpu_start: Starting scheduler on PRO CPU.[0m
[0;32mI (517) hd_esp32: RAM left 267032[0m
I2C installed
>> i2cScanner 0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[0;32mI (556) hd_esp32: Initializing SPIFFS[0m
[0;32mI (578) hd_esp32: Reset reason: Vbat power on reset
[0mто виноват даже не wifi, а просто видимо криво прошиваешь.
К примеру если не выводит как минимум это:
Скрытый текст
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:5736
load:0x40078000,len:14452
load:0x40080400,len:3864
entry 0x4008065c
[0;32mI (415) cpu_start: Pro cpu up.[0m
[0;32mI (415) cpu_start: Application information:[0m
[0;32mI (415) cpu_start: Project name: esp32_hd[0m
[0;32mI (417) cpu_start: App version: c725aad-dirty[0m
[0;32mI (423) cpu_start: Compile time: Apr 12 2020 16:43:47[0m
[0;32mI (429) cpu_start: ELF file SHA256: 0afc069ca9a60c29...[0m
[0;32mI (435) cpu_start: ESP-IDF: v4.2-dev-414-g132cc67c0[0m
[0;32mI (441) cpu_start: Single core mode[0m
[0;32mI (445) heap_init: Initializing. RAM available for dynamic allocation:[0m
[0;32mI (452) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM[0m
[0;32mI (458) heap_init: At 3FFBA308 len 00025CF8 (151 KiB): DRAM[0m
[0;32mI (465) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM[0m
[0;32mI (471) heap_init: At 40078000 len 00008000 (32 KiB): IRAM[0m
[0;32mI (477) heap_init: At 40097CB4 len 0000834C (32 KiB): IRAM[0m
[0;32mI (483) cpu_start: Pro cpu start user code[0m
[0;32mI (501) spi_flash: detected chip: gd[0m
[0;32mI (502) spi_flash: flash io: dio[0m
[0;32mI (502) cpu_start: Starting scheduler on PRO CPU.[0m
[0;32mI (517) hd_esp32: RAM left 267032[0m
I2C installed
>> i2cScanner 0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[0;32mI (556) hd_esp32: Initializing SPIFFS[0m
[0;32mI (578) hd_esp32: Reset reason: Vbat power on reset
[0m
Volume
Кандидат наук
Уфа
478 274
Отв.771 17 Дек. 21, 17:38, через 50 мин
Основные косяки вот:serjrv, 17 Дек. 21, 12:59думаю дело не в коде, а в технологии прошивки. Как тут уже сообщали - при прошивке пайтоновской утилитой esp-шной среды проблем не возникает. При ровно том же коде исходника.
Просто лично я всегда из среды программирования шью, поэтому граблю с прошивкой бинарниками ни разу не видел. Чтоб разобраться, надо разницу искать между прошивкой бинарника утилиткой и прошивкой из idf-ной среды
serjrv
Кандидат наук
Камышин
393 219
Отв.772 17 Дек. 21, 18:33, через 56 мин
думаю дело не в коде, а в технологии прошивки.Volume, 17 Дек. 21, 17:38Код тоже надо править, иначе при правильном SSID, НО неверном пароле, AP не поднимется.
В принципе я могу скомпоновать прошивку и выложить архив с "выдернутой" прошивалкой из Platform IO с насадкой ESP-IDF. Правда у меня конкретно под винду, на яблоке или линухе не заведется. Ну было бы неплохо если бы файлик boot_app0.bin (или как он у вас обзывается я не знаю) тоже кто то выдернул и выложил (выше что и как я писал). В итоге просто надо будет распаковать архив и просто запустить programm.cmd, далее выбрать COM порт из доступных и все (без выеживания с утилитой flash_download_tool).
Добавил утилитку для прошивки 74-й версии, пробуйте.
- распаковываем архив
- подключаем модуль ESP по USB к компу
- запускаем файлик programm.cmd
- выбираем 2-й пункт для полного предварительного стирания памяти ESP`шки
- выбираем свой номер COM порта
- ждем пока не напишет: "Для продолжения нажмите любую клавишу..."
- перегружаем модуль и проверяем
sechevoy
Специалист
Запорожье
148 26
Отв.773 17 Дек. 21, 22:00
К сожалению результат тот же. Ниже прилагаю лог из сериал порта.
Volume
Кандидат наук
Уфа
478 274
Отв.774 18 Дек. 21, 11:13
попробовал прошить утилиткой - все прошилось, все работает. Что делал:
1. скачал последнюю версию прошивальщика с https://www.espressif.com/en/support/download/other-tools
2. скачал архив 074 из [сообщение #13879601]
3. указал в прошивальщике 3 первых файла в соответствии с инструкцией ТС (образ spiff не шил - приложение при старте само отформатирует файловую систему)
4. ткнул "Start", дождался "Finish". Нажал "Stop", после чего закрыл приложение прошивальщика
5. выдернул шнурок USB, воткнул обратно (типа - рестарт espшки).
Запустил putty на COM-порт esp32, вижу лог нормального старта. Посмотрел в ноуте доступные WiFi точки - вижу точку hd_esp32
Сравниваю свой лог старта с логом sechevoy, вижу различия:
1я строчка, у меня
ets Jun 8 2016 00:22:57 (ets Jul 29 2019 12:21:46)
6я строчка
mode:DIO, clock div:2 (mode:DIO, clock div:1)
Вот этих строк у меня нет:
[0;31mE (29) esp_image: image at 0x110000 has invalid magic byte[0m
[0;31mE (29) boot: OTA app partition slot 0 is not bootable[0m
1. скачал последнюю версию прошивальщика с https://www.espressif.com/en/support/download/other-tools
2. скачал архив 074 из [сообщение #13879601]
3. указал в прошивальщике 3 первых файла в соответствии с инструкцией ТС (образ spiff не шил - приложение при старте само отформатирует файловую систему)
4. ткнул "Start", дождался "Finish". Нажал "Stop", после чего закрыл приложение прошивальщика
5. выдернул шнурок USB, воткнул обратно (типа - рестарт espшки).
Запустил putty на COM-порт esp32, вижу лог нормального старта. Посмотрел в ноуте доступные WiFi точки - вижу точку hd_esp32
Сравниваю свой лог старта с логом sechevoy, вижу различия:
1я строчка, у меня
ets Jun 8 2016 00:22:57 (ets Jul 29 2019 12:21:46)
6я строчка
mode:DIO, clock div:2 (mode:DIO, clock div:1)
Вот этих строк у меня нет:
[0;31mE (29) esp_image: image at 0x110000 has invalid magic byte[0m
[0;31mE (29) boot: OTA app partition slot 0 is not bootable[0m
serjrv
Кандидат наук
Камышин
393 219
Отв.775 18 Дек. 21, 12:03, через 50 мин
mode:DIO, clock div:2 (mode:DIO, clock div:1)Volume, 18 Дек. 21, 11:13Это только от установленной микросхемки флеша зависит, div:1 это просто максимальная скорость по шине SPI. У меня кстати тоже данный делитель равен единичке.
Вот этих строк у меня нет:А это уже ругань идет...
[0;31mE (29) esp_image: image at 0x110000 has invalid magic byte[0m
[0;31mE (29) boot: OTA app partition slot 0 is not bootable[0mVolume, 18 Дек. 21, 11:13
Кстати у sechevoy, такое впечатление что на инициализации I2C все стопориться и перегружается.
Немного переделал прошивальщик, убрал заливку spiffs, все равно образ бардачный...
_bin_074_2.zip
Ну и ложка дегтя, когда рухнет сервак обновлений, откуда первоначально нужные файлики подтягиваются, у народа опять проблемы нарисуются.
gol_avto
Доцент
Москва - Серпухов - Анапа
1.3K 458
Отв.776 18 Дек. 21, 12:40, через 38 мин
1. скачал последнюю версию прошивальщика с https://www.espressif.com/en/support/download/other-toolsПроделал тоже самое, смотрю в ноуте доступные WiFi точки - НЕ вижу точку hd_esp32
2. скачал архив 074 из [сообщение #13879601]
3. указал в прошивальщике 3 первых файла в соответствии с инструкцией ТС (образ spiff не шил - приложение при старте само отформатирует файловую систему)
4. ткнул "Start", дождался "Finish". Нажал "Stop", после чего закрыл приложение прошивальщика
5. выдернул шнурок USB, воткнул обратно (типа - рестарт espшки).Volume, 18 Дек. 21, 11:13
=============
Перепрошил ещё 3 раза, точки нет, подождал дольше (больше минуты) - точка появилась. Прошивал также 3 файла
serjrv
Кандидат наук
Камышин
393 219
Отв.777 18 Дек. 21, 13:07, через 28 мин
gol_avto, попробуй прошиться просто последний выложенный мной архив "_bin_074_2.zip", именно запустив programm.cmd после распаковки архива.
sechevoy
Специалист
Запорожье
148 26
Отв.778 18 Дек. 21, 13:24, через 18 мин
Ничего не помогло.
Откатился на 0.7.1
Подскажите, что было исправлено в 0.7.4 в сравнении с 0.7.1? Интересно знать, что я теряю.
Остаётся ждать автора прошивки (((.
Откатился на 0.7.1
Подскажите, что было исправлено в 0.7.4 в сравнении с 0.7.1? Интересно знать, что я теряю.
Остаётся ждать автора прошивки (((.
serjrv
Кандидат наук
Камышин
393 219
Отв.779 18 Дек. 21, 13:59, через 35 мин
sechevoy, К самому модулю что то подключено из внешних устройств (датчик давления, датчики температуры, дисплей)?