在使用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時,添加信號強度優先配置,具體配置代碼如下:
-
API
+關注
關注
2文章
1545瀏覽量
63195 -
WIFI
+關注
關注
81文章
5346瀏覽量
206710 -
樂鑫
+關注
關注
0文章
195瀏覽量
25744 -
ESP32
+關注
關注
20文章
992瀏覽量
18475
發布評論請先 登錄
相關推薦
樂鑫科技 Wi-Fi 6 研發新突破,發布全球首款2.4/5 GHz 雙頻雙模 RISC-V SoC ESP32-C5

評論