配置WebREPL

实现远程调试与上传程序

之前的教程通过离线编辑Python代码实现了NyBoard执行序列动作的功能。 但是这样很不方便,每当需要修改代码, 我们需要拔下WiFi模块进行修改,也不能在执行过程中灵活的暂停、修改参数。 究其原因,ESP8266只有一个串口,我们需要使用它与NyBoard进行通信。 好在MicroPython利用ESP提供的WiFi功能实现远程无线Python调试-WebREPL。

官方文档

我们在官方文档的基础上,结合模块的特点,撰写了以下教程:

1. 启用webREPL

连接设备后,在shell界面输入import webrepl_setup ,根据指南输入

  1. 启动时启用webREPL: E

  2. 设置密码:你自己的密码(演示为:1234

  3. 重复密码

  4. 重启8266模块:y

2. 配置WebREPL程序

我们使用下面的demo程序,注意将SSID和密码换成您身边使用的网络信息。

import network
import time
import webrepl

def do_connect():
    
    # WiFi SSID and Password
    wifi_ssid = "YOUR SSID"             # YOUR WiFi SSID
    wifi_password = "YOUR PASSWORD"     # YOUR WiFi PASSWORD

    # Wireless config : Station mode
    station = network.WLAN(network.STA_IF)
    station.active(True)

    # Continually try to connect to WiFi access point
    while not station.isconnected():
    
        # Try to connect to WiFi access point
        print("Connecting...")
        station.connect(wifi_ssid, wifi_password)
        time.sleep(10)

    # Display connection details
    print("Connected!")
    print("My IP Address:", station.ifconfig()[0])
    

if __name__ == "__main__":
    do_connect()
    webrepl.start()

启动程序后,会不停连接WiFi网络,一旦连接上,会自动启动设备的WebREPL服务。

Connected!
My IP Address: 192.168.xxx.xxx
WebREPL daemon started on ws://192.168.xxx.xxx:8266
Started webrepl in normal mode

记住这个IP地址(路由器DHCP自动分配的),配置WebREPL时有用。

3. 配置WebREPL服务

我们通过WebREPL来调试Python,原先的串口用来和NyBoard通讯。 所以在选项中,将原先的USB-COMx接口修改成WebREPL

然后我们填入WebREPL的IP地址、端口及密码,点击OK

完成后会连接,当显示WebREPL Connected表示连接成功了。

我们可以试着运行一些简单的程序,如blink

WebREPL节约了串口,并支持无线调试。缺点是速度较慢(因为存在网络延迟),软件复位等待时间比较久。

4. 将串口和调试器分离

现在我们可以使用webREPL来调式程序了,但是我们打开串口监视器会发现,每当我们运行程序,串口会发出一系列的调试内容: 这些海量的字符串会导致我们的NyBoard来不及处理而宕机,如下图所示:

我们希望在调试程序的时候,串口只输出我们希望输出的指令,而不是这些Debug信息。 打开设备上的boot.py文件,将uos.dupterm(None, 1) 这行代码取消注释并保存,解除串口和REPL debug的绑定。 再次重启模块,串口调试助手就不再打印debug信息了。

作为补充,我们可以通过print()指令输出debug信息,这些信息会通过WiFi显示在Shell上。

至此,大家可以方便的使用WiFi模块通过webREPL调试Bittle进行基于MicroPython的动作序列编辑。

Last updated