WebREPL 远程访问
这节课我们来学习 MicroPython WebREPL 命令行交互环境搭建。
实验原理
与 Python 相同,MicroPython 也同样具有命令行交互式环境,简称 REPL,因此 WebREPL 就是网络版 MicroPython 交互环境。
虽然 MicroPython 具有传统 Python 语言的基本语法和使用规则,但 MicroPython 是专为嵌入式系统所设计。因此 MicroPython 与 Python 在应用环境方面具有一些区别。
我们在 Thonny 上用的 MicroPython REPL 是通过数据线来通讯的。作为物联网开发板,ESP32 的强项是 WIFI 联网,使用 WIFI 实现 REPL 的功能就是 WebREPL 了。
操作方法
首先,请通过 Thonny 软件打开 MicroPython 的 REPL。并且在 shell 环境中输入 import webrepl_setup
,输入以上指令并按下回车后,我们将进入 WebREPL 的设置模式。
之后,在命令行中会出现的第一个问题是询问我们是否让该开发板每次启动时自动开启 WebREPL,E 是开启,D 是关闭,空行表示退出。这里,我们输入字符 E 并按下回车
接下来是为 WebREPL 设置密码。以后每次登录 WebREPL 都将用到此密码。输入密码,确保两次输入内容一致。密码为 4-9 个字符组合。
系统设置完成后需要重启 ESP32 开发板,输入 y 即可。
之后就能在 MicroPython 设备中看到多了一个新文件 webrepl_cfg.py
,其中的内容是你之前的密码。
并且 boot.py
文件中,原本注释起来的内容,也解开注释了。
现在,我们还需要对 boot.py
文件进行修改,让他在启动的时候先链接 WiFi,再开启 webrepl。
在 common
目录下添加 wifi.py
(在我们之前的 连接 WiFi,我们已经学习了如何连接 WiFi),将以下代码复制到该文件中。
# common/wifi.py
import time
import network
def wifi_connect(ssid, password):
# 创建 WIFI 连接对象
wlan = network.WLAN(network.STA_IF)
# 激活 wlan 接口
wlan.active(True)
# 断开之前的链接
wlan.disconnect()
# 扫描允许访问的 WiFi
print('扫描周围信号源:', wlan.scan())
print("正在连接 WiFi 中", end="")
# 连接 wifi
wlan.connect(ssid, password)
# 如果一直没有连接成功,则每隔 0.1s 在命令号中打印一个 .
while not wlan.isconnected():
print(".", end="")
time.sleep(0.1)
# 连接成功之后,打印出 IP、子网掩码(netmask)、网关(gw)、DNS 地址
print(f"\n{wlan.ifconfig()}")
修改 boot.py
文件:
# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
from common.wifi import wifi_connect
import webrepl
# 设置路由器 WiFi 账号与密码
ssid = '要连接的 Wifi 名'
password = 'Wifi 密码'
# 连接 WiFi
wifi_connect(ssid, password)
webrepl.start(password='你设置的密码')
设置完毕后,保存代码,重启 ESP32 单片机。
WebREPL 启动成功,复制上图地址,按照下图配置解释器,
正常连接单片机,这个操作可以让你后期对成品项目进行调试时,不需要连接数据线,只需要在同一局域网下,就可以实现对单片机编程。
MicroPython 官网也提供了另一种工具:http://micropython.org/webrepl/,用法是完全一样的,
注意
需要注意的是,WebREPL 最大连接数为 1。