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

本篇新增軟件

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

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

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

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

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

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

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


    提示 webrepl未開(kāi)啟自動(dòng)啟動(dòng)功能
  3. 輸入E開(kāi)啟上電時(shí)自動(dòng)啟動(dòng)WebREPL功能
    輸入E開(kāi)啟
  4. 要開(kāi)啟WebREPL必須先設(shè)定密碼,密碼為4-9個(gè)字符


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


    webrepl已開(kāi)啟自動(dòng)啟動(dòng)功能

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

  1. 輸入import webrepl;webrepl.start();
    輸入import webrepl;webrepl.start();
  2. 成功開(kāi)啟WebREPL服務(wù),此時(shí)即可通過(guò)WebREPL客戶(hù)端來(lái)進(jìn)行遠(yuǎn)程連接ESP8266開(kāi)發(fā)板,并上傳或下載文件。


    開(kāi)始WebREPL成功

接下來(lái)使用WebREPL客戶(hù)端連接開(kāi)發(fā)板

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

2.點(diǎn)擊連接后,輸入剛剛設(shè)定的密碼,輸入密碼時(shí)不會(huì)有任何回顯,輸入完畢直接回車(chē),一切正常的情況即會(huì)連接成功。


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

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

查看文件名

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

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

到此,使用WebREPL遠(yuǎn)程更新ESP8266開(kāi)發(fā)板已經(jīng)完成,不過(guò)雖然前面設(shè)置了在開(kāi)發(fā)板啟動(dòng)時(shí)自動(dòng)開(kāi)啟WebREPL服務(wù)的功能,實(shí)驗(yàn)證明,在開(kāi)發(fā)板斷電重啟后,WebREPL服務(wù)并未開(kāi)啟,經(jīng)檢查,是因?yàn)樵谠O(shè)置WebREPL服務(wù)之前,我們上傳了自定義的boot.py文件,而MicroPython在開(kāi)啟WebREPL服務(wù)時(shí),會(huì)將相關(guān)代碼直接追加在boot.py文件尾,造成了語(yǔ)法錯(cuò)誤,所以要手動(dòng)更新一下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()

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 之前,我已經(jīng)將MicroPython固件燒寫(xiě)進(jìn)了ESP8266的開(kāi)發(fā)板中,現(xiàn)在給開(kāi)發(fā)板供電后,通過(guò)手機(jī)搜索無(wú)線局域...
    四十方知閱讀 23,553評(píng)論 3 4
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,828評(píng)論 25 709
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評(píng)論 19 139
  • 今天沒(méi)有像預(yù)想的那樣把早上的日常向前推。反向證明了,早上八點(diǎn)多才執(zhí)行日常的話(huà),會(huì)導(dǎo)致十點(diǎn)多才進(jìn)辦公室。今晚早睡,明...
    小王加油啊閱讀 150評(píng)論 0 0
  • 社會(huì)在進(jìn)步,人類(lèi)在倒退。 社會(huì)落后之前,為了親情舍棄金錢(qián)。 社會(huì)進(jìn)步之后,為了金錢(qián)舍棄親情。 社會(huì)在進(jìn)步還是在倒退?
    白色的螞蟻閱讀 242評(píng)論 0 2

友情鏈接更多精彩內(nèi)容