本教材說明如何使用 ESP32 主控板與 ESP32-CAM 組成可遙控的全向移動影像小車,並建構wifi環境,提供網頁控制及影像監看。
- 專案結構
- 硬體需求與接線重點
- 網路架構
- 功能區塊與常見問題
- 環境安裝與程式上傳
- 操作步驟
- 常見問題快速排查
esp32/ # 主控板:控制車體與 Web 控制頁
esp32.ino
omni.cpp
omni.h
web.h
esp32cam/ # 影像模組:提供 MJPEG 串流
esp32cam.ino
- ESP32 開發板(主控)
- ESP32‑CAM(AI‑Thinker 類型)
- 三顆Omni輪馬達 + L298N驅動板
- 伺服機(鏡頭左右旋轉)
接線提醒:
- 伺服機:PWM 腳位為
GPIO26 - 馬達方向:若方向相反,請交換 IN1/IN2的腳位定義 或 在程式中調整正負號
- 主控 ESP32:啟動 AP,IP 固定
192.168.4.1 - ESP32‑CAM:連上 AP,IP 固定
192.168.4.20 - Web 控制頁:手機/電腦連 AP 後,瀏覽
http://192.168.4.1/ - 影像串流:控制頁內使用
http://192.168.4.20/stream(僅有影像畫面)
- Wi‑Fi AP:建立熱點供手機連線
- 搜不到 SSID → 確認是否上電、AP 是否已啟動
- WebServer/WS:提供控制頁與即時控制
- 按鈕無反應 → 檢查 WebSocket 連線與埠號 81
- Omni3 全向輪控制:接收指令轉成三輪 PWM
- 輪子旋轉方向錯 → 交換 IN1/IN2
- 前進方向錯誤 → 交換輪子
- 伺服鏡頭:按鍵控制鏡頭左/右旋
- 伺服不動 → 檢查 5V 供電與 PWM 腳位是否鬆脫
- 逆運動學:將 Vx/Vy/W 轉成各輪速度
- PWM 輸出:輸出方向與速度
- 控制頁 HTML/JS:按鍵控制與影像顯示
- 問題:影像黑屏 → 確認相機 IP
- 問題:按鍵無反應 → 確認 WebSocket 連線
- 相機初始化:設定解析度與品質
- 問題:初始化失敗 → 檢查相機是否損壞或斷線或是供電異常
- MJPEG 串流:提供
/stream- 問題:卡頓 → 降低解析度或提高
jpeg_quality值
- 問題:卡頓 → 降低解析度或提高
==環境架設高度依賴網路環境,可視情況於課堂前先行下載與安裝。==
- 前往官網:https://www.arduino.cc/en/software
- 下載 Arduino IDE 2.x(Windows / macOS / Linux 均有)
- 依安裝精靈完成安裝並開啟 IDE
-
開啟 Arduino IDE → 上方選單 File(檔案)→ Preferences(偏好設定)
-
在「Additional boards manager URLs」欄位貼入:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json -
點選 OK
-
上方選單 Tools(工具)→ Board(開發板)→ Boards Manager(開發板管理員)
-
搜尋
esp32,找到 esp32 by Espressif Systems → 點 Install(約需數分鐘)
開啟 Tools → Manage Libraries(函式庫管理員),逐一搜尋並安裝:
| 搜尋關鍵字 | 選擇套件 |
|---|---|
WebSockets |
WebSockets by Markus Sattler |
ESP32Servo |
ESP32Servo by Kevin Harrington |
WiFi.h與WebServer.h已包含在 ESP32 核心內,不需另外安裝。
-
用 USB 線將 ESP32 開發板 接上電腦
-
Arduino IDE 上方選單 Tools → Board → 選擇 ESP32 Dev Module
-
Tools → Port → 選擇對應的 COM 埠(若不確定可插拔 USB 比對)
-
開啟
esp32/esp32.ino -
點選上方 →(Upload) 按鈕,等待「Done uploading」訊息
-
開啟 Tools → Serial Monitor(序列埠監控),鮑率設
115200,確認出現:AP activate! IP = 192.168.4.1
-
先插上擴展版,再用 USB 線將 ESP32 CAM開發板 接上電腦
-
Arduino IDE Tools → Board → 選擇 AI Thinker ESP32-CAM
-
Tools → Port → 選對應 COM 埠
-
開啟
esp32cam/esp32cam.ino -
點選 Upload,等待完成
-
Serial Monitor 確認出現:
IP = 192.168.4.20
- 不確定 COM 埠:使用裝置管理員查看,將裝置重新插拔確認
- 以 Arduino IDE 上傳
esp32/esp32.ino到主控板 - 以 Arduino IDE 上傳
esp32cam/esp32cam.ino到 ESP32‑CAM - 放入電池 ==(請務必確定電池方向是否正確)==
- 手機連線到 Wi‑Fi SSID(預設
CAR_1,密碼12345678)可將不同車輛命名為CAR_2、CAR_3等 - 開啟瀏覽器輸入
http://192.168.4.1/ - 勾選「啟動串流」即可看到影像
- 使用按鍵控制車體與鏡頭
- 無法連上 AP:確認主控板已上電、密碼至少 8 碼
- 影像不顯示:確認 ESP32‑CAM 連線成功且 IP 為
192.168.4.20 - 控制無反應:確認 WebSocket 連線成功(瀏覽器 console 有 WS connected)
- 車輪方向相反:交換 IN1/IN2 腳位定義或調整程式正負號
