为什么我的 ESP32 永远不会从深度睡眠中唤醒?

问题描述 投票:0回答:1

我的深度睡眠通话从未重新启动 ESP32,我不知道为什么。这是我的代码:

#define uS_TO_S_FACTOR 1000000ULL
void deepSleep(long seconds) {
    loggerMain->info("entering deep sleep for: %l seconds",seconds);
#ifndef NO_DEEP_SLEEP
    esp_deep_sleep(seconds * uS_TO_mS_FACTOR);
#endif
    // we stop here 
}

我用 5 秒拨打此电话并等待...10 分钟后它还没有回来。我期望的是它会休眠 5 秒,然后重新启动(即运行 setup(),然后开始运行 Loop())。但它只是等待,就好像我指定了非常非常长的时间,而不是 5 秒。 我看过很多例子,代码似乎是正确的,尽管显然我做错了什么。有人能发现问题吗? 我尝试过将

esp_sleep_enable_timer_wakeup()
esp_sleep_start()
一起使用,但没有什么区别。 为了更清楚起见,我有时会从loop()调用上面的函数,通常是在我收到一条短信告诉我要睡多长时间之后。

使用 Arduino IDE 1.8.19 和 ESP32S3,特别是带有 SIM7000E 调制解调器的 Lilygo T-CAM。我希望其余的内容无关紧要,我只是误解了如何称为深度睡眠。

esp32 arduino-esp32 sleep-mode
1个回答
0
投票

似乎是关于失踪的事情

Serial.flush()
。我将代码修改为:

#define uS_TO_S_FACTOR 1000000ULL
void deepSleep(long seconds) {
  loggerMain->info("entering deep sleep for: %l seconds",seconds);
#ifndef NO_DEEP_SLEEP
  //esp_deep_sleep(seconds * uS_TO_mS_FACTOR);
  esp_sleep_enable_timer_wakeup(10 * uS_TO_S_FACTOR);
  SerialMon.flush();
  esp_deep_sleep_start();
#endif
  // we stop here 
}

并且它立即起作用了。问题解决了。

© www.soinside.com 2019 - 2024. All rights reserved.