2021年11月24日 星期三

MicroPython on ESP8266 學習筆記 (二十六) : 使用 Thonny 編輯器作為開發工具

我以前不管是寫 HTML, Javascript, PHP, 還是 Python 都習慣使用 EditPlus 編輯器進行測試開發, 因為 EditPlus 不僅輕量, 支援度高, 特別是有一個 Ctrl + J 快捷鍵可以立刻複製一行程式碼, 真的非常方便. 不過最近我寫 Python 程式已改用同樣很輕量的 Thonny, 原因如下 : 
  1. 可直接燒錄 MicroPython 韌體 (雖然以下測試不知原因失敗). 
  2. 自帶 Python 直譯器, 也可以選用本機所安裝的 Python 直譯器. 
  3. 支援 MicroPython 開發板檔案上傳, 下載, 刪除, 新增目錄等操作. 
特別是第三項非常優, 不僅可用 REPL 互動模式立即執行程式碼 (取代 Pytty), 也可以直接上傳程式檔案到控制板的 MicroPython 檔案系統中 (取代 ampy/rshell/mpfshell 等程式), 這實在太方便了, 基本上這款愛沙尼亞開發的編輯器就是專為 Python 應用程式開發而設計的, 特別是對嵌入式系統而言是個完整的開發工具. 關於 Thonny 參考 :


之前用的 MicroPython 開發方式參考 :


以下介紹如何使用 Thonny 編輯器連線 MicroPython 控制板, 此處使用 D1 Mini 為例, 此板體積小價格便宜 (130~200 元左右), 控制器使用 ESP8266 (ESP-12EX 模組), 有 9 個 GPIO 埠 (其中 D4/GPIO2 已接到板載 LED), 2 個 UART 埠, 1 個 ADC 腳 (A0, 10 位元解析度), 內建 4MB 的 Flash, 容量足以開發較大型物聯網應用, 燒錄韌體時須將 D3/GPIO0 接地, 參考 : 


在 Thonny 編輯器裡可以用互動環境模式直接以 MicroPython 指令操控連線中的開發板, 也可以將編輯視窗中的程式存檔後, 透過左邊的檔案目錄視窗將本機檔案上傳到 MicroPython 開發板的檔案系統內 (左上方窗格), 或將 MicroPython 設備中的檔案下載到本機目錄下 (左下方窗格). 


1. 以互動模式直接操控開發板 : 

首先開啟 Thonny, 點選 "執行/選擇直譯器 ..." :





在直譯器選擇頁面中點選第一個下拉式選單, 可見 Thonny 支援 ESP8266, ESP32, Micro::bit, 以以及 Raspberry Pico 等開發板, 點選 MicroPython (ESP8266) 這一項, 因為此處使用的 D1 mini 為 ESP8266 模組, 若是 ESP32 就要選 MicroPython (ESP32) : 




第二個下拉式選單點選 "<自動偵測連接埠>" 即可, 這真的超方便, 不用再去開啟裝置管理員檢查目前控制板是接在哪個 COM 埠 :




按 "確認" 鈕後, Thonny 就會自動透過 COM 埠連線控制板 (如同用 Putty 手動連線 D1 Mini 一樣), 成功後會在視窗底下的 Shell (互動環境) 區顯示 MicroPython 的命令列 : 




這樣就可以直接在此 Shell 命令列輸入 Python 指令, 例如下面的程式碼是以無窮迴圈控制與 D4/GPIO2 連接的板載藍色 LED 燈 ON/OFF 不停地閃爍 : 

MicroPython v1.13 on 2020-09-02; ESP module with ESP8266

Type "help()" for more information.
>>> from machine import Pin   
>>> import time     
>>> led=Pin(2, Pin.OUT)        
>>> while True:         
    led.value(1)      
    time.sleep(0.5)     
    led.value(0)      
    time.sleep(1)       

此互動程式執行後即可看到 D1 mini 板載的藍色 LED 不斷地一閃一閃.


2. 將本地檔案上傳到 MicroPython 開發板 : 

互動模式通常只用來暫時測試一小段程式碼是否功能正確, 測試好的完整程式必須上傳到開發板根目錄下, 然後按 Reset 鍵, MicroPython 固定會去抓根目錄下的 main.py 開始執行, 首先開啟 Thonny 的 "檢視" 頁籤勾選 "檔案", 這樣視窗左邊就會顯示兩個檔案目錄窗格, 左上方是本機檔案系統窗格; 左下方是 MicroPython 設備之檔案系統窗格  :




