电竞比分网-中国电竞赛事及体育赛事平台

分享

ESP8266折騰之路(三)使用WebREPL遠程更新

 beginnow1 2021-01-03
本篇新增軟件

WebREPL在線版http:///webrepl/
下載地址:https://codeload.github.com/micropython/webrepl/zip/master

在MicroPython on ESP8266的開發(fā)過程中,做的最多的事情就是上傳文件,MicroPython File Uploader 雖然很好用,但是有兩個缺點:

  1. 必須將ESP8266開發(fā)板與電腦連接
  2. 如果開發(fā)板中運行的程序未結束,例如定義了死循環(huán)用來監(jiān)聽信號時,文件的上傳有可能會失敗。

上傳失敗自不必說,而必須與電腦連接就制約了我們開發(fā)的靈活性,想像一下:我們用8266做了一個通過手機控制的接線板控制器,封裝后安裝進接線板中,然后有一天想要給它增加一個定時開關功能,只需要簡單更新幾句代碼并沒有新增硬件設施的前提下,如果使用MicroPython File Uploader,需要從接線板中拆除后再連接電腦進行更新,這無疑會影響體驗。ESP8266的官方SDK是支持云升級功能的,即可以通過遠程燒寫固件的方式對開發(fā)板進行固件更新,那MicroPython是否能實現(xiàn)類似的功能呢?今天的主角WebREPL為此而生。

WebREPL客戶端是MicroPython官方推薦的更新方式,功能很強大,通過網(wǎng)頁的方式讀取ESP8266的文件系統(tǒng),可以上傳文件或者下載開發(fā)板中已存在的文件,可以輸入指令并實時查看開發(fā)板中的輸出狀態(tài),完全取代串口調(diào)試。
WebREPL客戶端的兩種使用方式在本篇開頭已經(jīng)寫明,選擇任意一種均可以連接開發(fā)板。

WebREPL客戶端必須與ESP8266開發(fā)板在同一局域網(wǎng)下,否則無法正常連接

WebREPL在固件中默認是不啟動的,所以在使用之前,需要先將服務打開。
  1. 在輸入框輸入 import webrepl_setup
    輸入 import webrepl_setup
  2. 看到當前WebREPL自動啟動狀態(tài)是未開啟的


    提示 webrepl未開啟自動啟動功能
  3. 輸入E開啟上電時自動啟動WebREPL功能
    輸入E開啟
  4. 要開啟WebREPL必須先設定密碼,密碼為4-9個字符


    連續(xù)輸入兩次4-9位的密碼
  5. 連續(xù)輸入兩次密碼后,確認Web_REPL開啟成功,重啟開發(fā)板


    webrepl已開啟自動啟動功能

到這一步,按照我的預期,WebREPL服務應該已經(jīng)是開啟狀態(tài),而我們可以使用WebREPL客戶端來進行連接了,實際情況卻是此時如果使用客戶端進行連接,將會始終連接失敗,所以還需要有第6步。

  1. 輸入import webrepl;webrepl.start();
    輸入import webrepl;webrepl.start();
  2. 成功開啟WebREPL服務,此時即可通過WebREPL客戶端來進行遠程連接ESP8266開發(fā)板,并上傳或下載文件。


    開始WebREPL成功

接下來使用WebREPL客戶端連接開發(fā)板

  1. 打開http:///webrepl/
    并修改地址為上一步控制臺輸出的地址,我這里是ws://192.168.2.19:8266
    改為ESP8266開發(fā)板ip地址

2.點擊連接后,輸入剛剛設定的密碼,輸入密碼時不會有任何回顯,輸入完畢直接回車,一切正常的情況即會連接成功。


連接成功
  1. 現(xiàn)在已經(jīng)可以通過WebREPL客戶端對ESP8266進行操作,主窗口中輸入python代碼進行實時調(diào)試,右側有文件上傳與下載功能,上傳功能與MicroPython File Uploader一樣,下載功能可以直接下載ESP8266開發(fā)板中存在的文件。

輸入import os;os.listdir();,查看當前開發(fā)板中的文件名稱

查看文件名

將文件名輸入到右側的Get a file輸入框中,點擊Get from device按鈕,即可將開發(fā)板中的文件下載到本地
下載webrepl_cfg.py文件

4.webrepl_cfg.py文件中存放著我們之前設定的WebREPL密碼,明文的?!?

到此,使用WebREPL遠程更新ESP8266開發(fā)板已經(jīng)完成,不過雖然前面設置了在開發(fā)板啟動時自動開啟WebREPL服務的功能,實驗證明,在開發(fā)板斷電重啟后,WebREPL服務并未開啟,經(jīng)檢查,是因為在設置WebREPL服務之前,我們上傳了自定義的boot.py文件,而MicroPython在開啟WebREPL服務時,會將相關代碼直接追加在boot.py文件尾,造成了語法錯誤,所以要手動更新一下boot.py文件。

更新后的boot.py文件內(nèi)容如下

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()

再也不用把開發(fā)板跟電腦相連啦!

上一篇:ESP8266折騰之路(二) 連接WIFI路由器使能上網(wǎng)

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多