ESP8266 SoftAP + Station 模式下網絡斷開或丟包的情況


最近調ESP8266,使用 SoftAP + Station模式,在設置了自動重連WIFI之后,當wifi不存在時,8266自動重連wifi,這時,AP很難被其他station接入,比如手機很難連上8266熱點,即使連上了,也容易斷開。一直搞不定,在官網找到了說明:

 

雖然 ESP8266 支持 SoftAP + Station 共存模式,但是 ESP8266 實際只有一個硬件信道。因此在 SoftAP + Station 模式時,ESP8266 SoftAP 會動態調整信道值與 ESP8266 Station 一致。這個限制會導致 ESP8266 SoftAP + Station 模式時一些行為上的不便,用戶請注意。例如:

   

情況一

  1. 如果 ESP8266 Station 連接到一個路由 (假設路由信道號為 6);
  2. 通過接口 wifi_softap_set_config 設置 ESP8266 SoftAP;
  3. 若設置值合法有效,該 API 將返回 true ,但信道號仍然會自動調節成與 ESP8266 Station 接口一致,在這個例子里也就是信道號為 6。

   

情況二

  1. 調用接口 wifi_softap_set_config 設置 ESP8266 SoftAP (例如信道號為 5);
  2. 其他 Station 連接到 ESP8266 SoftAP;
  3. 將 ESP8266 Station 連接到路由( 假設路由信道號為 6) ;
  4. ESP8266 SoftAP 將自動調整信道號與 ESP8266 Station 一致(信道 6);
  5. 由於信道改變,之前連接到 ESP8266 SoftAP 的 Station 的 Wi-Fi 連接斷開。

     

情況三

  1. 其他 Station 與 ESP8266 SoftAP 建立連接;
  2. 如果 ESP8266 Station 一直嘗試掃描或連接某路由,可能導致 ESP8266 SoftAP 端的連接斷開,或者 UDP 丟包,ping 丟包等情況。 

   

因為 ESP8266 Station 會遍歷各個信道查找目標路由,意味着 ESP8266 其實在不停切換信道,ESP8266 SoftAP 的信道也因此在不停更改。這可能導致 ESP8266 SoftAP 端的原有連接斷開,或者 UDP 丟包,ping 丟包等情況。

    

這種情況,用戶可以通過設置定時器,超時后調用 wifi_station_disconnect 停止 ESP8266 Station 不斷連接路由的嘗試;或者在初始配置時,調用 wifi_station_set_reconnect_policy 和 wifi_station_set_auto_connect 禁止 ESP8266 Station 嘗試重連路由。

 

 

我的現象正是情況三

我的處理辦法:

1.建立一個任務維護wifi連接狀態,當自帶重試次數到達3次之后(可以通過斷開事件判斷),調用wifi_station_disconnect 停止 ESP8266 Station 不斷連接路由的嘗試。在通過標志或者其他方式,通知維護任務,維護任務在10s之后重新配置wifi sta參數進行連接,多次之后仍無法連接再加大間隔時間.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM