美文网首页
ESP8266折腾之路(三)使用WebREPL远程更新

ESP8266折腾之路(三)使用WebREPL远程更新

作者: 四十方知 | 来源:发表于2018-01-29 22:30 被阅读0次
    本篇新增软件

    WebREPL在线版http://micropython.org/webrepl/
    下载地址:https://codeload.github.com/micropython/webrepl/zip/master

    在MicroPython on ESP8266的开发过程中,做的最多的事情就是上传文件,MicroPython File Uploader 虽然很好用,但是有两个缺点:

    1. 必须将ESP8266开发板与电脑连接
    2. 如果开发板中运行的程序未结束,例如定义了死循环用来监听信号时,文件的上传有可能会失败。

    上传失败自不必说,而必须与电脑连接就制约了我们开发的灵活性,想像一下:我们用8266做了一个通过手机控制的接线板控制器,封装后安装进接线板中,然后有一天想要给它增加一个定时开关功能,只需要简单更新几句代码并没有新增硬件设施的前提下,如果使用MicroPython File Uploader,需要从接线板中拆除后再连接电脑进行更新,这无疑会影响体验。ESP8266的官方SDK是支持云升级功能的,即可以通过远程烧写固件的方式对开发板进行固件更新,那MicroPython是否能实现类似的功能呢?今天的主角WebREPL为此而生。

    WebREPL客户端是MicroPython官方推荐的更新方式,功能很强大,通过网页的方式读取ESP8266的文件系统,可以上传文件或者下载开发板中已存在的文件,可以输入指令并实时查看开发板中的输出状态,完全取代串口调试。
    WebREPL客户端的两种使用方式在本篇开头已经写明,选择任意一种均可以连接开发板。

    WebREPL客户端必须与ESP8266开发板在同一局域网下,否则无法正常连接

    WebREPL在固件中默认是不启动的,所以在使用之前,需要先将服务打开。
    1. 在输入框输入 import webrepl_setup
      输入 import webrepl_setup
    2. 看到当前WebREPL自动启动状态是未开启的


      提示 webrepl未开启自动启动功能
    3. 输入E开启上电时自动启动WebREPL功能
      输入E开启
    4. 要开启WebREPL必须先设定密码,密码为4-9个字符


      连续输入两次4-9位的密码
    5. 连续输入两次密码后,确认Web_REPL开启成功,重启开发板


      webrepl已开启自动启动功能

    到这一步,按照我的预期,WebREPL服务应该已经是开启状态,而我们可以使用WebREPL客户端来进行连接了,实际情况却是此时如果使用客户端进行连接,将会始终连接失败,所以还需要有第6步。

    1. 输入import webrepl;webrepl.start();
      输入import webrepl;webrepl.start();
    2. 成功开启WebREPL服务,此时即可通过WebREPL客户端来进行远程连接ESP8266开发板,并上传或下载文件。


      开始WebREPL成功

    接下来使用WebREPL客户端连接开发板

    1. 打开http://micropython.org/webrepl/
      并修改地址为上一步控制台输出的地址,我这里是ws://192.168.2.19:8266
      改为ESP8266开发板ip地址

    2.点击连接后,输入刚刚设定的密码,输入密码时不会有任何回显,输入完毕直接回车,一切正常的情况即会连接成功。


    连接成功
    1. 现在已经可以通过WebREPL客户端对ESP8266进行操作,主窗口中输入python代码进行实时调试,右侧有文件上传与下载功能,上传功能与MicroPython File Uploader一样,下载功能可以直接下载ESP8266开发板中存在的文件。

    输入import os;os.listdir();,查看当前开发板中的文件名称

    查看文件名
    将文件名输入到右侧的Get a file输入框中,点击Get from device按钮,即可将开发板中的文件下载到本地
    下载webrepl_cfg.py文件

    4.webrepl_cfg.py文件中存放着我们之前设定的WebREPL密码,明文的〜!〜

    到此,使用WebREPL远程更新ESP8266开发板已经完成,不过虽然前面设置了在开发板启动时自动开启WebREPL服务的功能,实验证明,在开发板断电重启后,WebREPL服务并未开启,经检查,是因为在设置WebREPL服务之前,我们上传了自定义的boot.py文件,而MicroPython在开启WebREPL服务时,会将相关代码直接追加在boot.py文件尾,造成了语法错误,所以要手动更新一下boot.py文件。

    更新后的boot.py文件内容如下

    import network,webrepl
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print("connecting to network...")
        sta_if.active(True)
        sta_if.connect("<ap_name>", "<password>") # Connect to an AP <ap_name>&<password> is your route name&password
        while not sta_if.isconnected(): # Check for successful connection
            pass
    print("network config:", sta_if.ifconfig())
    webrepl.start()
    

    再也不用把开发板跟电脑相连啦!

    上一篇:ESP8266折腾之路(二) 连接WIFI路由器使能上网

    相关文章

      网友评论

          本文标题:ESP8266折腾之路(三)使用WebREPL远程更新

          本文链接:https://www.haomeiwen.com/subject/uzkfzxtx.html