IoTLabs

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

ESP32 C3 SuperMini không hiển thị Serial Monitor? Nguyên nhân và cách khắc phục chi tiết

Khi làm việc với ESP32, Serial Monitor là công cụ quan trọng để debug. Nhưng đôi khi bạn upload code thành công mà Serial Monitor không hiển thị gì, hoặc chỉ thấy vài dòng “rác” khó hiểu.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu nguyên nhân phổ biến khiến ESP32 không hiển thị Serial Monitor và cách khắc phục từng bước, áp dụng cho cả ESP32 DevKitESP32-C3 SuperMini.


1. Kiểm tra code: đã Serial.begin()Serial.println() chưa?

Đầu tiên, hãy chắc chắn rằng chính code của bạn có in ra Serial.

Ví dụ một đoạn code test đơn giản:

void setup() {
  Serial.begin(115200);      // Baud rate phổ biến cho ESP32
  delay(2000);               // Delay nhẹ để chờ ổn định
  Serial.println("ESP32 booting...");
}

void loop() {
  Serial.println("Hello from ESP32");
  delay(1000);
}

Các điểm cần chú ý:

  • Serial.begin(115200); phải nằm trong setup().
  • Sử dụng baud rate trùng với thiết lập trong Serial Monitor (thường là 115200).
  • Có ít nhất một dòng Serial.println(...) để kiểm tra.

Nếu code quá phức tạp, bạn nên tạo một sketch tối giản như trên để test trước. Nếu sketch test chạy OK, vấn đề nằm ở code chính của bạn.


2. Đảm bảo Serial Monitor dùng đúng baud rate

Một lỗi rất thường gặp là code và Serial Monitor dùng baud rate khác nhau.

  • Trong code: Serial.begin(115200);
  • Trong Arduino IDE / PlatformIO: hãy chọn 115200 ở góc dưới Serial Monitor.

Nếu baud không khớp, bạn có thể thấy:

  • Không có log nào.
  • Hoặc xuất hiện ký tự lạ, chữ bị lỗi, giống như “rác”.

Hãy thử các baud phổ biến: 9600, 115200, 74880 (log boot) nếu bạn không chắc board đang dùng tốc độ nào.


3. Kiểm tra cáp USB và cổng COM

Đừng xem nhẹ cáp USB – rất nhiều cáp chỉ hỗ trợ sạc, không có dây data.

  • Hãy dùng cáp USB chắc chắn là cáp dữ liệu, đã từng dùng với các thiết bị khác (ví dụ: nạp firmware điện thoại).
  • Thử đổi sang cổng USB khác trên máy tính.
  • Khi cắm board vào, kiểm tra:
    • Trong Arduino IDE → Tools → Port, xem có cổng mới xuất hiện không.
    • Trên Windows: Device Manager → Ports (COM & LPT).
    • Trên macOS: mở Terminal, gõ ls /dev/cu.* rồi cắm/rút board để xem cổng nào xuất hiện/biến mất.

Nếu không có cổng COM nào xuất hiện, có thể:

  • Thiếu driver USB–UART.
  • Board hỏng hoặc cáp lỗi.

4. Chọn đúng loại board trong Arduino IDE

Trong Arduino IDE, nếu bạn chọn sai loại board, việc upload vẫn có thể “tạm được”, nhưng Serial đôi khi hoạt động không đúng.

  • Với ESP32 DevKit V1 thông thường:
    • Tools → Board → ESP32 Arduino → “ESP32 Dev Module” hoặc “DOIT ESP32 DEVKIT V1” (nếu có).
  • Với ESP32-C3 SuperMini / C3 DevKit:
    • Tools → Board → ESP32 Arduino → “ESP32C3 Dev Module” hoặc board tương đương với chip ESP32-C3.

Sau khi chỉnh lại board:

  1. Chọn lại đúng Port.
  2. Upload lại code test.
  3. Mở Serial Monitor và thử reset ESP32.

5. Lưu ý đặc biệt với ESP32-C3: USB CDC, reset, boot log

Với các board ESP32-C3 (như SuperMini), việc xuất log Serial đôi khi đi qua USB CDC chứ không phải UART rời.

Một số thiết lập cần kiểm tra (tùy bản core ESP32 bạn dùng):

  • Tools → USB CDC On Boot: Enabled (để Serial đi qua USB).
  • Tools → Upload Mode / Port: chọn chế độ phù hợp (USB hay UART).

Mẹo debug:

  • Mở Serial Monitor trước.
  • Nhấn nút RESET trên board và xem có log boot của ESP32-C3 không.
  • Nếu vẫn không thấy gì, thử một sketch tối giản chỉ có Serial.beginSerial.println.

6. Driver USB–UART: CP2102, CH340, CH9102…

Nếu máy tính nhận nguồn nhưng không nhận cổng serial, rất có thể bạn thiếu driver cho chip USB–UART trên board:

  • CP2102 / CP2104 → tải driver từ Silicon Labs.
  • CH340 / CH341 → tải driver từ WCH.
  • CH9102 → cần driver riêng (thường dùng cho board giá rẻ).

Sau khi cài driver:

  1. Khởi động lại máy (nếu cần).
  2. Cắm lại ESP32.
  3. Mở Arduino IDE và chọn lại Port.

7. Tránh để ESP32 vào chế độ download mode

ESP32 có thể vào bootloader / download mode nếu chúng ta giữ nhầm nút BOOT/IO0 khi reset:

  • Khi đó Serial Monitor có thể chỉ có vài dòng boot lạ, hoặc hoàn toàn im lặng.
  • Đừng giữ nút BOOT khi nhấn reset, trừ khi bạn cần upload thủ công.

Nếu nghi ngờ, hãy:

  1. Rút USB, cắm lại.
  2. Không bấm BOOT/IO0.
  3. Upload lại code.
  4. Mở Serial Monitor và nhấn RESET.

8. Kiểm tra code có bị “kẹt” trước Serial.begin() không

Một số trường hợp, code:

  • Gọi WiFi connect, blocking rất lâu.
  • Vòng lặp vô hạn trước Serial.begin().
  • Hoặc bị reset liên tục do lỗi nguồn / watchdog.

Bạn có thể thêm LED debug:

#define LED_PIN 2   // Tuỳ board, ví dụ ESP32 DevKit là GPIO2

void setup() {
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, HIGH);   // LED sáng => đã vào setup

  Serial.begin(115200);
  Serial.println("Setup started");
}

void loop() {
  Serial.println("Loop running...");
  delay(1000);
}
  • Nếu LED không sáng → code chưa vào được setup() (lỗi nguồn, boot, flash…).
  • Nếu LED sáng mà Serial không có gì → quay lại các bước: baud rate, port, driver.

9. Một số lưu ý khi dùng PlatformIO

Nếu bạn dùng PlatformIO:

  • Kiểm tra platformio.ini:
monitor_speed = 115200
upload_speed = 921600
  • Đảm bảo board = esp32dev, board = esp32-c3-devkitm-1 hoặc loại board phù hợp.
  • Dùng lệnh:
    • pio run -t upload
    • pio device monitor

10. Tổng kết: Quy trình check nhanh khi ESP32 không hiển thị Serial Monitor

Khi gặp lỗi ESP32 không hiển thị Serial Monitor, bạn có thể đi theo checklist sau:

  1. Dùng code test đơn giản với Serial.begin(115200)Serial.println.
  2. Đảm bảo baud rate trong Serial Monitor = baud trong code.
  3. Kiểm tra cáp USB và thử cổng USB khác.
  4. Chọn đúng boardđúng cổng COM/tty trong IDE.
  5. Cài đúng driver USB–UART (CP2102, CH340, v.v…).
  6. Với ESP32-C3, bật USB CDC On Boot, thử reset khi Serial Monitor đang mở.
  7. Đảm bảo không giữ nút BOOT/IO0 khi reset nếu không cần.
  8. Thêm LED / log debug để chắc chắn code thực sự chạy.

Chỉ cần đi lần lượt các bước trên, bạn gần như luôn tìm ra nguyên nhân và khắc phục được việc ESP32 không hiển thị dữ liệu trên Serial Monitor.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *