micropython on ESP32 でWi-Fiルータ(or AP)に接続する
ESP32をWi-Fiルータ または アクセスポイントに接続します。
以下のプログラムを実行すると、Wi-Fiルータに接続できます。
SSID_NAME = "SSID名" SSID_PASS = "パスワード" import utime import network # ==== connecti to wifi access point ============================================ def connect_wifi(ssid, passkey, timeout=10): wifi= network.WLAN(network.STA_IF) if wifi.isconnected() : print('already Connected. connect skip') return wifi else : wifi.active(True) wifi.connect(ssid, passkey) while not wifi.isconnected() and timeout > 0: print('.') utime.sleep(1) timeout -= 1 if wifi.isconnected(): print('Connected') return wifi else: print('Connection failed!') return null wifi = connect_wifi(SSID_NAME, SSID_PASS) if not wifi : sys.exit(0)
Espruinoのときとは違い、micropythonでは次回起動時に自動的に再接続はしてくれません。
Wi-Fiに接続するには、このプログラムを起動の度に実行しなければなりません。
micropythonは起動時にオンボードストレージの /boot.py を自動的に実行してくれますので、このプログラムを /boot.py として保存しておけば起動のたびにWi-Fiに接続できます。
ただし、設定したSSIDが通信範囲内にない場合はタイムアウトするまで(10秒)起動が遅れます。
オンボードストレージには下記のプログラムで書き込めます。
プログラムが小さいので、プログラム全体を文字列として保存し、それを書き込んでいます。
プログラムの中に「'''」「\n」「\r」などがないことを確認し、あれば別の文字に置き換えてください。
script = ''' # <<ここにパラメータを設定した上のプログラムをコピペしてください>> ''' f=open("boot.py","wt") f.write(script) f.close()
書き込んだ内容を確認するには以下のように実行すればOKです。
open("/boot.py","rt").read()
一時的にboot.pyを無効にしたい場合はリネームしておくと良いでしょう。
以下のように実行するとリネームできます。
import uos uos.chdir("/") uos.listdir() ==> ['boot.py'] uos.rename("boot.py", "boot.temp") uos.listdir() ==> ['boot.temp']
元に戻す場合は、uos.renameのパラメータを入れ替えて元に戻してください。
/boot.pyでなく、/lib/MyWifi.pyとして保存しておき、必要なときに
import MyWifi
とすることもできます。
/lib に保存するときはあらかじめ/libディレクトリを作成しておいてください。
import uos uos.chdir("/") uos.listdir() ==> ['boot.py'] uos.mkdir("/lib") uos.listdir() ==> ['boot.py', 'lib']