第2章 ESP32 Arduino IDE 安裝教學:Board Manager、USB Driver 與 COM Port

發布日期: |更新日期:
文章主圖:第2章 ESP32 Arduino IDE 安裝教學:Board Manager、USB Driver 與 COM Port

上一章我們已經認識:

  • 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:

ESP32 Arduino 開發環境完成判定
測試 狀態
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 Arduino IDE 常見故障排除表
問題 優先檢查
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

都必須重新建立正確觀念。

下一步學習

不要停在這一篇,接著把內容做成自己的實作

目前主題:Arduino。從完整學習路線、免費資源、會員下載,再接到實作所需材料。

同系列:ESP32 |  已是會員?直接前往 Getfile
相關資源與會員文章下載
文章可免費閱讀;下載完整 DOCX 或 PDF 需登入免費基本會員。
查看相關資源 會員免費下載 DOCX 會員免費 PDF/列印

← 回文章列表