ESP32是一系列低成本,低功耗的單晶片微控制器,整合了Wi-Fi和雙模藍牙。
ESP32是一款開發IOT時很好用的開發板,剛好有時間來跨入ESP32的領域。
首先就是要先建立環境,開發ESP32的環境有很多種,每種環境都各有特色,於是就會產生一個問題:要選對陣營。
在實測各種環境後,大約有以下幾種種類:
- Espressif-IDE:官方的開發環境,沒有自動完成功能不習慣
- Arduino:走Arduino的架構,好處是網路上範例特別多,比較容易入門,但是編譯速度世界慢
- Visual Studio Code + ESP-IDF:比較習慣用VS Code,所以也能在這上面掛入ESP-IDF開發
- Visual Studio Code + Arduino:跟上面原理一樣,不過改成Arduino的架構,缺點是編譯速度一樣世界慢
- 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專案匯入,程式碼寫法都一樣可以無痛轉移。
發佈留言