啟明云端/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文章
5437瀏覽量
173103 -
AI
+關注
關注
87文章
30239瀏覽量
268473 -
ESP32
+關注
關注
18文章
960瀏覽量
17114
發布評論請先 登錄
相關推薦
評論