LoginSignup
5
4

More than 5 years have passed since last update.

WiFi.begin() で前回したAPに再接続してしまう

Posted at

現象

前の記事ではWi-Fiでアクセスポイントに接続するプログラムを書きましたが、ここで不思議な現象に遭遇しました。WiFi.begin()で指定したAPではないAPに接続してしまったのです。ちゃんとSSIDをしているのになぜ??

そこで思い出したのは、どこかで見かけた

WiFi.begin("","")とすると前回接続したAPに接続される

という記事。
そのときはへ〜としか思ってなかったですが、もしかして与えたパラメーターは関係無いんじゃないかと思いました。

実験してみる(1)

前の記事のプログラムのWIFI_SSID_1に無効な内容を設定し、WIFI_SSID_2に有効な内容を設定して実行してみました。必ず1は失敗し、2に繋がるのが想定する動作です。

結果

  • 1回目は、1は接続失敗、2に接続成功 (期待通り)
  • リセットして2回目は、1で接続成功 (なんでやねん)
  • リセットして3回目は、1回目と同じ

なんか変!
なぜか指定したSSIDではなく、リセット前に接続していたSSIDで接続をしているようでした。これは仕様なのでしょうか・・・。そういえば WiFi.printDiag(Serial); を入れたとき、こんな出力がありました。

Auto connect: 1

もしかしてオートコネクトが有効になっていると、与えたパラメーターに関係無く、前回の接続先に再接続してしまうのでしょうか。

実験してみる(2)

そういえばリセットするときにWi-Fiは接続した状態のままだったと思い、リセットをする前に切断するようにしてみました。
WiFi.disconnect();

結果

  • 必ず1→2の順番で接続するようになった。(期待通り)

考察(よくわかってない)

ということで、Wi-Fiに接続したままリセット(起動)すると、WiFi.begin()は与えたパラメーターに関わらず前回接続時のAPに接続し、ちゃんと切断すると、WiFi.begin()は与えたパラメーター通りに接続する、という現象が確認できました。

「Auto connect: 1」になっているからだと言うと辻褄が合うのですが、あまりよくわかりません。

5
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4