ESP8266 — Отправка команды сброса программного обеспечения

У меня есть ESP8266, на котором запущен код Arduino для управления устройством с двойным реле (вверх, вниз, выключение), как с помощью физического переключателя, так и с помощью команд MQTT. После установки устройства на место у меня нет доступа в случае необходимости перезагрузки (просто в целях предосторожности).

Мой обходной путь:

1) условие: функция, которая при 4 обнаружении 4 повторных нажатий кнопки ВВЕРХ - должна отправить сигнал перезагрузки.

2) сигнал перезагрузки:

void sendReset() {
  Serial.println("Sending Reset command");
  Serial.println(1/0);
}
Функция

sendReset фактически перезагружает устройство, и загрузка происходит по мере необходимости, НО - является ли этот способ правильным решением? действительно ли процесс загрузки загружает все службы и освобождает/память или что-то еще.... КАК НЕОБХОДИМО?

Парень

, 👍2


1 ответ


Лучший ответ:

5

1/0 — исключение (деление на ноль). Ядро Arduino esp8266 имеет программный сброс: ESP.reset(). Вызвав эту функцию, вы получите действительный сброс.

Примечание относительно программного сброса. В esp8266 есть ошибка. Если программный сброс (или исключение) выполняется в программе, запущенной сразу после перепрошивки, плата возвращается в режим перепрошивки, поскольку мигающий флаг все еще активен. Возможно вы заметили, что после прошивки загрузчик не перезагружает плату, а выполняет прошитый код.

,