- v3.2で一度WiFi接続に失敗するとそのボードは二度と WiFiに接続できない。ただし、一度3.0で接続した直後は正しいStationには接続できる。
- v3.0ではこの現象はでない
- v3.2でもごく単純なアプリでは出ないが、複数threadにまたがって処理するような規模のアプリで出る。
というWiFiマイコンESP32にとっては致命的な現象。そのSSIDが確かに存在しているのにエラーとして「WL_NO_SSID_AVAIL」が返ってくる、というのが特徴です。
ArdunoをESP-IDFのコンポーネントとして使っていて、WiFi接続にはArduinoのWiFiクラスを使っている、というのが影響しているのでしょうか。
結果として、以下のコードで解決しました。失敗したらesp_wifi_restore()を実行する、だけです。
ググって、同様のエラーにハマっている人がいましたが、どうも解決できていないようでしたので、記事にまとめました。I'm sorry this message is in Japanese, but I hope my sample code below may help you!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WiFi.mode(WIFI_STA); | |
sleep_ms(100); | |
WiFi.begin(testSSID, testPassword); | |
int count = 0; | |
int status; | |
while ((status = WiFi.status()) != WL_CONNECTED) { | |
sleep_ms(1000); | |
count++; | |
if (count == 5 || status == WL_NO_SSID_AVAIL) { | |
esp_wifi_restore();//<--- this is important! | |
WiFi.begin(testSSID, testPassword); | |
sleep_ms(1000); | |
} | |
} |
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。