在進行 ESP32-S3 開發 時,「序列埠通信(Serial Communication)」是最基礎也最重要的核心功能。不論是初學者入門練習,還是進階的物聯網專案開發,透過序列埠,我們都能實現查看程式執行狀態、顯示感測器數據、接收電腦輸入指令以及進行程式除錯(Debug)。
本篇教學將帶你使用 Arduino IDE,快速掌握 ESP32-S3 的 Serial 序列埠通信與 UART 技術,並解析 ESP32-S3 獨特的原生 USB CDC 設定技巧!
一、 什麼是序列埠通信(Serial / UART)?原理與常見用途
序列埠通信通常是指 通用異步收發器(UART, Universal Asynchronous Receiver-Transmitter),是電子電路與微控制器(MCU)中最常見的非同步通訊協定。
1. UART 通訊原理:TX 與 RX 的橋樑
UART 主要透過兩條信號線來傳輸數據:
-
TX 線(Transmit):負責發送數據。
-
RX 線(Receive):負責接收數據。
在兩台設備進行 UART 序列埠通訊時,線路必須採用交叉連接方式:即設備 A 的 TX 接到設備 B 的 RX,而設備 A 的 RX 接到設備 B 的 TX,雙方才能正確收發訊號。

展示兩台設備進行 UART 序列埠通訊時,設備 A 的 TX 必須連接設備 B 的 RX、RX 必須連接 TX 的交叉接線原理。

說明 ESP32-S3 開發板如何透過內建的 USB 轉串口晶片與 Type-C 線路與電腦進行序列埠通訊。
2. 什麼是鮑率(Baud Rate)?
在序列埠通信開始前,通訊雙方的鮑率(Baud Rate)設定必須完全一致。鮑率代表每秒傳輸的位元數(Bits per second),只有在相同波特率下,接收端才能精確解析數據。在 ESP32-S3 開發中,最常用的標準鮑率為 9600 與 115200(本教學範例一律使用 115200)。
3. ESP32-S3 的 USB 轉串口與原生 USB 功能
現代的 ESP32-S3 開發板 晶片內建了原生 USB CDC 介面與 USB 轉串口功能,因此我們可以直接透過普通的 Type-C 數據線連接電腦,實現高速數據傳輸、程式燒錄與 Serial 監控。
ESP32-S3 序列埠的 5 大核心用途:
二、 開發前準備與推薦硬體
想順利完成本次的 ESP32-S3 序列埠通訊實驗,請先備妥以下工具:
-
ESP32-S3 開發板(推薦選擇具備大容量 PSRAM 與 Flash 的版本)。
-
USB Type-C 數據傳輸線(請確保線材具備資料傳輸功能,而非純充電線)。
-
電腦(已安裝 Arduino IDE 並配置好 ESP32 開發環境)。
高效能開發板推薦: ESP32-S3 開發板 N16R8 已焊排針 (16MB Flash / 8MB PSRAM) | 米羅科技官方賣場
三、 Arduino IDE 環境配置與 USB CDC On Boot 重要設定
在上傳程式碼之前,請務必確認你的 Arduino IDE 工具設定正確。ESP32-S3 開發板因為擁有原生 USB 介面,如果設定錯誤,將導致序列埠監控視窗完全抓不到文字輸出!
請開啟 Arduino IDE,點選上方選單 【工具 (Tools)】,進行以下關鍵配置:
-
開發板 (Board):選擇
ESP32S3 Dev Module -
USB CDC On Boot:設定為
Enabled(關鍵設定) -
連接埠 (Port):選擇 ESP32-S3 連接的正確 COM 埠
米羅小學堂(關鍵除錯備註): 如果你使用的是開發板上標示為 「USB」 的原生 Type-C 接口連接電腦,請務必將
USB CDC On Boot設定為Enabled,這樣序列埠監控視窗(Serial Monitor)才能正確印出Serial.print()的訊息。 反之,若是使用外接晶片(如 CH343 / CH340)且連接至標示為COM/UART的接口,則須將此選項設為Disabled。
四、 如何開啟與使用 Arduino IDE 序列埠監控視窗?
當 ESP32-S3 透過 USB 線連接至電腦後,作業系統會將其識別為一個虛擬的 COM 連接埠(例如:COM3 或 COM5)。
-
確認 Port:請至 【工具】 -> 【序列埠 (Port)】 勾選正確的 COM 號碼。
-
開啟監控視窗:點擊 Arduino IDE 右上角的 「序列埠監控器 (Serial Monitor)」 圖示(或按下快捷鍵
Ctrl + Shift + M)。 -
調整鮑率:將序列埠監控視窗右下角的鮑率選擇為與程式中設定相同的
115200 baud。

▼ 序列埠監控視窗界面如下。 如果打不開,請確保ESP32已經連接到電腦,在菜單欄“工具”中選擇正確的序列埠。

五、 實作範例程式碼(包含 3 個基礎與進階範例)
完成環境配置後,接下來跟著米羅一起透過 3 個由淺入深的經典範例,實際測試 ESP32-S3 的通訊實力吧!請將以下程式碼複製到 Arduino IDE 中,並點擊「上傳」燒錄。
範例 1:ESP32-S3 Serial 每秒定時輸出訊息
最基礎的測試程式,用來確認開發板與電腦的連線是否通暢。
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Hello ESP32-S3");
delay(1000);
}
序列監控視窗預期效果:
Hello ESP32-S3
Hello ESP32-S3
Hello ESP32-S3
範例 2:ESP32-S3 Serial 變數資料輸出(常用於除錯)
展示如何將程式中的變數數值即時列印出來,這是日後排除程式 Bug 的必學技巧。
int count = 0;
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.print("Count = ");
Serial.println(count);
count++;
delay(1000);
}
序列監控視窗預期效果:
Count = 0
Count = 1
Count = 2
範例 3:ESP32-S3 Serial 雙向通訊:接收電腦輸入資料
這個範例展示了「雙向通訊」,ESP32-S3 會等待並讀取使用者從電腦鍵盤輸入的指令或文字。
String data;
void setup() {
Serial.begin(115200);
Serial.println("請輸入文字:");
}
void loop() {
if (Serial.available()) {
data = Serial.readStringUntil('\n');
Serial.print("你輸入的是:");
Serial.println(data);
}
}
六、Arduino Serial 常用核心函式庫統整
在編寫物聯網專案時,你常會用到以下 Serial 語法,建議可以加進你的常用筆記:
七、ESP32-S3 序列埠常見問題排除(FAQ)
Q1:在 Arduino IDE 找不到 COM Port(連接埠)怎麼辦?
-
排查 1:請確認使用的 Type-C 線是否具有「數據傳輸」功能,有些便宜的線材僅供充電。
-
排查 2:檢查電腦是否已安裝對應的 USB 轉序列埠驅動程式(如 CH340 或 CP210x,視板子晶片而定)。
-
排查 3:請確認開發板的
USB CDC On Boot參數已開啟。
Q2:開啟了序列埠監控視窗,卻完全沒有輸出內容?
-
解答:請再次確認您的 Arduino IDE 設定中,
USB CDC On Boot已經切換為Enabled,並重新燒錄一次程式。另外,可以按壓開發板上的「EN/RST」重置按鈕讓程式重新跑一次。
Q3:序列埠監控視窗裡顯示一堆看不懂的亂碼?
-
解答:這通常是因為「鮑率不匹配」引起的。請確認程式碼中
Serial.begin(115200);寫的分華與監控視窗右下角下拉選單選擇的115200 baud數字完全一致。
延伸閱讀與推薦課程
- 上一篇教學:【ESP32-S3 教學】第一篇:最強 AI IoT 開發神器!ESP32-S3 N16R8 環境配置與點燈範例
- 下一篇推薦:【ESP32-S3 教學】ESP32-S3 + ILI9341 2.8吋觸控螢幕製作打地鼠遊戲|Arduino IDE 從接線、觸控校正到遊戲實作完整教學
- 返回教學列表:米羅科技文創學院教學部落格
- 教學總索引:ESP32 AIoT 開發指南 – 快速索引目錄