最近调ESP8266,使用 SoftAP + Station模式,在设置了自动重连WIFI之后,当wifi不存在时,8266自动重连wifi,这时,AP很难被其他station接入,比如手机很难连上8266热点,即使连上了,也容易断开。一直搞不定,在官网找到了说明:
虽然 ESP8266 支持 SoftAP + Station 共存模式,但是 ESP8266 实际只有一个硬件信道。因此在 SoftAP + Station 模式时,ESP8266 SoftAP 会动态调整信道值与 ESP8266 Station 一致。这个限制会导致 ESP8266 SoftAP + Station 模式时一些行为上的不便,用户请注意。例如:
情况一
- 如果 ESP8266 Station 连接到一个路由 (假设路由信道号为 6);
- 通过接口 wifi_softap_set_config 设置 ESP8266 SoftAP;
- 若设置值合法有效,该 API 将返回 true ,但信道号仍然会自动调节成与 ESP8266 Station 接口一致,在这个例子里也就是信道号为 6。
情况二
- 调用接口 wifi_softap_set_config 设置 ESP8266 SoftAP (例如信道号为 5);
- 其他 Station 连接到 ESP8266 SoftAP;
- 将 ESP8266 Station 连接到路由( 假设路由信道号为 6) ;
- ESP8266 SoftAP 将自动调整信道号与 ESP8266 Station 一致(信道 6);
- 由于信道改变,之前连接到 ESP8266 SoftAP 的 Station 的 Wi-Fi 连接断开。
情况三
- 其他 Station 与 ESP8266 SoftAP 建立连接;
- 如果 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 尝试重连路由。