• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Программная перезагрузка ESP8266

S_007

New member
перезагружаю модуль таким набором методов:

Код:
Serial.flush();
SPIFFS.end();
delay(1000);
ESP.restart();
модуль может пepeзaгpyзитьcя несколько раз нормально, на третий раз срабатывает wdt и модуль зависает.

В чем может быть проблема?
Существует ли решение со 100% повторяемостью?
Поделитесь опытом и если можно примером.
 

enjoynering

Well-known member
вот что вы вызываете
Код:
void EspClass::restart(void)
{
    system_restart();
    esp_yield();
}
находится тут

предположу что не хватает esp_yield(). пробуйте так

Код:
Serial.flush();
SPIFFS.end();
WiFi.persistent(false); //disable saving wifi config into SDK flash area
WiFi.forceSleepBegin(); //disable AP & station by calling "WiFi.mode(WIFI_OFF)" & put modem to sleep
delay(1000);
ESP.restart();
 

S_007

New member
попробовал ваш вариант, к сожалению сразу
Код:
ets jan 8 2013, rst cause:4, boot mode:(1,6)

ets jan 8 2013, rst cause:4, boot mode:(1,6)

wdt reset

после этого esp вешается
 

enjoynering

Well-known member
rst cause:4 = watchdog reset. что не успевает завершится.

судя потому как мы передвинули delay(1000), предположу проблема в SPIFFS. проверьте все циклы while вручную или используйте tool для нахождения таких проблем - My ESP crashes running some code. How to troubleshoot it?
 

nikolz

Well-known member
перезагружаю модуль таким набором методов:

Код:
Serial.flush();
SPIFFS.end();
delay(1000);
ESP.restart();
модуль может пepeзaгpyзитьcя несколько раз нормально, на третий раз срабатывает wdt и модуль зависает.

В чем может быть проблема?
Существует ли решение со 100% повторяемостью?
Поделитесь опытом и если можно примером.
если вас не смущает задержка на 200 мс, то можно перезагружать через deep-sleep будет работать железно.
либо можете сделать тоже самое но через pin
 

S_007

New member
enjoynering, Спасибо огромное за полезную ссылку!

если вас не смущает задержка на 200 мс, то можно перезагружать через deep-sleep будет работать железно.
либо можете сделать тоже самое но через pin
задержка в 200 мс, абсолютно не смющает, даже пусть будет хоть 5 сек.
Идея такая чтоб после внесения настроек на веб странице, по нажатию кнопки модуль перезагрузился с новыми настройками, чтоб не нажимать кнопку ресет на самом модуле, если он расположен в труднодоступном месте и не вытаскивать с розетки чтоб он правильно загрузился.

Если у вас есть код реализации с deep-sleep, поделитесь если возможно.
Через pin для меня вообще не понятно
 

nikolz

Well-known member
enjoynering, Спасибо огромное за полезную ссылку!



задержка в 200 мс, абсолютно не смющает, даже пусть будет хоть 5 сек.
Идея такая чтоб после внесения настроек на веб странице, по нажатию кнопки модуль перезагрузился с новыми настройками, чтоб не нажимать кнопку ресет на самом модуле, если он расположен в труднодоступном месте и не вытаскивать с розетки чтоб он правильно загрузился.

Если у вас есть код реализации с deep-sleep, поделитесь если возможно.
Через pin для меня вообще не понятно
это делается очень просто
рассказывают как.
-----------------------
вариант 1
вы должны соединить GPIO16 c RST
в этом случае можно использовать режим deep-sleep (на дурине не пишу поэтому могу лишь на си написать) но в инете полно примеров кода задайте в поисковике ESP8266 deep-sleep
-----------------------
вариант 2
вместо deep-sleep подаете на пин (можно на тот же GPIO16) ноль
но этот вариант более сложный так как надо сформировать из потенциала на пине импульс т е использовать RC цепочку
при этом пин тоже соединяем с RST
===============================
соединять GPIO16 с RST надо через резистор, но лучше (я так делаю) через диод шоттки
 

nikolz

Well-known member
и еще возможно Вам не нужна перезагрузка а нужно просто переустановить соединение по wifi.?
это и быстрее и лучше, чем перезагружать
 

S_007

New member
и еще возможно Вам не нужна перезагрузка а нужно просто переустановить соединение по wifi.?
Мне приходила такая мысль, но сомневался что такое сработает,
но поскольку и Вы написали, то это точно должно работать
именно так и сделаю, это самый простой для меня вариант!
Безразмерное Спасибо Вам за Ваши ответы!
 
Сверху Снизу