Series
Hướng Dẫn Lập Trình ESP32-S3-DevKitC N16R8 CAM
  1. 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ế
  2. 1ESP32-S3-DevKitC N16R8 CAM: Bài 1- Nhận diện board
  3. 2ESP32-S3-DevKitC N16R8 CAM: Bài 02 -Checklist kiểm tra board mới mua (USB / Flash / PSRAM / LED)
  4. 3ESP32-S3-DevKitC N16R8 CAM: Bài 2.1 – Phân tích chi tiết pinout theo nhóm chức năng (an toàn vs xung đột)
  5. 4ESP32-S3-DevKitC N16R8 CAM: Bài 03 – COM vs USB (Native/OTG) – Dùng cổng nào, cấu hình nào?
  6. 5ESP32-S3-DevKitC N16R8 CAM: Bài 04 – Setup Arduino IDE v2 “đúng chuẩn” (PSRAM / Partition / USB-CDC)
  7. 6ESP32-S3-DevKitC N16R8 CAM: Bài 05 – Đọc pinout theo nhóm chức năng (an toàn vs xung đột)
  8. 7ESP32-S3-DevKitC N16R8 CAM: Bài 06 – Nhóm chân Boot/Strapping & các lỗi boot hay gặp
  9. 8ESP32-S3-DevKitC N16R8 CAM: Bài 07 – UART / I2C / SPI gợi ý mapping “an toàn” cho dự án
  10. 9ESP32-S3-DevKitC N16R8 CAM: Bài 7.1 – Hướng kết nối với các loại màn hình thông dụng
  11. 10ESP32-S3-DevKitC N16R8 CAM: Bài 08 – MicroSD pinout, test đọc/ghi ổn định
  12. 11ESP32-S3-DevKitC N16R8 CAM: Bài 09 — Camera DVP 24-pin – phân biệt OV2640/OV5640 & cấu hình cơ bản
  13. 12ESP32-S3-DevKitC N16R8 CAM: Bài 10 — Demo camera web server – stream ổn định, tối ưu PSRAM/heap
  14. 13ESP32-S3-DevKitC N16R8 CAM: Bài 11 — Chụp ảnh lưu microSD – đặt tên file, timestamp, chống full thẻ
  15. 14ESP32-S3-DevKitC N16R8 CAM: Bài 12 — Test builtin LED RGB WS2812 (GPIO48) và lưu ý nhiễu/nguồn
  16. 15ESP32-S3-DevKitC N16R8 CAM: Bài 13 – Dự án 1: Camera “Nhật ký” (chụp định kỳ + lưu thẻ + xem qua WiFi)
  17. 16ESP32-S3-DevKitC N16R8 CAM: Bài 14 – Dự án Camera an ninh mini
  18. 17ESP32-S3-DevKitC N16R8 CAM: Bai 15 – Dự án trợ lý AI Xiaozhi
  19. 18ESP32-S3-DevKitC N16R8 CAM: Bài 16 – Tập trung vào mục tiêu chạy lâu – ổn định
Kiến thức

ESP32-S3-DevKitC N16R8 CAM: Bài 09 — Camera DVP 24-pin – phân biệt OV2640/OV5640 & cấu hình cơ bản

Th12 2025
ESP32-S3-DevKitC N16R8 CAM: Bài 09 — Camera DVP 24-pin – phân biệt OV2640/OV5640 & cấu hình cơ bản

Bài 09 giúp bạn hiểu rõ giao tiếp camera DVP 24-pin trên ESP32-S3-DevKitC N16R8 CAM, phân biệt hai loại camera phổ biến OV2640 và OV5640, và cách cấu hình cơ bản để camera hoạt động ổn định.

Mục tiêu bài học

Sau bài này, bạn sẽ:

  • Hiểu camera DVP 24-pin là gì và vì sao ESP32-S3 phù hợp
  • Phân biệt OV2640 và OV5640 (độ phân giải, RAM, ứng dụng)
  • Biết điều kiện bắt buộc để camera hoạt động (PSRAM, xclk, nguồn)
  • Cấu hình camera cơ bản bằng Arduino IDE

1. Tổng quan camera DVP 24-pin trên ESP32-S3

Camera DVP (Digital Video Port) là kiểu giao tiếp song song, truyền dữ liệu ảnh qua nhiều chân đồng thời, khác với camera SPI hay USB.

ESP32-S3 hỗ trợ DVP vì:

  • Có PSRAM ngoài (N16R8)
  • Có bộ điều khiển I2S song song (parallel)
  • Đủ băng thông cho camera và WiFi

2. Cấu trúc chân DVP 24-pin (tổng quan)

Cụm camera 24-pin bao gồm:

  • XCLK: đồng hồ cấp cho camera
  • PCLK: đồng hồ dữ liệu
  • VSYNC / HREF: đồng bộ frame
  • DATA0 – DATA7: dữ liệu ảnh
  • SCCB (I2C): cấu hình camera

Lưu ý: các chân này đã được board CAM nối sẵn, KHÔNG tự ý đổi GPIO.

3. Phân biệt OV2640 và OV5640

OV2640

  • Độ phân giải tối đa: 2MP (1600×1200)
  • Tiêu thụ bộ nhớ ít hơn
  • Ổn định, được hỗ trợ rất tốt
  • Phù hợp: camera web, snapshot, project IoT

OV5640

  • Độ phân giải tối đa: 5MP (2592×1944)
  • Cần PSRAM tốt và nhiều hơn
  • Cấu hình phức tạp hơn
  • Phù hợp: chụp ảnh chất lượng cao

Gợi ý: người mới nên bắt đầu với OV2640.


4. Điều kiện bắt buộc để camera hoạt động

Trước khi code camera, cần đảm bảo:

  • PSRAM bật và hoạt động (N16R8)
  • Nguồn cấp ổn định (không dùng cổng USB yếu)
  • Không dùng các GPIO camera cho ngoại vi khác

Nếu thiếu PSRAM: camera sẽ init thất bại hoặc crash.

5. Thư viện cần dùng (Arduino IDE)

#include "esp_camera.h"

Thư viện này đã có sẵn khi cài ESP32 core chính thống.

6. Cấu hình camera cơ bản (OV2640)

camera_config_t config;

config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer   = LEDC_TIMER_0;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;

config.frame_size   = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count     = 2;

esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
  Serial.println("Camera init failed");
}

Giải thích các tham số quan trọng

  • xclk_freq_hz: thường 20MHz để camera ổn định
  • frame_size: QVGA, VGA, SVGA, UXGA
  • jpeg_quality: 10–15 là hợp lý
  • fb_count: >=2 nếu có PSRAM

7. Lỗi thường gặp và cách xử lý

Lỗi 1: Camera init failed

  • Kiểm tra PSRAM
  • Kiểm tra đúng model camera

Lỗi 2: Reset ngẫu nhiên

  • Nguồn yếu
  • Frame size quá lớn

Lỗi 3: Ảnh đen hoặc vỡ màu

  • XCLK sai
  • Pixel format sai

8. Best practices khi dùng camera

  • Luôn test camera trước khi kết hợp SD/WiFi
  • Giảm frame size khi debug
  • Không vừa stream vừa ghi SD liên tục