1 乐鑫ESP32调试Wi-Fi常用调试API-德赢Vwin官网 网

乐鑫ESP32调试Wi-Fi常用调试API

描述

在使用ESP32调试Wi-Fi功能时,由于场景和各种因素的影响,难免会遇到各种连接不上,Wi-Fi断连等问题。

 

下面介绍一些API,方便新手调试Wi-Fi时更好的定位并解决问题。

 

常见问题

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

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

乐鑫

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

 

常见的错误码

乐鑫

 

 

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

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

乐鑫

3、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来设置调整。

 

4、连接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()

 

(4)硬件原因。收包性能太差。

 

注意:在出现bcn_timeout时,STA会尝试发送5次Probe Request,如果AP回Probe Reponse,就保持连接;如果AP未回复,STA发送Disconnect事件,并断开连接。

 

5、如果环境中存在多个相同ssid/password时,能否默认选择信号最好的AP连接?

默认ESP32会连接扫描到的第一个符合的AP,并不会自动选择信号值最强的AP。如果要连接最佳AP,需要在配置station时,添加信号强度优先配置,具体配置代码如下:

乐鑫

 

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

全部0条评论

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

×
20
完善资料,
赚取积分