完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个带 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个回答
|
|
可能是您的ESP没有正确地重新连接WiFi网络,因此可以尝试通过以下步骤来解决问题:
1. 在ESP进入深度睡眠前断开WiFi连接。您可以使用WiFi.disconnect()函数来实现这一点。 2. 在ESP唤醒时重新连接WiFi网络。可以使用WiFi.begin()函数来连接。 3. 检查您的WiFi网络名称和密码是否正确,并确保信号强度足够。 4. 通过将延迟时间增加到2-3秒来确保ESP正确重新连接WiFi网络。这里的延迟时间应足够长以确保ESP可以连接网络。 5. 确保您的代码中没有其他WiFi模块的代码干扰ESP连接WiFi网络。 希望这些步骤可以帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
437浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:53 , Processed in 0.791926 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号