【AI技术支持】ESP32无线Wi-Fi常用调试API

描述


启明云端/ 01

 

Wi-Fi常用调试API

在使用 esp32 调试 Wi-Fi 功能时,由于场景和各种因素的影响,难免会遇到各种连接不上,Wi-Fi断连等问题。下面介绍一些 API,方便新手调试 Wi-Fi 时更好的定位并解决问题。

 

启明云端/ 02

 

常见问题
 

ESP32进行Wi-Fi连接时,如何判断失败原因?
 


 

在ESP-IDF 4.0以上的版本,可以在Wi-Fi断连事件处理中加入以下代码,从而通过错误码来判断连接失败的原因。

AI

当回调函数接收到WIFI_EVENT_STA_DISCONNECTED事件时,可以通过结构体wifi_event_sta_disconnected_t的变量reason获取到失败原因。

 

常见的错误码

AI

完整的错误码请参考这里。

 

 

启明云端/ 03

 

Wi-Fi如何自动重连?
 

Wi-Fi 在断连后如何自动重连?


 

在收到WIFI_EVENT_STA_DISCONNECTED事件时,调用esp_wifi_connectAPI,具体代码如下:

AI

ESP32 Wi-Fi发射功率最高值是多少?如何调整 Wi-Fi 的发射功率?


 

ESP32的Wi-Fi功率输出最高可以配置为20dBm。高功率输出会对电池寿命和 Wi-Fi 信号稳定性产生影响,因此在选择功率输出水平时,需要根据具体的应用场景和要求进行权衡和选择。


 

可通过 menuconfig 配置中,改变ESP_PHY_MAX_WIFI_TX_POWER的值来调整发射功率,配置项如下:

AI

或者在代码中调用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时,添加信号强度优先配置,具体配置代码如下:

AI

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分