ESP32-S3

【ESP32-S3 教學】第二篇:開始使用 Arduino IDE 編寫程式-Serial 序列埠通信與 UART 入門實作

一、ESP32-S3 序列埠通信(Serial)實驗說明

在進行 ESP32-S3 開發時,「序列埠通信(Serial Communication)」是最基礎也最重要的核心功能之一。不論是新手入門還是進階專案開發,透過序列埠,我們都能實現以下關鍵應用:

  • 查看程式執行狀態與系統邏輯

  • 顯示感測器數據資料(如溫度、濕度、距離等)

  • 接收電腦端輸入指令進行互動控制

  • 程式除錯(Debug)與即時追蹤變數

  • 與其他硬體裝置進行 UART 通訊

本篇教學將帶你使用 Arduino IDE,快速學會 ESP32-S3 的 Serial 序列埠通信技術。本範例可完美搭配米羅科技的 ESP32-S3 系列開發板。

 

二、什麼是序列埠通信(Serial / UART)?原理與常見用途

序列埠通信一般是指通用異步收發器(UART, Universal Asynchronous Receiver-Transmitter),是電子電路與微控制器(MCU)中最常見的非同步通訊方式。

1. UART 通訊原理:TX 與 RX 的橋樑

UART 主要是透過兩條信號線來傳輸數據:

  • TX 線(Transmit):負責發送數據。

  • RX 線(Receive):負責接收數據。

在兩台設備進行序列埠通訊連接時,必須採取「交叉連接」,即設備 A 的 TX 接到設備 B 的 RX,而設備 A 的 RX 接到設備 B 的 TX,如此才能正常收發訊號。

在序列埠通信開始之前,雙方的鮑率(Baud Rate)必須相同。 只有使用相同的鮑率,設備之間的通信才能進行。 常用的鮑率是 9600 和 115200。

▼ ESP32上的序列埠串口集成了USB 轉串口,因此它可以通過 USB 線與電腦通信。

2. 什麼是鮑率(Baud Rate)?

在序列埠通信開始之前,通訊雙方的鮑率(Baud Rate)設定必須完全一致。鮑率代表每秒傳輸的位元數,只有在相同波特率下,設備之間才能正確解析數據。在 ESP32-S3 開發中,最常用的標準鮑率為 9600115200(本教學範例使用 115200)。

3. ESP32-S3 的 USB 轉串口功能

現代的 ESP32-S3 開發板晶片通常集成了 USB 轉串口(USB-to-Serial)功能,因此我們可以直接透過一條 Type-C USB 數據線連接電腦,進行資料傳輸與燒錄。

💡 ESP32-S3 序列埠的 5 大核心用途:

核心功能實務應用說明
Serial Monitor在 Arduino IDE 的「序列埠監控視窗」即時查看輸出訊息
Debug 除錯輸出變數數值、追蹤程式碼執行流程與邏輯漏洞
感測器資料輸出將讀取到的溫濕度、光線、距離等類比/數位資料圖像化或文字化
接收使用者輸入從電腦鍵盤發送控制指令給 ESP32-S3 開發板
外接 UART 通訊與 Arduino、GPS 模組、藍牙模組、PLC 或其他工業設備連接

 

三、準備工具與推薦硬體

想順利完成本次的 ESP32-S3 序列埠通訊實驗,你需要準備以下硬體工具:

🛠️ 硬體需求:

  1. ESP32-S3 開發板(推薦高配置版本)

  2. USB Type-C 數據傳輸線(請確保具備數據傳輸功能,非純充電線)

  3. 電腦(已安裝 Arduino IDE)

🛒 高效能開發板推薦: ESP32-S3 開發板 N16R8 已焊排針 (16MB Flash / 8MB PSRAM) | 米羅科技官方賣場

ESP32 S3 開發板 N16R8 已焊排針 16MB Flash 8MB PSRAM | ESP32 Type C

 

四、Arduino IDE 環境配置與 ESP32-S3 USB CDC 重要設定

在開始上傳程式碼之前,請務必確認你的 Arduino IDE 開發環境設定正確,這會直接影響到序列埠能否順利列印出文字。

請打開 Arduino IDE,在上方選單點選「工具(Tools)」,並依照以下參數進行配置:

  • Board(開發板):選擇 ESP32S3 Dev Module

  • USB CDC On Boot:設定為 Enabled 🌟(此點極為重要)

📢 米羅小學堂(關鍵備註): 如果你是使用開發板上標示為**「USB」**的原生 Type-C 接口連接電腦,務必將 USB CDC On Boot 啟用(Enabled),這樣一來,序列埠監控視窗(Serial Monitor)才能正確顯示 Serial.print() 的輸出訊息。 反之,若是使用標示為 COM/UART 的外接晶片接口,則需將此選項設定為USB CDC On Boot 設定為 Disabled

 

五、如何開啟與使用 Arduino IDE 序列埠監控視窗?

當 ESP32-S3 透過 USB 線連接至電腦後,作業系統會將其識別為一個虛擬的 COM 連接埠(例如:COM3 或 COM5)

  1. 確認在「工具」->「序列埠(Port)」中已勾選正確的 COM 號碼。

  2. 點擊 Arduino IDE 右上角的「序列埠監控視窗(Serial Monitor)」圖標(放大鏡或側邊欄圖示),即可開啟通訊視窗。

  3. 注意:如果開啟後沒有看到任何內容或出現亂碼,請先檢查監控視窗右下角的鮑率是否切換為 115200

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

 

 

六、ESP32-S3 Serial 序列埠通信: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 語法,建議可以加進你的常用筆記:

語法 / 函式功能與用途說明
Serial.begin(baud)啟動序列埠通訊,並設定指定的傳輸鮑率(如 115200)。
Serial.print(val)輸出資料至監控視窗,文字末端不自動換行
Serial.println(val)輸出資料至監控視窗,並於文字末端自動加上換行符號
Serial.available()回傳序列埠目前已接收到、可供讀取的資料位元組(Byte)數。
Serial.read()讀取序列埠接收緩衝區中的第一個字元(Character)
Serial.readString()讀取快取區中所有的資料,並將其組合並轉換為字串(String)
Serial.write(val)傳送原始的二進位資料(Byte)到序列埠,常用於精密的硬體對接。

     

 

八、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 環境配置與點燈範例

👉 返回教學列表米羅科技文創學院教學部落格

👉 下一篇推薦:Arduino 新手學習必讀經典 – 快速索引指南