Giới thiệu
Sau khi đã hoàn tất Bài 02 – Checklist kiểm tra board mới mua, chúng ta bước sang một phần cực kỳ quan trọng nhưng cũng dễ gây nhầm lẫn nhất: pinout.
ESP32-S3-DevKitC N16R8 CAM là board tích hợp camera + microSD + USB native, vì vậy rất nhiều GPIO đã được chiếm sẵn. Nếu không hiểu rõ pinout theo nhóm chức năng, bạn rất dễ gặp các lỗi sau:
- Camera không khởi tạo được
- microSD mount fail
- Board không boot hoặc không nạp được firmware
- USB native không hoạt động
Bài 2.1 được tách riêng để đi rất sâu và rất kỹ vào pinout, giúp bạn hiểu:
- GPIO nào an toàn để dùng
- GPIO nào không nên đụng
- GPIO nào dùng được nhưng cần điều kiện
Nguyên tắc đọc pinout ESP32-S3 CAM
Thay vì học thuộc từng chân GPIO, hãy luôn đọc pinout theo nhóm chức năng:
- Nhóm nguồn & reset
- Nhóm camera DVP (chiếm GPIO cố định)
- Nhóm microSD
- Nhóm USB native (OTG)
- Nhóm Boot / Strapping
- Nhóm GPIO an toàn cho dự án
Đây là tư duy xuyên suốt cho toàn bộ series.
1. Nhóm chân nguồn & reset
Các chân liên quan
- 5V: nguồn vào từ USB hoặc nguồn ngoài
- 3V3: nguồn 3.3V sau ổn áp
- GND: mass
- EN / RST: reset chip
Lưu ý thực tế
- ❌ Không cấp pin Li-ion 3.7V trực tiếp vào 3V3
- ❌ Không cấp đồng thời USB và nguồn ngoài khi chưa hiểu mạch
- ✅ Khi học, nên cấp nguồn qua USB-C TTL
2. Nhóm chân Camera DVP (KHÔNG DÙNG LẠI)
Camera dùng giao tiếp DVP 8-bit, các chân này bắt buộc giữ nguyên.
Các tín hiệu camera chính
- CAM_SIOD / CAM_SIOC: I2C điều khiển camera
- CAM_XCLK: clock cho camera
- CAM_PCLK: pixel clock
- CAM_VSYNC / CAM_HREF: đồng bộ khung hình
- CAM_Y2 → CAM_Y9: bus dữ liệu ảnh
Quy tắc sống còn
- ❌ Không dùng các chân camera cho LED, relay, sensor
- ❌ Không dùng làm I2C/SPI/UART khác
- ⚠️ Dùng sai → camera init fail hoặc crash ngẫu nhiên
3. Nhóm chân microSD (TF Card)
Board có sẵn khe microSD, thường dùng giao tiếp SDMMC.
Các tín hiệu SD
- SD_CMD
- SD_CLK
- SD_DATA (D0–D3)
Lưu ý
- ❌ Không dùng các chân SD cho SPI/I2C khác
- ⚠️ Nếu mount fail, kiểm tra:
- Trùng GPIO
- Thư viện
SDvsSD_MMC - Thẻ format FAT32
4. Nhóm chân USB Native (OTG)
ESP32-S3 hỗ trợ USB native, không qua chip UART.
Chân liên quan
- USB_D+
- USB_D-
Lưu ý
- ❌ Không dùng các chân này cho GPIO khác
- ⚠️ Cần cấu hình USB CDC On Boot đúng trong Arduino IDE
5. Nhóm chân Boot / Strapping (rất nhạy cảm)
Chân quan trọng
- GPIO0 (BOOT)
Nguyên tắc
- ❌ Không kéo GPIO0 xuống LOW lúc boot
- ❌ Tránh gắn module có pull-down mạnh
- ✅ Nếu bắt buộc dùng → đảm bảo HIGH khi reset
6. Nhóm GPIO an toàn (nên dùng)
Đây là các chân ít xung đột, phù hợp cho ngoại vi.
Dùng cho I2C
- OLED, sensor
- Chọn GPIO không thuộc camera/SD/USB/BOOT
Dùng cho UART phụ
- Tránh U0TXD/U0RXD nếu đang debug
Dùng cho PWM / LED
- Ưu tiên WS2812 GPIO48 có sẵn
Danh sách GPIO cụ thể sẽ được map chi tiết trong Bài 07.
Những lỗi phổ biến do sai pinout
- Camera không lên dù code đúng
- microSD mount fail ngẫu nhiên
- Board reset liên tục khi bật WiFi + Camera
- USB không nhận
90% lỗi đến từ xung đột GPIO.
Chuẩn bị cho bài tiếp theo
- Bài 03: COM vs USB (Native/OTG)
- Bài 05: Pinout thực chiến & bảng GPIO an toàn


