一、目標
本指南用於建立 ESP32-CAM 的 Arduino 開發環境,後續可用手機連到 ESP32-CAM 熱點,透過網頁控制兩顆伺服馬達與一個無刷馬達 ESC。
| 項目 | 建議設定 |
|---|---|
| Arduino IDE | Arduino IDE 2.x |
| ESP32 開發板套件 | esp32 by Espressif Systems |
| ESP32-CAM 開發板 | AI Thinker ESP32-CAM |
| Servo 函式庫 | ESP32Servo |
| 控制方式 | ESP32-CAM 建立 Wi-Fi 熱點,手機瀏覽器控制 |
二、下載並安裝 Arduino IDE
1. 下載 Arduino IDE
請到 Arduino 官方網站下載 Arduino IDE:
https://www.arduino.cc/en/software
Windows 使用者建議下載:
Windows Installer
2. 安裝 Arduino IDE
下載後執行安裝程式,基本上依照以下流程安裝即可:
Next → Install → Finish
第一次開啟 Arduino IDE 時,如果 Windows 防火牆詢問是否允許網路存取,建議選擇允許。Arduino IDE 之後需要下載開發板套件與函式庫。
三、安裝 ESP32 開發板套件
ESP32-CAM 並不是 Arduino 原廠開發板,因此 Arduino IDE 一開始不會直接支援,必須先安裝 Espressif 提供的 ESP32 board package。
1. 開啟偏好設定
File → Preferences
中文介面可能顯示為:
檔案 → 偏好設定
2. 加入 ESP32 Board Manager URL
找到 Additional Boards Manager URLs 欄位,加入下列網址:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
如果欄位內已經有其他網址,可以用逗號分隔。
3. 開啟 Boards Manager
Tools → Board → Boards Manager
中文介面可能是:
工具 → 開發板 → 開發板管理員
4. 搜尋並安裝 ESP32
在 Boards Manager 搜尋:
esp32
找到 esp32 by Espressif Systems,按下 Install。安裝完成後,建議關閉並重新開啟 Arduino IDE。
四、選擇 ESP32-CAM 開發板
重新開啟 Arduino IDE 後,選擇:
Tools → Board → esp32 → AI Thinker ESP32-CAM
中文介面可能是:
工具 → 開發板 → esp32 → AI Thinker ESP32-CAM
若使用的是常見的 ESP32-CAM 模組,例如具有 OV2640 攝影機、microSD 卡槽與 AI Thinker 模組,通常開發板請選擇 AI Thinker ESP32-CAM。
五、建議的開發板設定
| 項目 | 建議值 |
|---|---|
| Board | AI Thinker ESP32-CAM |
| Upload Speed | 115200 |
| CPU Frequency | 240 MHz |
| Flash Frequency | 40 MHz |
| Flash Mode | QIO 或 DIO,通常使用預設值即可 |
| Partition Scheme | Huge APP 或預設值皆可 |
| PSRAM | Enabled |
PSRAM 為何建議 Enabled?
如果只是控制 Servo 與 ESC,不一定需要 PSRAM。但是 ESP32-CAM 之後若要加入攝影串流,PSRAM 會非常重要,因此建議一開始就設定為 PSRAM: Enabled。
Partition Scheme 如何選擇?
如果只是做手機網頁控制 Servo 與 ESC,可以使用預設值。若之後要加入攝影串流,建議選擇:
Huge APP (3MB No OTA/1MB SPIFFS)
六、安裝 Servo 函式庫
ESP32 控制 Servo 建議安裝:
ESP32Servo
安裝方法
Tools → Manage Libraries
或點選左側的 Library Manager,搜尋 ESP32Servo,找到後按下 Install。
七、本專案需要的函式庫
| 函式庫 | 是否需要額外安裝 | 用途 |
|---|---|---|
WiFi.h | 不需要 | ESP32 內建,負責 Wi-Fi 連線 |
WebServer.h | 不需要 | ESP32 內建,負責網頁伺服器 |
ESP32Servo.h | 需要 | 控制 Servo 與 ESC PWM |
也就是說,本專案只需要安裝 esp32 by Espressif Systems 與 ESP32Servo。
八、ESP32-CAM 腳位介紹
本專案使用常見的 AI Thinker ESP32-CAM。ESP32-CAM 的外接腳位數量比一般 ESP32 DevKit 少,因此要注意哪些腳位已被攝影機、microSD 卡、UART 燒錄功能或開機模式占用。
1. 電源腳位
| 腳位 | 說明 |
|---|---|
| 5V | ESP32-CAM 主要供電輸入。建議使用穩定的 5V 電源供電。 |
| 3.3V / 3V3 | 3.3V 電源腳。通常不建議用來供應 Servo 或其他大電流負載。 |
| GND | 接地。USB-TTL、ESP32-CAM、Servo、ESC 必須共地。 |
2. UART 燒錄腳位
| ESP32-CAM 腳位 | 功能 | 說明 |
|---|---|---|
| GPIO1 / U0T / TX | UART0 TX | ESP32-CAM 傳送資料,接 USB-TTL 的 RX。 |
| GPIO3 / U0R / RX | UART0 RX | ESP32-CAM 接收資料,接 USB-TTL 的 TX。 |
| GPIO0 | Boot Mode | 上傳程式時接 GND,讓 ESP32-CAM 進入燒錄模式。 |
| GND | 接地 | 必須與 USB-TTL 的 GND 相接。 |
| 5V | 供電 | 可由 USB-TTL 的 5V 供電,但電流不足時建議改用外部 5V。 |
3. 可用 GPIO 腳位
| 腳位 | 常見功能 | 使用注意事項 |
|---|---|---|
| GPIO4 | HS2_DATA1 / LED | 常連接板上閃光 LED,不建議控制 Servo。 |
| GPIO2 | HS2_DATA0 | microSD 相關腳位,不使用 SD 卡時可作為 GPIO。 |
| GPIO14 | HS2_CLK | microSD 相關腳位,不使用 SD 卡時可作為 Servo PWM。 |
| GPIO15 | HS2_CMD | microSD 相關腳位,不使用 SD 卡時可作為 ESC PWM。 |
| GPIO13 | HS2_DATA3 | microSD 相關腳位,不使用 SD 卡時可作為 Servo PWM。 |
| GPIO12 | HS2_DATA2 | 開機狀態敏感腳位,初學者建議避免使用。 |
| GPIO16 | U2RXD | 可作為一般 GPIO 使用,但若專案較複雜需再確認是否與其他功能衝突。 |
| GPIO0 | Boot / Camera XCLK | 燒錄時使用,也常與攝影機時脈有關,不建議作為 Servo 腳位。 |
| GPIO1 / GPIO3 | UART0 | 上傳程式與 Serial Monitor 使用,不建議作為 Servo 腳位。 |
4. 本專案建議腳位分配
| 裝置 | ESP32-CAM 腳位 | 說明 |
|---|---|---|
| 方向舵 Servo | GPIO13 | PWM 輸出,控制方向舵。 |
| 升降舵 Servo | GPIO14 | PWM 輸出,控制升降舵。 |
| ESC 油門訊號 | GPIO15 | PWM 輸出,控制無刷馬達油門。 |
| GND | GND | Servo、ESC、ESP32-CAM 必須共地。 |
| 5V | 外部 5V / UBEC | Servo 不建議直接由 ESP32-CAM 供電。 |
九、使用 USB-TTL 上傳 ESP32-CAM 程式
ESP32-CAM 通常沒有 USB 接口,因此無法像 Arduino UNO 或 ESP32 DevKit 一樣直接用 USB 線上傳程式。必須使用 USB-to-TTL 模組,也常稱為 USB-TTL、FTDI、CH340、CP2102 或 USB Serial 模組。
1. USB-TTL 與 ESP32-CAM 接線
| USB-TTL 模組 | ESP32-CAM | 說明 |
|---|---|---|
| 5V / VCC | 5V | 提供 ESP32-CAM 電源。不可接到 3.3V 腳位。 |
| GND | GND | 接地,必須連接。 |
| TX | U0R / GPIO3 / RX | USB-TTL 傳送,接 ESP32-CAM 接收。 |
| RX | U0T / GPIO1 / TX | USB-TTL 接收,接 ESP32-CAM 傳送。 |
| GND | GPIO0 | 上傳程式時暫時連接,使 ESP32-CAM 進入燒錄模式。 |
2. 進入燒錄模式
- 將 USB-TTL 的 GND 接到 ESP32-CAM 的 GND。
- 將 USB-TTL 的 5V 接到 ESP32-CAM 的 5V。
- 將 USB-TTL 的 TX 接到 ESP32-CAM 的 U0R / RX。
- 將 USB-TTL 的 RX 接到 ESP32-CAM 的 U0T / TX。
- 將 ESP32-CAM 的 GPIO0 接到 GND。
- 按一下 ESP32-CAM 的 RST 按鈕,或重新插拔 USB 電源。
3. Arduino IDE 上傳設定
| 項目 | 設定 |
|---|---|
| Board | AI Thinker ESP32-CAM |
| Upload Speed | 115200 |
| CPU Frequency | 240 MHz |
| Flash Frequency | 40 MHz |
| Partition Scheme | Huge APP 或預設值 |
| PSRAM | Enabled |
| Port | 選擇對應的 COM Port |
4. 上傳程式流程
- 確認 GPIO0 已經接到 GND。
- 在 Arduino IDE 選擇正確的 Board 與 Port。
- 按下 Arduino IDE 左上角的 Upload。
- 若畫面停在
Connecting...,請按一下 ESP32-CAM 的 RST 按鈕。 - 等待程式上傳完成。
- 上傳完成後,拔掉 GPIO0 與 GND 之間的接線。
- 再按一次 RST。
- ESP32-CAM 會從 Flash 開機,開始執行剛剛上傳的程式。
正常執行程式時:GPIO0 不要接 GND
十、測試 Arduino IDE 是否設定成功
可以先上傳以下測試程式:
#include <WiFi.h>
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("ESP32-CAM is ready.");
}
void loop() {
Serial.println("Running...");
delay(1000);
}
上傳完成後,拔掉 GPIO0 → GND,按下 reset,開啟 Serial Monitor,並將鮑率設定為 115200。
若看到以下訊息,代表 Arduino IDE、ESP32 開發板套件與 Port 設定都正常。
ESP32-CAM is ready.
Running...
Running...
Running...
十一、常見錯誤排除
找不到 AI Thinker ESP32-CAM
請確認已經安裝 esp32 by Espressif Systems。若沒有安裝 ESP32 board package,Arduino IDE 中不會出現 AI Thinker ESP32-CAM。
找不到 COM Port
- USB 線只有充電功能。
- USB-to-TTL 驅動未安裝。
- USB-to-TTL 模組故障。
- TX/RX 接線錯誤。
一直顯示 Connecting...
- 確認 GPIO0 已接 GND。
- 按下 Upload 後按一下 reset。
- 確認 TX/RX 沒有接反。
- 確認 GND 有共地。
上傳成功,但程式不執行
通常是忘記拔掉 GPIO0 → GND。上傳完成後一定要拔掉 GPIO0-GND,然後按 reset。
十二、RC 飛機控制專案建議設定總表
| 項目 | 建議設定 |
|---|---|
| Arduino IDE | Arduino IDE 2.x |
| Board package | esp32 by Espressif Systems |
| Board | AI Thinker ESP32-CAM |
| Library | ESP32Servo |
| Upload Speed | 115200 |
| PSRAM | Enabled |
| Serial Monitor | 115200 |
| Wi-Fi 模式 | ESP32-CAM SoftAP 熱點 |
| 手機連線 | 手機連 ESP32-CAM Wi-Fi 後開啟 192.168.4.1 |