ESP8266 — Отправка команды сброса программного обеспечения
У меня есть ESP8266, на котором запущен код Arduino для управления устройством с двойным реле (вверх, вниз, выключение), как с помощью физического переключателя, так и с помощью команд MQTT. После установки устройства на место у меня нет доступа в случае необходимости перезагрузки (просто в целях предосторожности).
Мой обходной путь:
1) условие: функция, которая при 4 обнаружении 4 повторных нажатий кнопки ВВЕРХ - должна отправить сигнал перезагрузки.
2) сигнал перезагрузки:
void sendReset() {
Serial.println("Sending Reset command");
Serial.println(1/0);
}
Функция sendReset
фактически перезагружает устройство, и загрузка происходит по мере необходимости, НО - является ли этот способ правильным решением? действительно ли процесс загрузки загружает все службы и освобождает/память или что-то еще.... КАК НЕОБХОДИМО?
Парень
@Guy . D, 👍2
1 ответ
Лучший ответ:
1/0 — исключение (деление на ноль). Ядро Arduino esp8266 имеет программный сброс: ESP.reset()
. Вызвав эту функцию, вы получите действительный сброс.
Примечание относительно программного сброса. В esp8266 есть ошибка. Если программный сброс (или исключение) выполняется в программе, запущенной сразу после перепрошивки, плата возвращается в режим перепрошивки, поскольку мигающий флаг все еще активен. Возможно вы заметили, что после прошивки загрузчик не перезагружает плату, а выполняет прошитый код.
- Nodemcu 1.0 и режим загрузки (1,6) после мягкого сброса
- D1 mini не возобновляет работу, как ожидалось, после глубокого сна
- Трассировка стека сброса ESP12E Soft WDT ведет к библиотекам
- ESP8266 сброшен из-за подключения реле / переменного тока
- ESP8266 всегда сбрасывается после 65 секунд работы
- Сброс глубокого сна с датчиком удара
- ESP8266-01 Сброс при работе двигателя постоянного тока
- часы nodemcu GPIO6