はじめに
MicroPythonにはWebREPLと呼ばれる、ブラウザ上でPythonプロンプトを使える機能があります。ESP32ボードで使用したのでやり方を残しておきます。
環境
- ESP32開発ボード(https://www.amazon.co.jp/dp/B0718T232Z/ref=cm_sw_em_r_mt_dp_U_F6ZwEbQRHH53S)
- MicroPython v1.12
- 作業PC Windows10
やり方
MicroPythonのファームウェアを書き込んでいる状態で進めます。
シリアル通信で接続を確認したらwebrepl_setupをインポートします
Would you like to (E)nable or (D)isable it running on boot?はEと入力して続いてパスワードを入力します。その後リブートするか聞かれるのでyと入力してリブートします。
MicroPython v1.12 on 2019-12-20; ESP32 module with ESP32
Type "help()" for more information.
>>> import webrepl_setup
WebREPL daemon auto-start status: disabled
Would you like to (E)nable or (D)isable it running on boot?
(Empty line to quit)
> E
To enable WebREPL, you must set password for it
New password (4-9 chars): hoge
Confirm password: hoge
Changes will be activated after reboot
Would you like to reboot now? (y/n)
自分の場合は何故か起動時にアクセスポイントにならないので、一度webreplを手動でスタートします。
PCからアクセスポイントに接続し、https://github.com/micropython/webrepl からwebreplクライアントをダウンロードしてwebrepl.htmlを開きます。Connectボタンを押してパスワードを入力したらWebREPL接続完了です。
起動時にスタートすると同時に別のネットワークに接続する処理を追加して作業PCをインターネットに接続できるようにするためにboot.pyに次のコードを書き込みます。
import network
import webrepl
import utime
sta = network.WLAN(network.STA_IF)
sta.active(True)
sta.connect("SSID", "PASSWORD")
start_time = utime.time()
while utime.time() - start_time < 10:
if sta.isconnected():
print("connect")
webrepl.start()
break
else:
print("Timeout")
sta.active(False)
ap = network.WLAN(network.AP_IF)
ap.active(True)
webrepl.start()
デバイスの接続が成功するとLAN内でWebREPLと接続することができます。10秒以上かかっている場合は失敗とみなして自身をアクセスポイントとして動作させてWebREPLをスタートします。
webreplクライアントからboot.pyをデバイスに送信して再起動します。
起動するとwebreplがスタートしてIPアドレスが表示されるので、クライアントで接続確認して完了です。