乐鑫技术交流
直播中

golabs

9年用户 960经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表
私信 关注
[问答]

ESP12F深度睡眠后没有可用的WiFi网络是为什么?

我有一个带 DHT22 传感器的 ESP12F,它通过 WiFi 发布到 MQTT,然后进入深度睡眠 10 分钟,然后重试。我正在使用 Arduino IDE。
我有过非常不一致的行为,有时它工作正常,有时它陷入 WiFi 黑洞:启动时它连接正常,但在深度睡眠后,它根本找不到任何网络。
我正在尝试将电池电量降至最低,因此请使用
代码:全选  WiFi.mode(WIFI_OFF);
  WiFi.forceSleepBegin();
  delay(1);

在代码的开头,当我知道我需要使用 WiFi 时,请使用:
代码:全选    WiFi.forceSleepWake();
    delay(1);
  
    WiFi.persistent(false);
  
    // Bring up the WiFi connection
    WiFi.mode(WIFI_STA);

    // Static IP assignment
    WiFi.config(ip,gateway,subnet);  
   
    WiFi.hostname(wifi_hostname);
    WiFi.begin(wifi_ssid, wifi_password);

    int count = 0;
    while (WiFi.status() != WL_CONNECTED) {
      if (count > 50) { // 5 seconds
          if (debug) {
            Serial.println("WiFi connection timeout, dropping back into deep sleep");
            Serial.println(WiFi.status());
            int n = WiFi.scanNetworks(false, true);
            Serial.print(n);
            Serial.println(" WiFi network(s) detected");
            String ssid;
            uint8_t encryptionType;
            int32_t RSSI;
            uint8_t* BSSID;
            int32_t channel;
            bool isHidden;
            
            for (int i = 0; i < n; i++)
            {
              WiFi.getNetworkInfo(i, ssid, encryptionType, RSSI, BSSID, channel, isHidden);
              Serial.printf("%d: %s, Ch:%d (%ddBm) %s %s\n", i + 1, ssid.c_str(), channel, RSSI, encryptionType == ENC_TYPE_NONE ? "open" : "", isHidden ? "hidden" : "");
            }
          }
          ESP.deepSleep(polling_us, WAKE_RF_DISABLED ); // in uS
      }
      delay(100);
      if (debug) Serial.print(".");
      count++;
    }

这是串行调试的输出:
代码:全选13:50:36.068 -> Connecting to SSID
13:50:36.172 -> fpm close 3
13:50:36.172 -> mode : sta(dc:4f:22:1d:a3:24)
13:50:36.172 -> add if0
13:50:36.279 -> ............................scandone
13:50:39.026 -> no SSID found, reconnect after 1s
13:50:39.093 -> .reconnect
13:50:39.199 -> ......................WiFi connection timeout, dropping back into deep sleep
13:50:41.293 -> 6
13:50:41.293 -> scandone
13:50:43.490 -> scandone
13:50:43.490 -> 0 WiFi network(s) detected
13:50:43.490 -> del if0
13:50:43.490 -> usl
13:50:43.557 -> enter deep sleep

原理图是:(
我在关闭 USB 电源时遇到同样的错误,所以这不是 MCP1700 的电流消耗问题)。
完整代码在
任何帮助表示赞赏 - 在过去的几周里我一直在尝试不同的事情并且似乎无法动摇 - 希望我错过了一些与新手相关的东西。





回帖(1)

红旧衫

2024-5-28 16:12:31
可能是您的ESP没有正确地重新连接WiFi网络,因此可以尝试通过以下步骤来解决问题:

1. 在ESP进入深度睡眠前断开WiFi连接。您可以使用WiFi.disconnect()函数来实现这一点。

2. 在ESP唤醒时重新连接WiFi网络。可以使用WiFi.begin()函数来连接。

3. 检查您的WiFi网络名称和密码是否正确,并确保信号强度足够。

4. 通过将延迟时间增加到2-3秒来确保ESP正确重新连接WiFi网络。这里的延迟时间应足够长以确保ESP可以连接网络。

5. 确保您的代码中没有其他WiFi模块的代码干扰ESP连接WiFi网络。

希望这些步骤可以帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分