2019/03/16

ESP-32でWebREPLを使う


MicroPythonを使ってESPのプログラミングを行う場合、PCとESPをシリアルで接続するのが大半と思いますが、WebREPLを走らせることでPC上のブラウザからWeb経由でESPに接続してプログラミングすることも可能です。

ESP8266のMycroPythonの記述では、(0)のwebrepl_setupを行うだけでWebREPLが使えるらしいのですが、ESP32の場合、素でブートさせるとWiFiのAccessPointモードはDisableなので接続できないようです(調べきっていないので推測)。

手元のESP32はWiFiはStationモードで動作させているので、下記手順でWebREPLの動作を確認しました。
(0)最初に使うときは、improt webrepl_setup  を実行してEnableにする
(1)WiFiをStationモード(STA_IF)で立ち上げ、WiFiルータと接続してIPを取得
(2)WebREPLを起動して ESP-32側でWebREPL待ち受けに設定
--------------------------------------
# wifi でネットワーク接続
import network
AP_NAME = "AP名を設定"
AP_PASS = "接続パスワードを設定"
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.scan()                             # Scan for available access points
sta_if.connect(AP_NAME, AP_PASS)
sta_if.isconnected()                      # Check for successful connection

# WebREPLを起動

import webrepl
webrepl.start()
--------------------------------------

ESPが待ち受けになっている状態で、PC側(ブラウザが動いているPC)で、webrepl.htmlをブラウザに読み込ませると、JS経由でWebSocketが動いてESPと接続されます。


ESP8266用のMicroPythonの解説では起動時、WiFiはAPモードで立ち上がり、WebREPL Enableなら何も設定せずともWebREPLとしてデバッグできるようですが、手元のESP32の場合、起動時にAPモードDisableになっている。だから、、もし起動時にWebREPLの待ち受けをさせたい場合は、ESP32の起動時にWebREPLが走るように仕組んで置く必要あり。そうすればシリアルなしでもWebブラウザからプログラミングができるはず。ただ、、WebREPLの動作はシリアル接続の場合と比べてかなり遅いです。ですので、試してみたけど、WebREPLは使わない予定。

PC側のブラウザ内で動作させるスクリプト(WebREPL Client)は以下に接続することでロードされる。
http://micropython.org/webrepl/

PCのローカルにファイル一式をダウンロードして、ブラウザで起動してWebREPL Clientを動かすのも可能
https://github.com/micropython/webrepl

No comments:

Post a Comment