LoginSignup
4
3

More than 5 years have passed since last update.

ESP-WROOM-02で複数ある中から接続可能なAPに接続する

Posted at

ESP-WROOM-02を使えばArduinoで簡単にWi-Fi接続ができる

今までArduinoではLチカしかやったことがなく、その後は買って満足して放置していたのですが、ESP8266というWi-Fiモジュールがあるのを知りました。1週間前にESP-WROOM-02を入手し、いろいろと遊んでいるうちに不便なところが出てきました。

1つのアクセスポイントにしか接続できない

異なる接続先に接続するには、そのたびにプログラム中のSSIDやパスフレーズの部分を書き換えなくてはなりません。会社、自宅、外出先(iPhoneのテザリングとか)、再コンパイル無しで繋がると便利です。

そこで、繋がるところに繋がってくれるようにしてみました。
(※ESP-WROOM-02 単体で使用)

プログラム

wifi_init.ino
#define WIFI_SSID_1  "xxxx"
#define WIFI_PASS_1  "xxxx"
#define WIFI_SSID_2  "xxxx"
#define WIFI_PASS_2  "xxxx"

void wifi_connect() {
  int i, loop;
  int stat;

  WiFi.mode(WIFI_STA);
  //WiFi.printDiag(Serial);

  while (true) {
    for (loop = 1; loop <= 2; loop++) {
      Serial.print("WiFi(");
      Serial.print(loop);
      Serial.println(") Connecting...");
      if (loop == 1) WiFi.begin(WIFI_SSID_1, WIFI_PASS_1);
      else if (loop == 2) WiFi.begin(WIFI_SSID_2, WIFI_PASS_2);

      for (i = 0; i < 50; i++) {
        stat = WiFi.status();
        if (stat == WL_DISCONNECTED) {
          delay(500);
        } else if (stat == WL_NO_SSID_AVAIL || stat == WL_CONNECT_FAILED) {
          Serial.println("WiFi Failed. Connect to another AP");
          break;  // break to for(i)
        } else if (stat == WL_CONNECTED) {
          Serial.println("WiFi connected!");
          Serial.print("IP address: ");
          Serial.println(WiFi.localIP());
          break;  // break for(i)
        }
      }
      if (stat == WL_CONNECTED) break;  // break for(loop)
      WiFi.disconnect();
      delay(1000);
    }
    if (stat == WL_CONNECTED) break;  // break while(true)
    delay(5000);
  }
}

プログラムの説明

見ての通り WIFI_SSID_1 と WIFI_SSID_2 の2つのSSIDを定義しています。はじめに1に接続を試みます。指定したSSIDが見つからなかった場合や、認証エラー等で接続に失敗した場合は、即座に2に接続を試みます。もし1と2ともだめなら、5秒待機してもう一度1からやり直します。

実行例

WiFi(1) Connecting...
WiFi Failed. Connect to another AP
WiFi(2) Connecting...
WiFi connected!
IP address: 192.168.0.xxx

最後に

今回は2種類しか設定しませんでしたが、3,4,5と数を増やしていけば簡単に接続先のAPを増やせます。ちなみに私はC言語をあまり理解できていないので(おまけにQiitaも今日が初めて)、変な書き方をしているところがあるかもしれません。こうやった方がいいよ!ってゆうのがありましたら、教えていただけると嬉しいです。

4
3
0

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
4
3