在編輯區輸入上面的 LED 閃爍程式後存成 main.py 檔案, 然後於左上方本機目錄中點選此檔案, 按右鍵點選 "上傳到/" 即可將此 main.py 上傳到開發板的根目錄下 (這取代了 ampy 的功能) :





除了上傳還可以將開發板中的檔案下載到本機目錄中檢視或保存, 只要在左下方 "MicroPython 設備" 窗格中點選要下載的檔案 (例如 boot.py), 按滑鼠右鍵點選 "下載到 ..." 即可 : 




點選檔案後按滑鼠右鍵選擇 "刪除" 則可以刪除該檔案 : 




也可以在 "MicroPython 設備" 窗格的空白區域按滑鼠右鍵點選 "新增目錄", 輸入目錄名稱, 例如用來放置第三方模組的 lib 目錄, 按確定即可 : 






可見有了 Thonny 後完全不必再使用 ampy 或 rshell 等程式來管理開發板的檔案系統了, 真的非常方便. 尤其是像上面這個無窮迴圈程式, 以前用 ampy 常常會無法連線進去刪除 main.py, 因為 CPU 不斷在跑迴圈, 無暇理會連線要求. 現在可以點選 Thonny 的 "執行" 頁籤, 選擇 "停止/重新啟動後端程式" 終止程式後, 點選 main.py 刪除即可 :




另外, 如果 MicroPython 設備斷線 (似乎閒置一段時間沒有用就會出現 "Backend terminated or disconnected. Use 'Stop/Restart' to restart." 斷線訊息), 也是點選 "停止/重新啟動後端程式" 來重新連線 : 




這樣 Shell 窗格就會再次出現  >>> 提示號了.  


3. 燒錄 MicroPython 韌體 : 

我這塊 D1 mini 之前燒錄的韌體是 1.13 版, 現在 MicroPython 已升至 1.17 版, 正好用這塊來試試看如何用 Thonny 來燒錄新韌體. 首先到 MicroPython 官網下載 2MB Flash 以上的韌體, 所下載的檔案是 esp8266-20210902-v1.17.bin : 





然後用杜邦線將 D3/GPIO0 接地 (這樣才會進入 Flash mode) : 




接著點選 Thonny 的 點選 "執行/選擇直譯器 ...", 拉下 "選擇連接埠" 選單, 可知目前開發板是接在 COM 8 埠上, 選擇此埠或 "自動偵測連接埠" 亦可, 但要知道實際是在哪個埠 (下一步上傳韌體時會用到) : 




然後按右下角 "安裝或更新韌體" 連結 : 




在 Port 欄中點選上面已得知 MicroPython 設備所連接的 COM 8 埠, 



然後按 "Firmware" 欄位右邊的 "Browse" 鈕從檔案系統中選取所下載的 MicroPython 韌體, 其他欄位維持預設值 (例如已勾選的 Erase flase before installing 等), 按 "安裝" 鈕即先清除 Flash 並開始燒錄韌體, 完成後左下角會顯示 "Done!" :






燒錄完成後, 移除 D3/GPIO0 的接地線, 在 Shell 區按 Ctrl + D 軟開機或按板上的 Reset 鍵卻出現怪碼無法進入 REPL/Shell 介面, Why? 看起來燒錄過程都沒問題啊! 奇怪. 有空再來研究看看是哪裡有問題

只好用以前用的 ESP8266Flasher.exe 來燒錄, 結果 OK :







參考 : 



2021-11-24 補充 :

D1 mini 若使用長針腳的母插座來焊接的話, 不僅可以插在麵包板上使用公的杜邦線連接其他元件, 若無麵包板也可以直接使用上面的母座, 下次要焊針腳時可考慮這種母座 : 




當然這只是對開發測試較方便, 實際運作時這種長針腳母座很佔空間. 

2021-11-25 補充 : 

今天換另外一塊 D1 mini 板子用 Thonny 燒錄 v1.17 版韌體就沒問題, 拔掉 D3/GPIO0 接地線後按 Reset 鈕會先出現怪碼, 但隨後就出現 Shell 提示號了 : 




所以結論是, Thonny 包辦了從燒錄韌體, 編輯程式, 到上傳/下載/刪除/新增目錄等所有會用到的工具, 是開發 MicroPython 應用的輕量好幫手. 

沒有留言 :