猛禽洛的程式筆記庫

[ESP32] ESP32開發環境建置(Visual Studio Code+ESP-IDF+Arduino+PlatformIO)

ESP32是一系列低成本,低功耗的單晶片微控制器,整合了Wi-Fi和雙模藍牙。

ESP32是一款開發IOT時很好用的開發板,剛好有時間來跨入ESP32的領域。

首先就是要先建立環境,開發ESP32的環境有很多種,每種環境都各有特色,於是就會產生一個問題:要選對陣營。

在實測各種環境後,大約有以下幾種種類:

  1. Espressif-IDE:官方的開發環境,沒有自動完成功能不習慣
  2. Arduino:走Arduino的架構,好處是網路上範例特別多,比較容易入門,但是編譯速度世界慢
  3. Visual Studio Code + ESP-IDF:比較習慣用VS Code,所以也能在這上面掛入ESP-IDF開發
  4. Visual Studio Code + Arduino:跟上面原理一樣,不過改成Arduino的架構,缺點是編譯速度一樣世界慢
  5. Visual Studio Code + PlatformIO (ESP-IDF + Arduino):結合以上全部優點,有Arduino容易開發的特性、ESP-IDF的編譯速度

看起來第5種是綜合分數最高的,所以,在這邊會以第5種方式來進行環境架設的說明。

 

開發環境安裝:

1.安裝Visual Studio Code:

官網下載最新版本安裝。

記得環境變數(PATH)都要勾選,安裝完成設定完Visual Studio Code的個人化後重啟電腦。

 

2.安裝Python:

現在很多開發工具都會需要用到Python了,早點安裝也省去麻煩。

直接至官網下載最新版本安裝,要下載installer版本(建議),同樣的,安裝時環境變數(PATH)記得勾選。

3.安裝PlatformIO:

啟動Visual Studio Code,左方欄icon處選擇Extensions外掛套件,然後搜尋PlatformIO並安裝(建議關閉防毒軟體在安裝,以免出現奇奇怪怪的問題)。

安裝完畢後,右下角會跳出PlatformIO Installer: Finished!安裝完成的提示,將Visual Studio Code重啟。

重啟Visual Studio Code後,左方會多出PlatformIO的icon即代表安裝成功。

4.建立sample專案:

接下來我們從原廠範例開始。

點選左方的PlatformIO icon後會開啟PlatformIO選單,然後按下PIO Home/Open就會開啟主畫面。

 

在主畫面中選擇左方欄的Platforms然後切換至Embedded分頁,並搜尋Espressif 32後安裝(ESP-IDF)。

安裝成功後,即可在Installed分頁中看見Espressif 32。

接下來點選左方Home回到主頁面,按下Project Examples就有各種範例程式可以選擇了。

這邊選擇arduino-blink範例程式,按下import匯入,如出現未信任的專案對話框,當然是按下信任。

接下來專案就開啟完成了!

左方工作區會顯示目前開啟的專案(api跟arduino-blink[現在]),Blink.cpp為目前的主程式。

下方有快速功能區,按下打勾會開始Build,第一次Build會很久,它會自動下載所需檔案。

Build完成之後按下箭頭(編譯與上傳),就會上傳程式碼至ESP32開發版了!

至於選擇PORT與開發版的部分,PlatformIO本身會自動化選擇,如果選擇不到或是有錯誤,則需手動處理檢查:

像這個範例專案在上傳時顯示以上錯誤,有些環境是編譯失敗的,因為我們其實只用到ESP32,所以就要去調整設定。

選擇Projects然後找到目前的專案,按下Configure來設定專案。

可以看到範例專案預設了一堆開發板,這些都不是我們要的,通通刪除。

然後回到第一片開發板,拉至下方,設定board,這邊我用的是ESP32-WROOM的版本,另外因為實際上沒接硬體,所以-D LED_BUILTIN=2先行移除。

#include <Arduino.h>


void setup()
{
  Serial.begin(115200);
}

void loop()
{
  Serial.println("HIGH");
  // wait for a second
  delay(1000);
  Serial.println("LOW");
  // wait for a second
  delay(1000);
}

再來將程式碼移除亮燈功能,改成在Serial顯示文字,這樣我們可以在Monitor中看到它。

再按一次箭頭上傳,成功後就會看到以下訊息:

Compressed 261744 bytes to 144877...
Writing at 0x00010000... (11 %)
Writing at 0x0001c611... (22 %)
Writing at 0x00024df4... (33 %)
Writing at 0x0002a22a... (44 %)
Writing at 0x0002f5d9... (55 %)
Writing at 0x0003578d... (66 %)
Writing at 0x0003fc99... (77 %)
Writing at 0x00045cec... (88 %)
Writing at 0x0004b1cb... (100 %)
Wrote 261744 bytes (144877 compressed) at 0x00010000 in 3.4 seconds (effective 619.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
===================================================================================== [SUCCESS] Took 35.56 seconds =====================================================================================
 *  Terminal will be reused by tasks, press any key to close it.

再來可以開啟Monitor來觀看運作的訊息:

按下Serial Monitor(插頭圖示)就可跳出Monitor畫面顯示我們Serial.println()的內容。

--- Terminal on COM19 | 115200 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13836
load:0x40080400,len:3608 
entry 0x400805f0
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH

 

總結:

PlatformIO的支援硬體非常廣泛,搭配Visual Studio Code的開發介面,就會比較容易上手,PlatformIO還可以相容Arduino專案匯入,程式碼寫法都一樣可以無痛轉移。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *