启明云端/01
在使用 esp32 调试 Wi-Fi 功能时,由于场景和各种因素的影响,难免会遇到各种连接不上,Wi-Fi断连等问题。下面介绍一些 API,方便新手调试 Wi-Fi 时更好的定位并解决问题。
启明云端/02
常见问题
ESP32进行Wi-Fi连接时,如何判断失败原因?
在ESP-IDF 4.0以上的版本,可以在Wi-Fi断连事件处理中加入以下代码,从而通过错误码来判断连接失败的原因。
当回调函数接收到WIFI_EVENT_STA_DISCONNECTED事件时,可以通过结构体wifi_event_sta_disconnected_t的变量reason获取到失败原因。
常见的错误码
完整的错误码请参考这里。
启明云端/03
Wi-Fi如何自动重连?
Wi-Fi 在断连后如何自动重连?
在收到WIFI_EVENT_STA_DISCONNECTED事件时,调用esp_wifi_connectAPI,具体代码如下:
ESP32 Wi-Fi发射功率最高值是多少?如何调整 Wi-Fi 的发射功率?
ESP32的Wi-Fi功率输出最高可以配置为20dBm。高功率输出会对电池寿命和 Wi-Fi 信号稳定性产生影响,因此在选择功率输出水平时,需要根据具体的应用场景和要求进行权衡和选择。
可通过 menuconfig 配置中,改变ESP_PHY_MAX_WIFI_TX_POWER的值来调整发射功率,配置项如下:
或者在代码中调用esp_wifi_set_max_tx_power()这个 API来设置调整。
启明云端/04
提示bcn_timeout怎么办?
连接 Wi-Fi,打印bcn_timeout,ap_probe_send_start是什么情况?
默认设置下,ESP32默认六秒未收到 AP 的beacon帧,就会提示bcn_timeout。造成这个问题的原因有可能会有以下几点:
(1)内存资源不足。ESP32_WIFI_MGMT_SBUF_NUM不够 (log中会打出“esf_buf: t=8, l=beacon_len, …”这样的Error)。如果内存不够,可在收到disconnect event时打出 heap大小来排查。
(2)AP未发出beacon帧。可通过抓包AP的beacon帧来排查。
(3)AP Rssi值太低。在复杂环境下Rssi值较低时,可能导致STA收不到beacon帧,可通过调用esp_wifi_sta_get_ap_info()获取Rssi值来排查。
(4)硬件原因。收包性能太差。
注意:在出现bcn_timeout时,STA会尝试发送5次Probe Request,如果 AP回Probe Reponse,就保持连接;如果AP未回复,STA发送Disconnect事件,并断开连接。
启明云端/05
如何连接最佳AP?
如果环境中存在多个相同ssid/password时,能否默认选择信号最好的AP连接?
默认ESP32会连接扫描到的第一个符合的AP,并不会自动选择信号值最强的AP。如果要连接最佳AP,需要在配置station时,添加信号强度优先配置,具体配置代码如下:
-
无线
+关注
关注
31文章
5451浏览量
173245 -
AI
+关注
关注
87文章
30747浏览量
268901 -
ESP32
+关注
关注
18文章
971浏览量
17204
发布评论请先 登录
相关推荐
评论