我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195
實做說明
對於以往有寫過其他類型程式的人來說,Arduino IDE其實並非是完整的開發工具,以筆者常在使用的微軟.net系列開發工具「Visual Studio」來說,先不論專案管理、資源管理等大型專案需要用到的工具,還有設計階段需要用到的程式碼自動提示(autocompletion)之外,就先以程式執行過程所需的除錯(Debug)工具來說則是完全缺乏。
對於程式設計師最需要用到的除錯工具包括中斷點(Breakpoint)、步進執行(Step Into)、變數監看(Watcher)等三大工具,這三大工具可以讓設計師完全掌握程式走向,「中斷點」可以在重要的地方暫停,然後用「步進執行」一步一步查看程式的動態,最後「變數監看」則可以知道數值目前狀態,了解變數變化的過程,因為缺少這些除錯工具,導致Arduino撰寫大型程式時非常艱難,大部分都是透過Serial拋出訊息來查看程式執行狀態,而程式中過多的Serial print導致結構過於混亂,也會影響程式執行效能。
不過其實這是可以解決的,Arduino架構也是可以像其他開發環境一樣,有程式碼自動提示、中斷點、步進執行、變數監看這些工具的,只是還需要兩項工具的支援,一個是改用有支援除錯的開發工具VSCode及PlatformIO,另外就是需要一組能支援JTAG除錯的工具ESP-PROG模組,其架構如下圖,本章將介紹如何建立具有除錯功能的Arduino開發環境。
如前面所述,Arduino IDE缺少了許多工具,因此本節我們先介紹如何安裝VSCode及PlatformIO開發工具,讀者會覺得比較奇怪的是,當本書說開發工具是VSCode及PlatformIO時,那到底是指VSCode?還是用PlatformIO呢?
應該這樣說比較精確:「是用VSCode底下的一個延伸模組名稱是PlatformIO來開發Arduino的應用」
有點像是Chrome瀏覽器底下可以安裝很多小工具,而PlatformIO就是VSCode底下的工具,所以我們先來簡介VSCode及他的安裝過程。
一、VSCode安裝
VSCode是微軟提供的開發工具,屬於.net系列開發工具Visual Studio .net(簡稱為VS.net)的簡易版,兩者最大的差異在於VS.net只支援微軟自己的開發語言例如C#、VB、ASP等,而VSCode則可以透過外掛模組來編輯多種程式語言,由於VSCode的穩定性及擴充性受到非常多開發者的愛用,本節我們會先安裝VSCode後,再安裝PlatformIO延伸模組。
安裝VSCode非常簡單,先到微軟的網站直接下載安裝檔。
VSCode下載網址:https://code.visualstudio.com/download
然後依照讀者使用的作業系統下載符合的安裝檔,如果讀者也是Windows的話,可以跟筆者一樣點選上圖紅圈部份:System Installer 64 bit。下載後,依照下面的步驟完成安裝。
1.確認同意授權條款
2.安裝選項,勾選「建立桌面圖示」及「加入PATH中」兩個選項即可
3.點選安裝按鈕,進入程式安裝過程
4.等候安裝過程完畢
5.安裝完畢了,按完成,啟動VSCode
6.VSCode開啟後的畫面
7.由於VSCode預設為英文界面,我們可以安裝中文延伸模組來改成中文界面
(1)請點選左側延伸模組圖示
(2)在關鍵字輸入「chinese」
(3)找到中文(繁體)的延伸模組名稱
(4)點右邊的install安裝按鈕
(5) 完成安裝後,右下角會出現一個浮動視窗,內容是「請重開啟動以切換成中文」,點選Restart按鈕即可切換中文
完成中文畫面切換
到這裡為止,我們已經完成VSCode的安裝與設定,下一步就是安裝PlatformIO的延伸模組來支援Arduino。
二、PlatformIO安裝
PlatformIO是一個嵌入式設備的延伸開發工具,關於PlatformIO的相關歷史,可以參閱官方網站 ,而安裝PlatformIO我們只須從VSCode的延伸模組中下載即可
1.安裝PlatformIO延伸模組
(1)點選左側延伸模組
(2)於上方關鍵字處輸入「PlatformIO」
(3)找到PlatformIO
(4)點選右側的安裝按鈕,即可開始安裝。
(5)安裝過程需要從網路下載許多其他模組,因此會佔用較多時間
(6)安裝完成後,會跳出浮動視窗,請您重開VSCode
(7)重開VSCode之後,再稍後一會就可以看到PlatformIO的圖示出現在左側的工具欄了
2.在PlatformIO執行HelloWorld
(1)點選左下角的PlatformIO Home房子圖示,即可進入起始畫面
(2)點選+New Project,建立第一個程式
(3)在Name地方輸入計畫名稱為HelloWorld(讀者可以自己取名)
(4)在Board的地方,選擇開發板為Espressif ESP-WROVER-KIT,由於支援板子眾多,可以先輸入ESP32來預先篩選
(5)Framework選擇Arduino,ESP32開發可以選擇Arduino或Espressif IoT Development Framework兩種架構,本例則選擇使用Arduino。
(6)Location則是選擇存檔的位置,預設在My documents內,讀者可以自行選擇其他位置存檔,這裡暫時用預設位置,保留勾選。
(7)完成後,點選Finish即可
(8)第一次的程式開啟會需要下載ESP32相容元件,又會花許上約5-20分鐘時間(視網路下載速度而定),但往後就可以快速開啟新計畫,請耐心等候。
(9)完成開啟後,左側會出現檔案總管,資料夾底下為本程式的所有相關資源,我們要撰寫的程式碼在src/main.cpp,我們對main.cpp快速點兩下,就可以開啟程式碼,這裡可以發現PlatformIO的附檔名為.cpp與Arduino的.ino雖然不同,但語法是完全相同的。
三、HelloWorld測試
在程式碼視窗內輸入HelloWorld程式碼
#include <Arduino.h>
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello world!");
delay(1000);
}
程式碼結構與Arduino IDE的寫法是完全相同的,不過最上方的#include 這個函式庫是每一個程式都一定要加的,另外就是Serial的速率我們選擇9600,因為這是預設值,要修改的話要進入platformio.ini初始化設定檔中設定。
接下來我們應該要來上傳,以往在Arduino IDE會有一個Port號要先選擇,在PlatformIO則不需要,PlatformIO會很自動的幫我們找到裝置的Port號後直接上傳。不過若您需要指定Port號的話,則一樣要用platformio.ini初始化設定檔來設定,這部份我們稍後會說明。
編譯及上傳程式的按鈕在PlatformIO則改在最下方,其圖示與Arduino一致,都是「編譯」為打勾 、「上傳程式碼」為向右箭頭 ,我們利用 將程式燒錄到ESP32中。
燒錄完成後,則要用插頭 圖示來開啟「序列監控視窗」,這樣就可以看到HelloWorld了,到這裡就可以確定我們安裝的VSCode及PlatformIO環境都是正確的沒問題。
若讀者需要修改Port號,或者序列埠的鮑率等設定,則可以開啟platformio.ini檔案,並在最下方加入設定,其中COM3為筆者電腦的序列Port號,請讀者依照自己的電腦環境修改正確的COM編號。
關於platformio.ini能設定的部份相當多,請自行參考官方說明 ,本書僅針對相關部份做說明,無法一一列舉。
至此,我們已經完成Arduino除錯環境建立的第一階段 開發環境設定,下一篇我們將會介紹如何接上ESP-PROG裝置,並用JTAG進行除錯。
第二篇 ESP-PROG安裝與設定:ESP32 JTAG除錯環境建立:2.ESP-PROG安裝與設定