5

PlatformIO 訣竅 - 快速切換不同開發板進行測試

 3 years ago
source link: https://blog.darkthread.net/blog/platformio-multi-env/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
PlatformIO 訣竅 - 快速切換不同開發板進行測試-黑暗執行緒

前幾天提到 ESP 開發板,至於開發工具則大推 VSCode + PlatformIO,我會陸續分享使用技巧與心得。

有用過 Visual Studio Code 又有 Arduino/ESP 開發經驗的同學,憑著 PlatformIO 關鍵字及直覺,應該能自己摸索出安裝及操作方式(至少我自己是如此),若想看教學,推薦 Random Nerd Tutorial 這篇 - Getting Started with VS Code and PlatformIO IDE for ESP32 and ESP8266 (Windows, Mac OS X, Linux Ubuntu),雖然是英文的,但圖文並茂且英文淺顯,加上步驟詳細,就算看圖說故事也能懂。

裝好 VSCode、PlatformIO,試跑 Arduino 界的 Hello World,就能開始享受 VSCode + PlatformIO 的美好開發體驗囉~:

void loop()
{
  digitalWrite(LED_BUILTIN, LOW);
  delay(200);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(200);
}

如果你有多塊不同種類的開發板,這個小技巧還蠻實用的。像我這陣子常會交互測試 Arduino UNO、ESP8266 跟 ESP32,用 Arduino UNO 是因為教學最多,找到現成範例確認元件功能正常,再移到 ESP 測試,便會有同一支程式部署到不同開發板的需求。

Arduino IDE 操作介面有選單可動態改變開發板種類:

但 PlatformIO 做法不太一樣,新增 PlatformIO 專案時需指定 Board (開發板型號)、Framework (例如:Arduino 或 ESP-IDF):

如果我一開始是用 NodeMCU 1.0 (ESP-12E Module) 測 ESP8266 測試,開發到一半想試試程式在 ESP32 跑有沒有問題,該做麼做?

PlatformIO 有 UI 可以更改專案對映的 Board、Framework (如下圖),但如果要反覆測試多種開發版(例如:ESP8266 跟 ESP32,確認程式寫法兩容),一直改來改去有點沒效率。

針對這種常見應用情境,PlatformIO 的做法是允許專案擁有多組環境設定,編譯上傳時再選擇使用硬體。

做法是手動修改 platformio.ini。如下圖,你可以在專案目錄找到它(下圖 1 所指處),點選後在右邊編輯視窗進行修改:

上圖 2 所指 [env:nodemcu-32s] 是我手動加上的,原本只有 [env:nodemcuv2],由於有多組 env,最上方 [platformio] 的 default_envs 與批次處理有關,等下再介紹。要注意輸入的設定寫法必須正確,否則可能導致程式無法編譯。若不知道不同開發板的設定值要怎麼寫,一個簡單做法是另個開新專案設好 Board、Framework,加好 Library 測試 OK 再參考它的 platformio.ini 寫法,這樣最萬無一失,做個幾次,後來多半能徒手修改。

關於 platformio.ini 的寫法,官方有說明文件 - “platformio.ini” (Project Configuration File) 可以參考。

為專案設定多組環境後,測試時可點選下方狀態列的目前環境設定(1),上方將出現環境設定清單(2)讓你切換環境設定:

這樣子就可以快速切換不同開發板進行測試囉。

最後介紹一個強大功能,程式改完可不可以一次針對張開發板編譯,甚至同時上傳到不同開發板上跑看看呢?步驟是:(1) 先在前面提到 default_envs 指定多組環境設定,(2) 按左側的 PlatformIO 圖示帶出 PlatformIO 選單,(3) 選 Build All,(4) 在 Terminal 視窗可以看到兩種開發版都完成編輯。在環境設定指定好 COM Port,還可以在編譯後直接上傳,甚至開啟序列埠監視器觀察,稍加設計要實現自動測試也不是問題,是開發專業程式的夢幻功能呀~ (但跨開發板的眉角還挺多的,以後再聊)

玩了幾天 VSCode + PlatformIO,由於功能多複雜度高,確實要花點時間摸索,但兵器都需要練習才能上手,未來若上場殺敵,我會希望帶手上拿的是這把烏茲衝鋒槍。至 Arduino IDE,謝謝你帶我進入 Arduino 世界,以後有空再找你玩。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK