IoTLabs

Nghiên cứu, Sáng tạo và Thử nghiệm

ESP32-S3-DevKitC N16R8 CAM: Bài 03 – COM vs USB (Native/OTG) – Dùng cổng nào, cấu hình nào?

Giới thiệu

Nếu bạn từng gặp các tình huống như không thấy cổng COM, nạp code thất bại, Serial Monitor không hiện log hoặc USB lúc nhận lúc không, thì gần như chắc chắn bạn đang chọn sai cổng USB hoặc cấu hình chưa đúng.

ESP32-S3-DevKitC N16R8 CAM có hai cổng USB-C: một cổng COM (USB-UART) và một cổng USB Native (OTG). Mỗi cổng có mục đích sử dụng hoàn toàn khác nhau.

Trong Bài 03 của series “Hướng dẫn lập trình ESP32-S3-DevKitC N16R8 CAM – Từ cơ bản tới ứng dụng thực tế”, chúng ta sẽ làm rõ:

  • Khi nào dùng COM, khi nào dùng USB Native
  • Cách cấu hình Arduino IDE đúng cho từng cổng
  • Các lỗi thường gặp và cách xử lý

1. Tổng quan hai cổng USB trên ESP32-S3-DevKitC N16R8 CAM

Cổng COM (USB-UART)

Bản chất:

  • Đi qua chip USB-to-UART (CH343 / CP210x / CH9102 – tuỳ board)
  • Hoạt động độc lập với firmware

Dùng để:

  • Nạp firmware (an toàn, ổn định)
  • Serial Monitor debug

Ưu điểm:

  • Dễ dùng cho người mới
  • Không cần cấu hình phức tạp
  • Ít lỗi

Cổng USB Native (OTG)

Bản chất:

  • Kết nối trực tiếp vào USB controller tích hợp của ESP32-S3
  • Phụ thuộc vào firmware và cấu hình

Dùng để:

  • USB-CDC (Serial qua USB)
  • HID (keyboard, mouse)
  • MSC (USB Disk)

Ưu điểm:

  • Không cần chip UART ngoài
  • Linh hoạt cho ứng dụng nâng cao

2. Nên dùng cổng nào trong từng giai đoạn?

Khi mới bắt đầu (khuyến nghị)

Dùng cổng COM (USB-UART)

  • Nạp code ổn định
  • Debug dễ
  • Tránh các lỗi do USB CDC

Khi đã quen hoặc làm sản phẩm

Dùng USB Native (OTG) khi:

  • Muốn giảm linh kiện
  • Làm USB HID/MSC
  • Cần tốc độ cao hơn

3. Cấu hình Arduino IDE cho cổng COM (USB-UART)

Thiết lập khuyến nghị

  • Board: ESP32S3 Dev Module
  • Port: COMx / /dev/ttyUSBx
  • USB CDC On Boot: Disabled
  • Upload Mode: UART0 / USB-UART
  • Baudrate: 921600 (có thể giảm nếu lỗi)

Dấu hiệu đúng

  • Serial log xuất hiện ngay sau reset
  • Nạp code không cần giữ BOOT

4. Cấu hình Arduino IDE cho USB Native (OTG)

Thiết lập khuyến nghị

  • Board: ESP32S3 Dev Module
  • Port: USB CDC
  • USB CDC On Boot: Enabled
  • Upload Mode: USB

Lưu ý quan trọng

  • Nếu cấu hình sai → máy không nhận USB
  • Cần reset lại board sau khi nạp

5. Các lỗi phổ biến & cách xử lý

Lỗi 1: Không thấy cổng COM

Nguyên nhân:

  • Cắm nhầm cổng USB
  • Cáp USB chỉ sạc
  • Thiếu driver USB-UART

Cách xử lý:

  • Đổi sang cổng COM
  • Đổi cáp USB
  • Cài driver phù hợp

Lỗi 2: USB Native không nhận

Nguyên nhân:

  • Chưa bật USB CDC On Boot
  • Firmware lỗi

Cách xử lý:

  • Nạp lại firmware bằng cổng COM
  • Bật USB CDC đúng cách

Lỗi 3: Serial Monitor không có log

Nguyên nhân:

  • Baudrate sai
  • Debug in ra cổng khác

Cách xử lý:

  • Đặt 115200
  • Kiểm tra Serial.begin()

6. Checklist chọn đúng cổng USB

  • Mới học → COM
  • Debug firmware → COM
  • USB HID/CDC → USB Native
  • Gặp lỗi USB → quay về COM

Chuẩn bị cho bài tiếp theo

Bài 04, chúng ta sẽ:

  • Setup Arduino IDE v2 chuẩn cho ESP32-S3 N16R8 CAM
  • Chọn partition, PSRAM, USB CDC đúng cách