IoTLabs

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

ESP32-S3-DevKitC N16R8 CAM: Bài 1- Nhận diện board

ESP32-S3-DevKitC N16R8 CAM: Nhận diện board ESP32-S3-DevKitC N16R8 CAM

Mục tiêu bài 1:

Sau khi đọc xong, bạn sẽ:

  • Nhận diện đúng board ESP32-S3-DevKitC N16R8 CAM (loại có camera DVP 24-pin + microSD + 2 USB-C).
  • Biết các dấu hiệu “đúng loại/đúng dòng” để tránh mua nhầm.
  • Có checklist kiểm tra nhanh board mới mua trong 10–15 phút.

Gợi ý chèn ảnh pinout bạn đã có ở đầu bài.


1) Board này là gì? Vì sao nhiều shop gọi “DevKitC”?

Board bạn đang có thường được gọi là ESP32-S3-CAM N16R8 (biến thể phổ biến của ESP32-S3). Nhiều shop đặt tên “DevKitC N16R8 CAM” để dễ tìm kiếm và dễ bán. Thực tế, đây là dev board mở rộng (có camera + microSD) chứ không phải “DevKitC chuẩn Espressif” theo kiểu dev board tối giản.

N16R8 thường được hiểu:

  • N16: Flash ngoài 16MB
  • R8: PSRAM ngoài 8MB

Điểm mạnh của biến thể CAM:

  • Có sẵn cổng camera DVP 24-pin để gắn OV2640/OV5640…
  • khe microSD để lưu ảnh/audio/log dữ liệu.
  • 2 cổng USB-C (một cổng COM USB-UART, một cổng USB native/OTG).

2) Dấu hiệu nhận diện nhanh (nhìn là biết đúng loại)

2.1. Các “đặc trưng không thể nhầm”

  • 2 cổng USB-C: thường in/khắc “USB” (native/OTG) và “COM” (USB-UART).
  • Cổng camera DVP 24-pin (socket FPC) ở giữa board.
  • Khe cắm microSD (thường ở phía trên hoặc mặt sau board tùy phiên bản).
  • 2 nút: BOOTRESET.
  • RGB LED WS2812 (hay nằm ở GPIO48 theo pinout bạn gửi).

2.2. Các linh kiện bạn nên thấy trên board

  • Module ESP32-S3-WROOM (N16R8) (phần shield kim loại).
  • Chip USB-UART (thường CH343/CH9102/CP210x – tuỳ lô; nhiều ảnh bán hàng ghi CH343P).
  • IC ổn áp (nhiều board dùng họ AMS/ASM1117 để hạ 5V xuống 3.3V).

Lưu ý: linh kiện có thể khác theo lô, nhưng “tính năng & layout tổng thể” sẽ giống.


3) Hiểu nhanh 2 cổng USB-C: cắm đúng để khỏi “tưởng hỏng”

Đây là lỗi người mới gặp nhiều nhất.

  • Cổng COM: đi qua chip USB-UART → dùng để nạp code + Serial Monitor kiểu “cổ điển”. Máy thường nhận ra một cổng serial ngay.
  • Cổng USB (Native/OTG): đi trực tiếp vào ESP32-S3 (USB native) → dùng cho USB-CDC, HID, MSC, debug… Tuỳ cấu hình Arduino/IDF mà máy có nhận hay không.

Khuyến nghị khi mới bắt đầu: ưu tiên dùng cổng COM để nạp và xem Serial cho ổn định.

4) Checklist kiểm tra board mới mua (10–15 phút)

4.1. Kiểm tra cấp nguồn an toàn

  • Chỉ cấp nguồn theo đúng chân: 5V hoặc 3V3 (nếu bạn biết chắc nguồn 3.3V sạch và đúng chuẩn).
  • Không đưa trực tiếp pin Li-ion/LiPo 3.7V vào chân 3V3.
  • Không cấp nguồn ngoài vào 5V/3V3 đồng thời khi đang cắm USB (tránh “đánh nhau nguồn” nếu board không có mạch bảo vệ tốt).

4.2. Kiểm tra nhận cổng trên máy tính

  1. Cắm vào COM → máy phải nhận một cổng serial (Windows sẽ hiện COMx; macOS/Linux sẽ có /dev/tty.*).
  2. Nếu cắm vào USB (native) mà không thấy gì, chưa kết luận hỏng — phần này phụ thuộc cấu hình USB-CDC.

4.3. Kiểm tra Flash/PSRAM đúng “N16R8” bằng Arduino IDE

Chuẩn bị:

  • Arduino IDE v2 → Boards Manager → cài “esp32 by Espressif Systems”.
  • Chọn board: ESP32S3 Dev Module (an toàn cho biến thể CAM).
  • Trong Tools:
    • PSRAM: Enabled
    • (Nếu dùng cổng USB native) USB CDC On Boot: Enabled (tuỳ trường hợp)

Code test nhanh (nạp xong mở Serial Monitor 115200):

#include <Arduino.h>

void setup() {
  Serial.begin(115200);
  delay(1500);

  Serial.println("=== ESP32-S3 Board Check ===");
  Serial.printf("Chip model: %s\n", ESP.getChipModel());
  Serial.printf("Chip rev: %d\n", ESP.getChipRevision());
  Serial.printf("CPU freq: %u MHz\n", ESP.getCpuFreqMHz());

  Serial.printf("Flash size: %u bytes (~%u MB)\n",
                ESP.getFlashChipSize(),
                ESP.getFlashChipSize() / (1024 * 1024));

  bool hasPsram = psramFound();
  Serial.printf("PSRAM found: %s\n", hasPsram ? "YES" : "NO");
  if (hasPsram) {
    Serial.printf("Free PSRAM: %u bytes (~%u MB)\n",
                  ESP.getFreePsram(),
                  ESP.getFreePsram() / (1024 * 1024));
  }
}

void loop() {}

Kỳ vọng đúng “N16R8”:

  • Flash ~ 16MB
  • PSRAM: YES và Free PSRAM thường vài MB (không phải đúng 8MB vì hệ thống/heap dùng một phần)

Nếu PSRAM = NO: 90% là do bạn chưa bật PSRAM trong Tools, hoặc chọn sai board/partition.

5) Đọc pinout theo “nhóm chức năng” để tránh đụng camera/SD

Trong các bài tiếp theo, mình sẽ đi sâu từng nhóm. Ở bài 1 bạn chỉ cần nhớ quy tắc:

  • Chân dành cho Camera: đã được gán sẵn (SIOD/SIOC/VSYNC/HREF/XCLK/PCLK/Yx). Nếu bạn lấy các chân này cho LED/relay… thì camera sẽ lỗi.
  • Chân dành cho microSD: thường có SD_CMD/SD_CLK/SD_DATA… Nếu dùng nhầm, SD mount fail.
  • USB native thường dùng GPIO19/20 cho D-/D+ (theo pinout bạn gửi).
  • BOOT strap hay nằm ở GPIO0 → hạn chế gắn ngoại vi kéo mức logic “lạ” lúc boot.

6) Bạn sẽ học gì ở bài 2?

  • Danh sách GPIO an toàn để dùng cho I2C/SPI/UART/PWM (không đụng camera/SD/USB/strap).
  • Danh sách GPIO nên tránh + lý do.
  • Gợi ý sơ đồ nối nhanh: OLED/I2C, UART sensor, SPI module… phù hợp board CAM.