Как узнать, просыпается ESP32 самостоятельно или вручную

У меня есть проект, в котором я помещаю ESP32 в режим глубокого сна на определенное время, например: 1 час

Чтобы иметь возможность самостоятельного пробуждения, кабель должен быть подключен от GPIO 16 к контакту сброса, поэтому в основном ESP отключает контакт 16 и вызывает сброс.

Мне также нужна возможность вручную разбудить ESP, поэтому параллельно этому кабелю я подключаю кнопку к GND, чтобы я мог вручную сбросить ESP и разбудить его.

Однако мне нужно иметь возможность определить, пробудился ли ESP сам, потому что прошел один час, или он был разбужен вручную.

Я не могу подключить ESP к ISP времени, чтобы проверить время, поэтому первым делом я подключил кнопку также к входу и считывал ее при запуске ESP.

Однако ESP не запустится до тех пор, пока не будет отпущена кнопка, задающая низкий уровень RST, а затем уже слишком поздно читать ее и смотреть, была ли она нажата.

Можно ли узнать, был ли сброс настроек ESP вручную или он проснулся сам по себе?

, 👍1


1 ответ


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

3

Я думаю, вы путаете ESP32 и ESP8266. Нет необходимости подключать GPIO16 для сброса на ESP32.

Вместо этого ESP32 имеет код "ULP" - Процессор со сверхнизким энергопотреблением (по сути, процессор RTC), который посылает сигналы пробуждения ядрам ESP32. Именно это пробуждает систему через час.

UTP также может запускать пробуждение из других источников — чаще всего используется для пробуждения от внешнего сигнала, например кнопки. Но это работает только в том случае, если этот сигнал подключен к одному из входных контактов RTC (GPIO с 34 по 39) или к определенным контактам, поддерживающим прерывание (вы можете прочитать больше о том, что может разбудить систему здесь).

После пробуждения вы можете запросить ULP, чтобы узнать, почему он разбудил ESP32, используя esp_sleep_get_wakeup_cause().

,

esp8266 также имеет RTC, но есть некоторая ошибка в дизайне, и он не может проснуться внутри. подключение io 16 для сброса является обходным путем, @Juraj

Еще одна причина не заморачиваться с esp8266 и сразу перейти на ESP32..., @Majenko

Спасибо. похоже, это то, что мне было нужно., @Sembei Norimaki