| ESP32 教學 | MicroPython | webREPL 遠端模式 | 302 |

我們都知道 micropython 與 PC 平台上的 python 一樣都提供 REPL 模式與程式開發者互動,大部分都是使用實際 UART 介面來進行傳輸,其實還有另一無線傳輸的 REPL 模式,也就是 webREPL,一旦啟動後,就可以透過特殊的網頁進行遠端的檔案傳送接收與互動,少掉實體連接的麻煩,今天這篇就來看看如何操作與需要注意的地方吧!

1. 啟動 webREPL 功能

micropython 預設只有開啟 UART 傳輸的 REPL(也就是大多數人在用的),要開啟 webREPL 功能的話一樣在 REPL 內設定開啟即可,操作流程如下:

▼ 將 ESP32S 連接到電腦 USB,開啟 mobaXterm 軟體進行序列傳輸。

(可以先確認網路是否已經連上,如不知道如何連上 wifi ,可以參考 JIMI哥之前寫的這篇 ESP32-Wifi無線傳輸設定-301,把 boot.py 完整程式碼,修改 ssid 與密碼後,上傳到到手邊的ESP32S,重開機即可, 此處的無線連線是採用 STA Mode。

webrepl

▼ 在 REPL畫面下,輸入 import webrepl_setup,依照提示訊息進行相關設定並重新開機。

(① import webrepl_setup ②設定開機就自動起動webrepl(按下E) ③是否要修改密碼? ④設定webREPL密碼 ⑤ 是否立即重新起動?(按下y))

▼ 在按下 y 重新起動 ESP32 後,REPL 訊息視窗會出現 Started webrepl in normal mode 字樣,表示已正常啟動, 並記下 ws:// 後面的 IP 位址。

(各位朋友如果沒看到相關訊息,可在開機後再按一下鍵盤 Ctrl+D 軟開機,應該就可以看到了。)

2. 開始使用 webREPL 服務

webREPL 必須透過網頁的服務來進行操作,確認手邊的電腦可以連網後,瀏覽器連上  http://micropython.org/webrepl/ ,注意到網頁畫面左上角有個ws:的輸入欄嗎? 這邊打入剛剛記下的IP位置(JIMI哥 手邊的 ESP32 的位址是ws://192.168.43.14:8266,各位朋友根據手邊 IP 修改),按下 connect 按鈕。

順利連接後,webREPL 畫面顯示 welcome to micropython,並要求輸入登入密碼,待出現  >>>,便是與我們熟悉的一般 REPL 模式操作大致類似,因為是無線網路傳輸的關係,訊息輸入速度多少感受到一點點的 LAG  是正常的。

– ESP32 檔案基本操作

在進行 webREPL 最重要的功能 — 檔案上下載操作前,JIMI哥先來講個問題: 如何知道 ESP32 內部的檔案清單?由於 micropython 已內建檔案系統,所以只要 import os 這個模組即可進行操作,常用功能如下:

  • 讀取內部的檔案列表

    import os
    os.listdir()
  • 刪除檔案

    import os
    os.remove('filename')
  • 建立與讀取檔案

    import os
    f1 = open('test.txt', 'w')   # 開啟text.txt檔案
    f1.write('today is a good day') #在檔案內寫入字串
    f1.close() ##檔案關閉
    f1.open('test.txt') ##開啟 text.txt
    f1.read() #讀取檔案
    f1.close() ##關閉檔案

    實際利用 REPL 來操作看看:

    熟悉以上的操作後,便可以來進行 ESP32遠端上傳與下載動作。

    – ESP32 遠端檔案上傳與下載

    檔案上傳到 ESP32

    確認目前 webREPL 已登入上線後,按下右邊區塊的『瀏覽』按鈕 -> 選擇要上傳的檔案-> send to device,上傳成功就會出現該檔案的大小訊息。

    從 ESP32 遠端下載檔案

    與上傳方法類似,只要填入欲下載的檔案名稱,按下[Get from devie],瀏覽器就會出現下載提示視窗。

    3. 總結

    webREPL 一旦設定啟動後,我們即可遠端確認系統參數,或進行相關檔案的更新操作,少了實體線路的連接,對於某些使用情境上來說還有明顯的優勢,但… JIMI哥還是得說說實際應用本人的遇到的問題😆,簡單來說…..就是常常會遇到系統沒有回應,或反應過慢,偶爾還會突然就斷線!?  推測可能如果 ESP32 處理原本的主要的控制程序外,若再加上 webREPL 服務,可能 Loading 變重的關係,所以才會有此現象。另外因為 webREPL 目前只支援 http 的連線,並不支援 https 加密封包的傳輸,在安全性上還是略顯不足。 所以建議如果有需要的朋友在進行 webREPL 操作後,記得把此服務關掉提高系統的穩定性。

    今天的內容就到這邊,如果各位有遇到什麼問題,也歡迎在下面留言或寫信與我討論囉~ 

    ↓↓↓↓↓↓賣場連結↓↓↓↓↓↓

    歡迎大家有需要的話,可以多多支持一下我們的蝦皮賣場喔! 😀 

    吉米家官方店-創客機器人材料專賣 https://shopee.tw/jimirobot.tw

    Follow JIMI哥 Twitter : https://twitter.com/jimirobot  <–得到最新文章通知

    發佈留言

    Close Menu