上一章我們已經認識:
- ESP32
- ESP32-WROOM-32
- ESP32 Development Board
- ESP32 與 Arduino UNO R3 的差異
- ESP32 的 Wi-Fi 與 Bluetooth
- ESP32 3.3V GPIO
- ESP32 的 IoT 應用
接下來真正要開始寫 ESP32 程式之前,第一件事情就是建立完整的開發環境。
對曾經使用 Arduino UNO R3 的使用者來說,這個過程並不困難,因為 ESP32 同樣可以使用熟悉的:
Arduino IDE
進行開發。
但是 Arduino IDE 安裝完成之後,預設並不一定已經具備完整的 ESP32 開發環境,因此我們還需要安裝 Espressif 提供的:
Arduino-ESP32 Board Package
截至 2026 年,Espressif 官方仍建議透過 Arduino IDE 的 Boards Manager 安裝 Arduino-ESP32 支援套件。
本章將完整完成:
Arduino IDE
↓
ESP32 Boards Manager URL
↓
esp32 Board Package
↓
USB Driver
↓
USB Cable
↓
COM Port
↓
ESP32 Board Selection
↓
Compile
↓
Upload
↓
Serial Monitor
↓
Hello ESP32
只要完成本章,你的電腦就正式具備 ESP32 Arduino 開發環境。
一、ESP32 可以使用 Arduino IDE 嗎?
可以。
ESP32 原廠 Espressif 維護了:
Arduino Core for ESP32
也就是通常稱為:
Arduino-ESP32
它可以讓我們使用 Arduino 熟悉的程式架構:
void setup()
{
}
void loop()
{
}
並繼續使用許多熟悉的 Arduino 函式,例如:
pinMode();
digitalWrite();
digitalRead();
analogRead();
delay();
millis();
Serial.begin();
Serial.print();
Serial.println();
同時又可以使用 ESP32 特有的:
- Wi-Fi
- Bluetooth
- BLE
- 多組 UART
- ADC
- PWM
- Touch
- Web Server
- MQTT
- FreeRTOS
因此,對已經學過 Arduino UNO 的使用者來說,ESP32 是非常自然的進階平台。
二、本章需要準備什麼?
硬體
建議準備:
- ESP32 Development Board × 1
- ESP32-WROOM-32 類型開發板
- USB 資料傳輸線 × 1
- Windows 10 / Windows 11 電腦
- LED × 1
- 220Ω~330Ω 電阻 × 1
- 麵包板 × 1
- 杜邦線
本套教材主要以經典 ESP32 開發板為教學基礎。
軟體
需要:
Arduino IDE
+
ESP32 Arduino Core
+
USB-to-UART Driver
Arduino 官方目前仍提供 Arduino IDE 2 系列以及 Boards Manager、Library Manager、Serial Monitor 等完整開發功能。
三、ESP32 開發環境架構
先了解整個流程。
我們寫的:
ESP32.ino
並不是 Arduino IDE 自己直接變成 ESP32 可以執行的程式。
整體概念大約是:
Arduino Sketch
│
↓
Arduino IDE
│
↓
Arduino-ESP32 Core
│
↓
Compiler
│
↓
Firmware
│
↓
esptool
│
↓
USB / UART
│
↓
ESP32 Flash
所以如果沒有安裝 ESP32 Board Package,Arduino IDE 就不知道:
「我要如何編譯 ESP32 的程式?」
四、第一步:安裝 Arduino IDE
如果電腦已經安裝 Arduino IDE 2,可以直接使用。
如果尚未安裝,應從 Arduino 官方網站取得目前版本。
Arduino 官方文件目前將 Arduino IDE 2 列為主要 IDE,並提供:
- Board Manager
- Library Manager
- Serial Monitor
- Serial Plotter
- Debugging
- Auto Complete
等功能。
本套 ESP32 教材建議使用:
Arduino IDE 2.x
而不是舊版 Arduino IDE 1.x。
五、啟動 Arduino IDE
安裝完成之後開啟:
Arduino IDE
一開始可能只看到 Arduino 官方支援的開發板。
例如:
Arduino UNO
Arduino Mega
Arduino Nano
這時候如果搜尋 ESP32,可能還沒有完整的 ESP32 開發板清單。
原因是:
ESP32 Board Package 尚未安裝。
六、第二步:加入 ESP32 Boards Manager URL
Espressif 官方提供 Arduino IDE 使用的 Board Manager JSON。
截至本章撰寫時,ESP32 Stable Release 官方網址為:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
這個網址非常重要。
建議保存。
七、Arduino IDE 2 如何設定 ESP32 Board Manager URL?
開啟 Arduino IDE。
進入:
File
↓
Preferences
或者:
File → Preferences
找到:
Additional boards manager URLs
中文介面可能顯示類似:
其他開發板管理員網址
加入:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
然後按:
OK
Espressif 官方安裝文件同樣要求將 Stable Release URL 加到 Arduino IDE 的 Additional Board Manager URLs,再透過 Boards Manager 安裝 ESP32 平台。
八、如果本來就有其他 Board Manager URL 怎麼辦?
不用刪掉。
Arduino IDE 可以設定多個 Additional Board Manager URL。
例如原本有:
URL A
URL B
再增加:
ESP32 URL
即可。
Espressif 官方文件也說明可以加入多個 URL。
不要為了安裝 ESP32 把原本其他開發板套件的網址刪掉。
九、Stable Release 和 Development Release 有什麼不同?
Espressif 官方目前提供:
Stable Release
https://espressif.github.io/arduino-esp32/package_esp32_index.json
Development Release
https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
兩者都由 Espressif 官方提供。
本套教材建議使用:
初學者建議使用 Stable Release
原因很簡單:
教學環境最重要的是:
穩定
>
最新測試功能
除非未來真的需要測試尚未正式發布的新功能,否則不建議 ESP32 初學者使用 Development Release。
十、第三步:安裝 ESP32 Board Package
設定好 URL 之後,開啟:
Tools
↓
Board
↓
Boards Manager
Arduino IDE 2 也可以直接點左側:
Boards Manager
圖示。
搜尋:
esp32
找到 Espressif 提供的套件。
通常會看到:
esp32 by Espressif Systems
按:
INSTALL
開始安裝。
Espressif 官方安裝程序就是透過 Boards Manager 安裝 esp32 platform。
十一、ESP32 Board Package 裡面包含什麼?
安裝的並不是單純「開發板名稱」。
它實際包含完整的 ESP32 Arduino 開發環境,例如:
ESP32 Arduino Core
│
├── Compiler
├── Board Definition
├── Libraries
├── esptool
├── Upload Tools
├── ESP32 API
└── Build Tools
安裝完成之後 Arduino IDE 才知道:
如何編譯 ESP32
如何燒錄 ESP32
有哪些 ESP32 開發板
有哪些 ESP32 Library
十二、安裝 ESP32 套件可能需要一點時間
ESP32 Board Package 比一般 Arduino Library 大很多。
因為其中還包含:
- Toolchain
- Compiler
- Upload Tool
- ESP32 Framework
- Board Definition
所以下載時不要因為進度停留一下就立即關閉 Arduino IDE。
如果安裝失敗,首先確認:
Internet
Firewall
Proxy
Antivirus
GitHub connection
Espressif 官方也特別提供 Board Package 下載與安裝問題的 Troubleshooting 文件。
十三、安裝完成後重新啟動 Arduino IDE
ESP32 Board Package 安裝完成後,建議:
關閉 Arduino IDE
↓
重新開啟 Arduino IDE
Espressif 官方安裝步驟也建議安裝完成後重新啟動 Arduino IDE。
十四、第四步:使用 USB 線連接 ESP32
接下來:
Computer
│
USB Cable
│
↓
ESP32
插上 ESP32 開發板。
通常可以看到 ESP32 開發板上的 Power LED 亮起。
但是:
LED 亮不代表 USB 通訊一定正常。
這一點非常重要。
十五、USB Cable 有兩種常見情況
USB 線可以分成:
1. Data Cable
具有:
Power
+
Data
可以:
- 供電
- 傳輸資料
- Upload
- Serial Monitor
2. Charge Only Cable
只有:
Power
可以讓:
ESP32 Power LED
亮起。
但是電腦完全看不到:
COM Port
Espressif 官方 ESP32 Troubleshooting 文件也把「USB Cable 只有充電、沒有資料傳輸」列為無法 Upload 時首先應檢查的問題之一。
因此:
ESP32 有亮燈但沒有 COM Port 時,第一件事情不是重裝 Arduino IDE,而是換一條確定可以傳輸資料的 USB 線。
十六、ESP32 為什麼需要 USB-to-UART?
經典 ESP32 本身主要透過 UART 進行傳統的 Serial Download。
所以很多 ESP32 開發板上會有:
USB
↓
USB-to-UART
↓
ESP32 UART
Espressif 官方文件指出,許多 ESP32 Development Board 會在開發板上直接整合 USB-to-UART Bridge;如果板子沒有整合,也可以使用外部 USB-to-UART Bridge。
因此:
PC
│
USB
│
↓
USB-to-UART Chip
│
UART TX/RX
│
↓
ESP32
十七、常見 ESP32 USB-to-UART 晶片
不同 ESP32 開發板可能使用不同 USB-to-UART 晶片。
例如常見:
CP2102
CP2102N
CH340
FTDI
CH9102
Espressif 官方文件列出其官方開發板常見 CP210x 與 FTDI USB-to-UART Bridge,同時 ESP-IDF 工具文件亦提到 CP210x、CH340、CH9102 等 USB-to-Serial 裝置。
因此:
ESP32 Driver 並不是只有一種。
必須先知道你的開發板使用哪一顆 USB-to-UART 晶片。
十八、如何判斷 ESP32 使用哪一顆 USB Driver?
最簡單的方法:
直接觀察 ESP32 開發板 USB 接頭附近的晶片。
例如看到:
CP2102
就需要:
CP210x USB to UART Driver
如果看到:
CH340
就屬於 CH340 USB Serial 類型。
如果 Windows 已經自動辨識,就通常不需要另外安裝 Driver。
Espressif 官方也指出,在正常情況下 USB-to-UART Driver 通常會由作業系統自動安裝;如果沒有,就要確認開發板使用的 USB-to-UART 晶片並安裝對應驅動程式。
十九、第五步:確認 Windows Device Manager
Windows 使用者可以開啟:
Device Manager
中文:
裝置管理員
找到:
Ports (COM & LPT)
可能看到:
Silicon Labs CP210x USB to UART Bridge (COM5)
或者:
USB-SERIAL CH340 (COM6)
真正重要的是最後的:
COM5
COM6
COM7
...
Espressif 官方建議 Windows 使用者透過 Device Manager 查看 COM Port,最簡單的辨識方式是拔掉 ESP32,再插回去,觀察哪一個 COM Port 消失後重新出現。
二十、如何確認哪一個 COM Port 是 ESP32?
假設電腦同時出現:
COM1
COM4
COM7
不知道哪一個是 ESP32。
可以做:
ESP32 插著
↓
記錄 COM Port
↓
拔掉 ESP32
↓
查看哪個 COM 消失
↓
重新插上 ESP32
↓
查看哪個 COM 出現
例如:
原本:
COM1
COM4
COM7
拔掉 ESP32 後:
COM1
COM4
那麼:
COM7 = ESP32
這是非常實用的確認方法。
二十一、如果 Device Manager 沒有 COM Port
按照下面順序檢查。
1. USB Cable
↓
2. 換 USB Port
↓
3. 不使用 USB Hub
↓
4. Driver
↓
5. USB-to-UART Chip
↓
6. ESP32 Board
最常見問題不是 ESP32 壞掉,而是:
USB Cable
很多 USB 線只能充電。
二十二、第六步:Arduino IDE 選擇 ESP32 Board
ESP32 Board Package 安裝完成後,進入:
Tools
↓
Board
↓
esp32
就會看到很多不同 ESP32 開發板。
例如:
ESP32 Dev Module
ESP32 DevKitC
ESP32-S2
ESP32-S3
ESP32-C3
ESP32-C6
...
不同 Arduino-ESP32 Core 版本所列出的 Board 名稱可能會有所不同,因此應該依實際開發板選擇。
二十三、ESP32-WROOM-32 開發板應該選哪一個 Board?
如果是一般常見的:
ESP32-WROOM-32
通用開發板,而且沒有更精確的原廠 Board Definition,可以先嘗試:
ESP32 Dev Module
但是最正確的方法永遠是:
根據你實際購買的開發板型號選擇。
因為:
ESP32
只是一個晶片家族名稱。
不能因為模組上寫:
ESP32-WROOM-32
就認定整塊開發板的型號一定相同。
二十四、Board 選錯可能發生什麼?
Board 選錯可能造成:
- Upload 失敗
- Flash Size 不正確
- PSRAM 設定錯誤
- USB 設定不正確
- Partition 不正確
- GPIO 定義不符
- Boot Mode 不正確
所以這一步不能忽略。
二十五、第七步:選擇 COM Port
進入:
Tools
↓
Port
選擇剛剛 Device Manager 找到的:
COMx
例如:
COM7
因此目前應該完成:
Board
=
ESP32 Dev Module
Port
=
COM7
Espressif 官方 Arduino 安裝流程同樣要求完成 Board 選擇與 COM Port 選擇之後,再進行 Compile 與 Upload。
二十六、第一支 ESP32 程式:Hello ESP32
現在不急著接感測器。
第一個測試目標只有三件事情:
Compile 成功
Upload 成功
Serial Monitor 成功
建立新的 Sketch。
輸入:
void setup()
{
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println("ESP32 Started!");
}
void loop()
{
Serial.println("Hello ESP32");
delay(1000);
}
二十七、程式解析
首先:
Serial.begin(115200);
設定 Serial 通訊速度為:
115200 baud
ESP32 開發中非常常使用:
115200
Espressif ESP32 官方 Serial Connection 文件所列的預設 Console Baud Rate 也是 115200。
接著:
delay(1000);
等待 1 秒。
讓 ESP32 開機及 Serial Port 穩定之後再輸出訊息。
然後:
Serial.println("ESP32 Started!");
只執行一次。
因為它位於:
setup()
中。
接著:
Serial.println("Hello ESP32");
位於:
loop()
所以會持續執行。
最後:
delay(1000);
每秒輸出一次。
二十八、ESP32 程式執行流程
整體流程:
Power ON
↓
ESP32 Boot
↓
setup()
↓
Serial.begin(115200)
↓
ESP32 Started!
↓
loop()
↓
Hello ESP32
↓
delay 1000 ms
↓
Hello ESP32
↓
delay 1000 ms
↓
...
二十九、第八步:Compile 程式
Arduino IDE 上方有:
✓ Verify
按下:
Verify
Arduino IDE 開始:
Compile
如果沒有錯誤,就會出現類似:
Sketch uses ...
Global variables use ...
代表:
Compile PASS
但是:
Compile 成功不等於 Upload 成功。
Compile 只是證明:
Source Code
↓
Firmware
成功。
還沒有寫入 ESP32。
三十、第九步:Upload 到 ESP32
按 Arduino IDE:
→ Upload
接著流程:
Compile
↓
Connecting
↓
Erase / Write Flash
↓
Verify
↓
Reset
↓
ESP32 Run
正常情況下會看到類似:
Connecting....
Writing at ...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
實際訊息會依 Arduino-ESP32 Core 與 esptool 版本有所不同。
三十一、什麼是 Upload?
Arduino IDE 的 Upload 就是:
PC
↓
USB
↓
USB-to-UART
↓
ESP32
↓
Flash Memory
把我們編譯完成的 Firmware 寫入 ESP32。
寫入完成後:
ESP32 Reset
就開始執行新的程式。
三十二、如果卡在 Connecting……
ESP32 初學者最常看到:
Connecting....
Connecting....
Connecting....
然後:
Failed to connect to ESP32
Espressif 官方 Troubleshooting 文件也將:
Failed to connect to ESP32:
Timed out waiting for packet header
列為常見 Upload 問題。
這通常不是程式內容錯誤,而是:
PC
與
ESP32 Bootloader
沒有成功建立連線。
三十三、ESP32 BOOT 按鈕的用途
很多 ESP32 Development Board 有:
BOOT
以及:
EN
按鈕。
ESP32 進入 UART Download Mode 的基本原理之一,是在 Reset 時讓:
GPIO0 = LOW
Espressif 官方文件也說明,當自動下載模式無法正常工作時,可以使用 BOOT/RESET 操作進入 Download Mode。
三十四、Upload 失敗時如何按 BOOT?
可以嘗試:
按住 BOOT
↓
Arduino IDE 按 Upload
↓
看到 Connecting...
↓
繼續按住 BOOT
↓
開始 Writing...
↓
放開 BOOT
很多第三方 ESP32 Development Board 可以使用這個方法解決 Upload 問題。
Espressif 官方 Troubleshooting 也直接建議在部分無法燒錄的情況下,Upload 時按住 BOOT。
三十五、EN 按鈕是什麼?
EN 通常可以理解成:
Enable / Reset
按下 EN:
ESP32 Reset
重新執行:
setup();
然後再執行:
loop();
所以測試程式時:
按 EN
可以重新啟動 ESP32。
三十六、第十步:開啟 Serial Monitor
Upload 成功之後開啟:
Tools
↓
Serial Monitor
Arduino IDE 2 也可以使用右上角或介面中的 Serial Monitor 功能。
Arduino 官方文件確認 Arduino IDE 2 具備整合式 Serial Monitor。
三十七、設定 Serial Monitor Baud Rate
設定為:
115200
因為程式:
Serial.begin(115200);
所以 Serial Monitor 必須相同。
也就是:
ESP32
115200
│
│ 必須相同
│
Serial Monitor
115200
三十八、正常執行結果
應該可以看到:
ESP32 Started!
Hello ESP32
Hello ESP32
Hello ESP32
Hello ESP32
...
每:
1 second
出現一次。
如果看到這個畫面:
第一階段 ESP32 開發環境就建立成功了。
三十九、為什麼 Serial Monitor 顯示亂碼?
例如看到:
⸮⸮x⸮⸮⸮
最常見原因:
Baud Rate 不相同
例如程式:
Serial.begin(115200);
但 Serial Monitor:
9600
就可能顯示亂碼。
修改為:
115200
即可。
四十、進階驗證:同時測試 Serial 與 LED
只測 Serial 還不夠。
我們再加入 GPIO Output。
材料:
- ESP32
- LED
- 220Ω~330Ω 電阻
假設使用:
GPIO 2
四十一、ESP32 LED 接線
接法:
ESP32 GPIO2
│
↓
220Ω
│
↓
LED Anode (+)
│
LED Cathode (-)
│
↓
GND
簡化:
GPIO2 → 220Ω → LED → GND
四十二、ESP32 第一支完整測試程式
const int LED_PIN = 2;
void setup()
{
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
delay(1000);
Serial.println();
Serial.println("======================");
Serial.println("ESP32 Test Program");
Serial.println("======================");
Serial.println("System Started");
}
void loop()
{
digitalWrite(LED_PIN, HIGH);
Serial.println("LED ON");
delay(1000);
digitalWrite(LED_PIN, LOW);
Serial.println("LED OFF");
delay(1000);
}
四十三、預期動作
LED:
ON
↓
1 second
↓
OFF
↓
1 second
↓
ON
↓
...
Serial Monitor:
======================
ESP32 Test Program
======================
System Started
LED ON
LED OFF
LED ON
LED OFF
...
如果:
Compile PASS
Upload PASS
Serial PASS
GPIO PASS
代表 ESP32 Arduino IDE 開發環境正式完成。
四十四、注意:不要假設所有 ESP32 內建 LED 都是 GPIO2
網路上很多 ESP32 教學直接寫:
#define LED 2
然後使用開發板內建 LED。
但是這不能當成所有 ESP32 開發板共同規格。
不同板子可能:
沒有 Built-in LED
或者:
Built-in LED ≠ GPIO2
因此本教材如果要保證實驗結果,建議使用:
外接 LED
這樣不受不同 ESP32 開發板設計影響。
四十五、常見問題 1:Arduino IDE 看不到 ESP32
症狀:
Tools → Board
裡面沒有 ESP32。
檢查:
Additional Boards Manager URL
是否加入:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
再確認:
Boards Manager
是否已安裝:
esp32 by Espressif Systems
Espressif 目前官方 Stable Board Manager URL 即為上述網址。
四十六、常見問題 2:沒有 COM Port
症狀:
Tools → Port
沒有可用的 ESP32 Port。
按照順序檢查:
USB Cable
↓
USB Port
↓
Device Manager
↓
USB-to-UART Driver
↓
ESP32 Board
Espressif 官方同樣建議先確認 USB Cable、USB Port 與 Driver。
四十七、常見問題 3:ESP32 亮燈但沒有 COM
非常可能是:
Charge Only USB Cable
換一條:
Data USB Cable
Espressif 官方明確列出某些 USB Cable 只有充電功能,沒有 Data Connection。
四十八、常見問題 4:Failed to connect to ESP32
例如:
A fatal error occurred:
Failed to connect to ESP32
依序檢查:
- Board。
- COM Port。
- USB Cable。
- USB Driver。
- BOOT。
- TX/RX 是否接了其他模組。
- 供電是否穩定。
Espressif 官方還特別建議燒錄時避免讓其他電路干擾 TX/RX,並可嘗試直接連接電腦 USB Port 而不是 USB Hub。
四十九、常見問題 5:Upload 時一直 Connecting
嘗試:
按住 BOOT
↓
Upload
↓
Connecting
↓
開始 Writing
↓
放開 BOOT
如果還是不行:
換 USB Cable
換 USB Port
重新確認 COM Port
重新確認 Board
拔除外部模組
五十、常見問題 6:Serial Monitor 沒有資料
檢查:
Serial.begin(115200);
以及:
Serial Monitor = 115200
然後按:
EN
讓 ESP32 Reset。
五十一、常見問題 7:Serial Monitor 顯示亂碼
通常:
程式 Baud Rate
≠
Serial Monitor Baud Rate
例如:
Serial.begin(115200);
則 Serial Monitor 設:
115200
五十二、常見問題 8:COM Port 突然改變
Windows 有時候:
換 USB Port
之後 COM 編號可能改變。
例如:
原本 COM5
換 USB Port 後:
COM8
這不一定是故障。
重新:
Tools → Port
選擇即可。
五十三、常見問題 9:Port Busy
可能看到類似:
Could not open COM Port
Access is denied
Port busy
通常是:
另一個程式
正在占用 Serial Port。
可能包括:
- 另一個 Arduino IDE
- Serial Terminal
- PuTTY
- Python 程式
- PlatformIO
- Serial Debug Tool
關閉其他 Serial 程式再 Upload。
五十四、常見問題 10:程式 Upload 完成但沒有動作
按照:
EN
重新啟動。
再檢查:
GPIO Number
LED Direction
GND
Resistor
Board Type
五十五、ESP32 開發最實用的基本檢查流程
以後任何 ESP32 專題出問題,可以先跑:
Step 1
Power LED 是否亮?
↓
Step 2
Device Manager 是否有 COM?
↓
Step 3
Arduino IDE Board 是否正確?
↓
Step 4
Port 是否正確?
↓
Step 5
Hello ESP32 能否 Upload?
↓
Step 6
Serial Monitor 是否正常?
↓
Step 7
Blink 是否正常?
↓
Step 8
最後才檢查 Sensor / Library
這個流程非常重要。
五十六、為什麼不要一開始就測複雜感測器?
假設第一次 ESP32 測試就接:
ESP32
+
DHT22
+
LCD1602
+
Relay
+
MQTT
+
Wi-Fi
結果程式沒有動作。
你根本不知道問題是:
ESP32
Driver
COM
Board
Library
DHT22
LCD
Relay
Wi-Fi
MQTT
哪一個。
所以工程上比較正確的方法是:
最小系統
↓
逐步加入功能
五十七、ESP32 建議驗證順序
本套教材會按照:
Hello ESP32
↓
Blink
↓
Button
↓
ADC
↓
PWM
↓
Sensor
↓
I2C
↓
SPI
↓
UART
↓
Wi-Fi
↓
Web Server
↓
MQTT
↓
IoT Project
一步一步建立。
五十八、ESP32 與 Arduino UNO 開發流程比較
Arduino UNO:
Arduino IDE
↓
Arduino AVR Board
↓
COM Port
↓
Compile
↓
Upload
ESP32:
Arduino IDE
↓
ESP32 Board Package
↓
ESP32 Board
↓
COM Port
↓
Compile
↓
esptool
↓
Upload
最大差別就是需要先安裝:
Arduino-ESP32
開發平台。
五十九、Arduino ESP32 Core 和 Library 有什麼不同?
這是初學者很容易混淆的概念。
Board Package / Core
例如:
esp32 by Espressif Systems
負責:
編譯 ESP32
上傳 ESP32
ESP32 硬體支援
Library
例如:
DHT Sensor Library
Adafruit BME280
LiquidCrystal_I2C
PubSubClient
負責:
某一個 Sensor
Display
Protocol
Device
因此:
ESP32 Core
≠
ESP32 Library
先安裝 Board Package,才有基本 ESP32 開發能力。
六十、ESP32 的 Sketch 仍然是 .ino
使用 Arduino IDE 開發時,程式仍然是:
xxx.ino
例如:
ESP32_Hello.ino
或:
ESP32_Blink.ino
跟 Arduino UNO 的使用方式相同。
六十一、建議建立 ESP32 專用程式目錄
例如:
Arduino
│
├── Arduino_UNO
│
│
├── ESP32
│ │
│ ├── 01_Hello_ESP32
│ ├── 02_Blink
│ ├── 03_Button
│ ├── 04_ADC
│ ├── 05_PWM
│ ├── 06_I2C
│ ├── 07_SPI
│ ├── 08_UART
│ ├── 09_WiFi
│ └── 10_MQTT
未來教材、程式與商品套件都會比較容易管理。
六十二、第一個 ESP32 系統診斷程式
除了 Hello ESP32,也可以建立一個簡單的 System Test:
void setup()
{
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println("==========================");
Serial.println(" ESP32 SYSTEM TEST");
Serial.println("==========================");
Serial.print("Chip Model: ");
Serial.println(ESP.getChipModel());
Serial.print("Chip Revision: ");
Serial.println(ESP.getChipRevision());
Serial.print("CPU Frequency: ");
Serial.print(ESP.getCpuFreqMHz());
Serial.println(" MHz");
Serial.print("Flash Size: ");
Serial.print(ESP.getFlashChipSize());
Serial.println(" bytes");
Serial.print("Free Heap: ");
Serial.print(ESP.getFreeHeap());
Serial.println(" bytes");
Serial.println("==========================");
}
void loop()
{
Serial.println("ESP32 is running...");
delay(2000);
}
這個程式比單純:
Hello World
更實用。
六十三、預期 Serial Monitor
可能看到類似:
==========================
ESP32 SYSTEM TEST
==========================
Chip Model: ESP32-D0WDQ6
Chip Revision: 1
CPU Frequency: 240 MHz
Flash Size: 4194304 bytes
Free Heap: 3xxxxx bytes
==========================
ESP32 is running...
ESP32 is running...
實際資訊會依:
ESP32 型號
Board
Flash
Arduino Core
不同而改變。
因此不要要求每一塊 ESP32 都顯示完全相同數值。
六十四、這個測試程式有什麼價值?
未來收到一塊不知道規格的 ESP32 板子時,可以先執行:
ESP32 SYSTEM TEST
檢查:
- Chip Model
- Chip Revision
- CPU Frequency
- Flash Size
- Free Heap
比單純猜測板子規格更可靠。
六十五、ESP32 開發環境完成判定
如果以下全部 PASS:
| 測試 | 狀態 |
|---|---|
| Arduino IDE 啟動 | PASS |
| ESP32 Board Package | PASS |
| USB Driver | PASS |
| COM Port | PASS |
| Board Selection | PASS |
| Compile | PASS |
| Upload | PASS |
| Serial Monitor | PASS |
| Hello ESP32 | PASS |
| LED Blink | PASS |
就可以確定:
ESP32 Arduino 開發環境完成。
六十六、本章最重要的故障排除表
| 問題 | 優先檢查 |
|---|---|
| ESP32 不亮 | USB / 電源 |
| 有亮但無 COM | USB Cable / Driver |
| 沒有 ESP32 Board | Board Package |
| Compile Error | Board / Code / Core |
| Upload Error | Port / BOOT / USB |
| Connecting… | BOOT / USB / Port |
| Serial 無資料 | Baud / Port / Reset |
| Serial 亂碼 | Baud Rate |
| LED 不亮 | GPIO / 接線 / LED |
| Port Busy | 其他 Serial 程式 |
六十七、FAQ:ESP32 Arduino IDE 常見問題
Q1:Arduino IDE 可以直接開發 ESP32 嗎?
可以,但需要先安裝 Espressif 的 Arduino-ESP32 Board Package。
Espressif 官方目前建議透過 Arduino IDE Boards Manager 安裝 ESP32 平台。
Q2:ESP32 Boards Manager URL 是什麼?
官方 Stable Release:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
截至本章撰寫時,Espressif 官方 Installation 文件仍列出此 Stable Release URL。
Q3:我要安裝 Stable 還是 Development?
ESP32 初學與正式教材建議:
Stable
Development 適合需要測試尚未正式發布功能的開發者。
Q4:ESP32-WROOM-32 要選哪個 Board?
如果是一般 Generic ESP32-WROOM-32 Development Board,可以先嘗試:
ESP32 Dev Module
但是最好還是確認實際開發板型號。
Q5:為什麼 ESP32 有亮燈卻沒有 COM?
第一個應該檢查:
USB Cable
因為部分 USB Cable 只有供電功能。
Espressif 官方 Troubleshooting 也將 Charge-only USB Cable 列為 Upload 失敗的重要檢查項目。
Q6:ESP32 一定要安裝 USB Driver 嗎?
不一定。
許多 Windows 系統會自動安裝。
如果沒有自動辨識,就要先確認 ESP32 開發板使用:
CP210x
CH340
FTDI
CH9102
...
哪一類 USB-to-UART Bridge。
Espressif 官方建議依開發板實際使用的 USB-to-UART Bridge 安裝對應 Driver。
Q7:為什麼 Upload 卡在 Connecting?
ESP32 可能沒有正確進入 Download Mode。
可以嘗試:
按住 BOOT
→ Upload
→ 開始寫入後放開
這也是 Espressif 官方 Troubleshooting 建議的方法之一。
Q8:ESP32 Serial Monitor 要選多少 Baud?
本套教材主要使用:
115200
所以程式:
Serial.begin(115200);
Serial Monitor 也選:
115200
Espressif ESP32 文件中的預設 Console Baud Rate 也是 115200。
Q9:ESP32 程式副檔名也是 .ino 嗎?
如果使用 Arduino IDE:
是。
例如:
ESP32_Blink.ino
Q10:學 ESP32 一定要先學 Arduino UNO 嗎?
不是必要條件。
但是有 Arduino UNO 基礎之後,ESP32 的:
setup()
loop()
pinMode()
digitalWrite()
digitalRead()
Serial
會非常容易理解。
六十八、本章實作成果
完成本章之後,我們已經建立:
Windows PC
│
↓
Arduino IDE
│
↓
Arduino-ESP32 Core
│
↓
ESP32 Dev Module
│
↓
COM Port
│
↓
Compile
│
↓
Upload
│
↓
ESP32
而且完成:
實作 1
Hello ESP32
實作 2
Serial Monitor
實作 3
LED Blink
實作 4
ESP32 System Information
這代表從下一章開始,就不用再處理基本開發環境問題,而可以真正進入:
ESP32 GPIO 程式設計。
六十九、本章總結
ESP32 可以使用 Arduino IDE 開發,這也是 Arduino 使用者進入 ESP32 與 IoT 世界最快的方法之一。
完整環境建立流程是:
Arduino IDE
↓
Additional Boards Manager URL
↓
ESP32 Board Package
↓
USB-to-UART Driver
↓
USB Data Cable
↓
COM Port
↓
Board
↓
Compile
↓
Upload
↓
Serial Monitor
本章最重要的 5 個觀念:
第一:Arduino IDE 安裝完成,不代表 ESP32 Board Package 已經安裝。
必須另外安裝:
esp32 by Espressif Systems
第二:ESP32 有亮燈,不代表 USB Data Connection 正常。
一定要確認:
COM Port
第三:ESP32 開發板的 USB-to-UART 晶片不一定相同。
可能是:
CP210x
CH340
FTDI
CH9102
...
第四:Upload 失敗時,BOOT 是非常重要的排錯工具。
如果看到:
Connecting...
一直失敗,可以嘗試按住 BOOT Upload。
第五:複雜專題之前,永遠先完成最小系統驗證。
也就是:
Hello
↓
Serial
↓
Blink
↓
Sensor
↓
Network
這種方式可以大幅降低 ESP32 專題除錯的難度。
七十、下一章
下一章將正式進入 ESP32 GPIO:
第 3 章 ESP32 GPIO 完整教學:Pinout、Digital Output、LED 閃爍與流水燈
將會完整介紹:
ESP32 Pinout
↓
GPIO
↓
Input / Output
↓
Safe GPIO
↓
Strapping Pin
↓
Input-only Pin
↓
pinMode()
↓
digitalWrite()
↓
LED
↓
Blink
↓
多顆 LED
↓
流水燈
這一章非常重要,因為 ESP32 的 GPIO 使用方式雖然和 Arduino UNO 很像,但是:
ESP32 GPIO
≠
Arduino UNO Pin
特別是:
- Strapping Pin
- Input-only GPIO
- Flash 相關腳位
- 開機狀態
- 3.3V Logic
都必須重新建立正確觀念。