MicroPythonをデフォルト設定のまま使っていると、アクセスポイント名がMicroPython-XXXXXという「いかにも」な名前だったり、そもそもアクセスポイントは不要だよねとか、色々変えたくなってくる。そこで今回はMicroPythonのWiFi設定を整えてみた。
オブジェクトの準備
MicroPythonは端末とアクセスポイント両方のインタフェースを持っている。
設定を行うには、まずnetworkモジュールのオブジェクト変数をそれぞれ作成する。
インタープリタで以下を実行。
>>> import network
>>> sta_if = network.WLAN(network.STA_IF)
>>> ap_if = network.WLAN(network.AP_IF)
すると以降は、オブジェクト変数を介してそれぞれ設定が可能になる。
- sta_if : 端末
- ap_if : アクセスポイント
アクセスポイントとしての設定を変更する
アクセスポイントのESSIDを某社製アクセスポイント風に”Buffalo-G-E123″としたければ、
>>> ap_if.config(essid='Buffalo-G-E123')
パスコードの変更
>>> ap_if.config(password='abcdefgh')
SSIDを非公開にする
>>> ap_if.config(hidden=True)
3つ同時に設定出来る
>>> ap_if.config(essid='Buffalo-G-E123',password='abcdefgh',hidden=True)
アクセスポイントを無効化
>>> ap_if.active(False)
端末としての設定を変更する
インストール直後は端末インタフェースが無効化されている。有効化には以下を実行。
>>> sta_if.active(True)
以下で端末としてアクセスポイントに接続出来る。
>>> sta_if.connect('接続先のSSID','パスコード')
接続状態を確認する。
>>> sta_if.ifconfig()
('192.168.11.11', '255.255.255.0', '192.168.11.1', '10.0.0.1')
MACアドレスを確認。sta_if.config(‘mac’)で取得出来るが、バイト列で返ってきてしまうのでヘキサ化して読めるようにする。b’123456789abcはMACアドレスの普通の表記で12:34:56:78:9a:bcの意味。
>>> import ubinascii
>>> ubinascii.hexlify(sta_if.config('mac'))
b'123456789abc'
端末として固定IPで接続させる
MicroPythonをWiFiルーターに接続させた後、ifconfigメソッドでIPアドレスを固定させる事が出来る。ifconfigメソッドについては、公式ドキュメントに解説がある。
以下のコードでは、
- 6行目でアクセスポイントに接続(‘SSID’と’パスコード’は接続先に合わせて書く)
- 9行目で固定IPアドレス(192.168.1.11)を設定
を行っている。
import network
def wifi_startup():
sta_if = network.WLAN(network.STA_IF)
if sta_if.active(True):
sta_if.connect('SSID','パスコード')
while not sta_if.isconnected():
pass
sta_if.ifconfig(('192.168.1.11', '255.255.255.0', '192.168.1.1', '192.168.1.1'))
このコードをwifi_startup.pyに保存してampy等で本体に送り、boot.pyかmain.pyに以下のコードを書いておけば、起動時に固定IPアドレスでMicroPythonに接続出来るようになる。
from wifi_startup import wifi_startup
wifi_startup()
接続先アクセスポイントの設定で固定IPアドレス化
ifconfigメソッドで直接IPアドレス指定するのではなく、アクセスポイント側でMACアドレスとIPアドレスを紐付けておく方法もある。
Ubuntu18.04に設定したアクセスポイント(こちらの記事を参照)ならDHCPサーバの設定ファイルに以下を追加するだけで簡単に実現する。
/etc/dhcp/dhcpd.conf
host MicroPython {
hardware ethernet 12:34:56:78:9a:bc
fixed-address 192.168.11.101;
}
DHCPサーバを再起動すれば反映される。
$ sudo systemctl restart isc-dhcp-server
まとめ
MicroPythonをWiFi接続する方法は色々あるけれど、固定IPアドレスを持たせたほうが何かと便利。ifconfigメソッドで直接IPアドレスを設定してしまう方法の他、DHCPサーバから所定のIPアドレスを配らせる方法を紹介した。
コメント