LoginSignup
3
1

More than 1 year has passed since last update.

ESP32で複数Wi-Fiアクセスポイント自動切替えする方法

Last updated at Posted at 2021-11-27

はじめに

初めまして、のすけと申します。
研究室の配属が決まり、ESP32-WROOM-32を実験で使用する事になりました。
ESP32
現在、私は多くのESP32に囲まれて興奮しております。

ESP32を大学や自宅、実家など移動して使用する事がよくありますが、
移動する度にシリアル通信を行い、SSIDとPASSWORDを設定するのは大変です。

ESP32

そこで、今回は複数の接続情報から自動でWiFi圏内のネットワークに接続するプログラムを作成したので紹介します。

この記事では以下の環境で動作確認をしております。
MicroPython:v1.14
ハードウェア:ESP32-DevKitC

単一の接続先情報から接続するサンプルプログラム

MicroPython reference (Networking)を閲覧すると、 以下のようなプログラムが記載されています。

boot.py
SSID = ""
PASSWORD = ""

def do_connect():
    import network
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(SSID, PASSWORD)
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())

if __name__ == "__main__":
    do_connect()

このプログラムを元に複数の接続情報から自動的に接続するプログラムに変更していきたいと思います。

複数の接続先情報から接続するサンプルプログラム

以下のプログラムは複数の接続先情報から自動的に接続します。

boot.py
WIFI_CONFIG = [("SSID1","PASS1")
            ,("SSID2","PASS2")
            ,("SSID3","PASS3")]

def do_connect(wifi_config):
    import network
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)

        scandata = sta_if.scan() 

        for scan in scandata:
            for config in wifi_config:
                if(scan[0].decode() == config[0]):
                    sta_if.connect(config[0], config[1])

        while not sta_if.isconnected():
            pass
    print('connected: ' , sta_if.config('essid'))
    print('network config:' , sta_if.ifconfig())

if __name__ == "__main__":
    do_connect(WIFI_CONFIG)

配列WIFI_CONFIGに格納した、SSIDとPASSWORDのタプルを使用して接続を行います。

MicroPython reference (network configuration)を閲覧すると、 周囲のWIFIをスキャンする事ができる事が記載されています。
そこで、scandata = sta_if.scan()の部分でESP32周辺のWiFiをスキャンし配列とスキャン内容に同じSSIDがあった場合のみ接続試行を行うというものになります。

終わりに

これで、場所を変更してもESP32-WROOM-32が複数の接続情報から自動で接続するようになりました。  
皆さんも良いESP32ライフをお送りください!
最後まで閲覧ありがとうございました。

参考になりましたら、LGTMを押していただけるととてもうれしいです(^^)/。

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