ESP32-CAM AI-Thinker + OV2640

Ai-Thinker; сенсор OmniVision · ESP32-CAM, классическая плата ESP32 с PSRAM и штатной OV2640 на FPC

Автономная камера на ESP32 для снимков, локальной передачи изображений и машинного зрения.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСложно
Проекты с компонентом

О МОДУЛЕ

Что делает ESP32-CAM, классическая плата ESP32 с PSRAM и штатной OV2640 на FPC

Область применимости: эта карточка описывает документированный референс Ai-Thinker ESP32_CAM V1.6 с OV2640. Фото служит иллюстрацией семейства ESP32-CAM: изготовитель, ревизия, наличие PSRAM и внутренняя разводка показанного экземпляра не подтверждены. Перед подключением конкретной платы сверяйте её маркировку и схему; справочная диаграмма не заменяет эту проверку.

Классическая ESP32-CAM Ai-Thinker — вычислительная плата с камерой, а не только сенсор OV2640. ESP32 запускает программу, PSRAM хранит кадры, а штатный модуль камеры подключён гибким шлейфом. Для снимков не нужен второй Arduino. Отдельная плата ESP32-CAM-MB с USB является адаптером программирования и не входит в описанное исполнение автоматически.

Основная задача платы — компактная камера для учебных опытов, снимков и локальных IoT-проектов. Сама OV2640 не добавляет распознавание объектов: это работа приложения и доступных вычислительных ресурсов. Максимальное разрешение сенсора не обещает конкретную частоту Wi-Fi-видео. JPEG экономит память; RGB/YUV, большие кадры и несколько буферов требуют больше ресурсов.

Плата экономит место за счёт совместного использования GPIO камерой, PSRAM, microSD и подсветкой. Обычная распиновка ESP32-DevKitC здесь неприменима. После прошивки перемычку IO0–GND обязательно снимают, иначе тактовый сигнал камеры не сможет работать. Нестабильное питание часто вызывает ошибки камеры или brownout; защиту brownout нельзя выключать вместо устранения просадки.

FPC-камеры OV2640 разных производителей отличаются шириной, шагом, стороной контактов, длиной шлейфа и назначением выводов. Совпадение числа контактов не подтверждает совместимость. Waveshare OV2640 на гребёнке и OV5640 на DVP-плате не вставляются в этот разъём как замена. Первый пример только захватывает кадр по команде и печатает его размер, без сетевой трансляции. Для реальной камеры нужны согласие снимаемых людей, ограничение доступа и защита сетевого интерфейса; учебный CameraWebServer нельзя просто выставлять в открытый интернет.

Фотография

Пример платы с маркировкой ESP32-CAM и камеры со шлейфом TY-OV2640-V2.0. Изготовитель и ревизия платы на фото не подтверждены; технические примеры карточки относятся к документированному референсу Ai-Thinker.

Фото: Nowforever, Wikimedia Commons, CC BY-SA 4.0. Источник: https://commons.wikimedia.org/wiki/File:ESP32-CAM.jpg . Лицензия: https://creativecommons.org/licenses/by-sa/4.0/ . Изменения: исходный фон удалён ручной маской, плата пропорционально уменьшена и размещена на предоставленном фоне SLDV LAB; выполнено JPEG-сжатие. Реальные детали, маркировка, геометрия и цвета платы не перерисовывались; исходные мягкость и шум сохранены. Адаптация фотографии: CC BY-SA 4.0. Фон предоставлен пользователем.

Справочная схема

Авторская справочная схема SLDV LAB. Подписи и порядок 16 контактов переписаны с фотографии; электрические функции относятся к документированному Ai-Thinker ESP32_CAM V1.6 и CAMERA_MODEL_AI_THINKER в Arduino-ESP32 3.0.7. Это не доказательство происхождения, PSRAM или внутренней разводки платы на фото. Камерные GPIO показаны как параметры драйвера, без нумерации FPC. Напряжение VCC и состояние перемычек не установлены.

Источники: 1, 2. Схема описывает документированный референс; скрытая разводка и PSRAM сфотографированной платы не проверены.

Характеристики

Контроллер
ESP32, классическое исполнение Ai-Thinker; не ESP32-S3-CAM
Сенсор в данном комплекте
OV2640, JPEG до UXGA 1600 × 1200
Буферизация
PSRAM на плате; пример останавливается, если она не обнаружена
Камера
8-бит DVP + SCCB; штатный 24-контактный FPC
Прошивка
UART через отдельный USB–TTL адаптер с уровнями 3,3 В
Слот microSD
Да
Интерфейс
Wi-Fi, UART
Питание модуля
Пример: стабилизированные 5 В на контакт 5V ESP32-CAM; UART и GPIO только 3,3 В. Не подавать 5 В на 3V3, U0R, U0T или контакты камеры.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
5VИзолированный стабилизированный источник 5 ВКонтакт питания платы. Не подавать одновременно питание от нескольких независимых источников.
GNDМинус источника и GND USB–TTLЗемля адаптера общая, его силовой выход оставлен неподключённым при отдельном питании.
U0R / GPIO3TX USB–TTL, логика 3,3 ВНельзя использовать RS-232 или TX 5 В.
U0T / GPIO1RX USB–TTL, логика 3,3 ВSerial monitor 115200 бод в примере.
IO0 / GPIO0GND только для входа в загрузчикУдержать LOW при reset перед прошивкой; затем снять перемычку и перезагрузить. При работе GPIO0 является XCLK камеры.
3V3 / VCCНе подключены в примереНе смешивать с 5V; назначение VCC и перемычек сверять по ревизии.
GPIO4Штатный светодиод подсветки / линия microSDНе использовать как свободный универсальный GPIO.
GPIO2 / 12 / 13 / 14 / 15Не подключены; microSD не используетсяОбщие ресурсы SD и загрузочные ограничения, особенно GPIO12.
GPIO16Не подключёнВ классической плате связан с PSRAM; не считать свободным UART2.
Камера Y2 / Y3 / Y4 / Y5Внутренние GPIO5 / 18 / 19 / 21Штатное соединение через FPC, дополнительных проводов не нужно.
Камера Y6 / Y7 / Y8 / Y9Внутренние GPIO36 / 39 / 34 / 35Соответствуют c.pin_d4..d7.
Камера SIOD / SIOCВнутренние GPIO26 / 27SCCB: служебная настройка, не передача изображения.
Камера XCLK / PCLK / VSYNC / HREF / PWDNВнутренние GPIO0 / 22 / 25 / 23 / 32RESET не выведен на GPIO; значение -1.

Подходит для ESP32, Arduino. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать классическую Ai-Thinker ESP32-CAM со штатной OV2640. Сначала уточни точное исполнение компонента, модель контроллера, среду и версию ядра, питание и задачу. Не переноси распиновку и напряжения с похожих модулей. Подготовь согласованные подключение, зависимости, минимальный пример, обработку доступных ошибок и пошаговую проверку. Не называй пример испытанным на оборудовании, если нет протокола испытаний. Уточни фото ревизии, наличие PSRAM, модель USB–TTL и питание. Используй именно CAMERA_MODEL_AI_THINKER и не занимай GPIO камеры/PSRAM. Объясни IO0–GND только для прошивки, 3,3-вольтовый UART, PSRAM и диагностику brownout без отключения защиты. Начни с локального однокадрового теста; передачу изображений добавляй только после согласования доступа и приватности.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Среда
Arduino-ESP32 3.0.7; board AI Thinker ESP32-CAM

Структура и функции сверены с esp32-camera API 2.0.16 и официальным CameraWebServer.

Камера
OV2640; JPEG; FRAMESIZE_QVGA; fb_count=1

320×240 для первого опыта; максимальное разрешение не требуется для проверки.

Память
PSRAM enabled; CAMERA_FB_IN_PSRAM

Если psramFound() false, сначала исправьте выбор платы/настройку памяти.

Монитор
115200 бод; c = один кадр

Ни Wi-Fi, ни microSD в примере не запускаются.

ESP32-CAM: один кадр по команде c

cpp
#include <Arduino.h>
#include "esp_camera.h"
void setup() {
  Serial.begin(115200);
  if (!psramFound()) {
    Serial.println("PSRAM missing: check board variant and PSRAM setting");
    while (true) delay(1000);
  }
  camera_config_t c = {};
  c.ledc_channel = LEDC_CHANNEL_0;
  c.ledc_timer = LEDC_TIMER_0;
  c.pin_d0 = 5; c.pin_d1 = 18; c.pin_d2 = 19; c.pin_d3 = 21;
  c.pin_d4 = 36; c.pin_d5 = 39; c.pin_d6 = 34; c.pin_d7 = 35;
  c.pin_xclk = 0; c.pin_pclk = 22;
  c.pin_vsync = 25; c.pin_href = 23;
  c.pin_sccb_sda = 26; c.pin_sccb_scl = 27;
  c.pin_pwdn = 32; c.pin_reset = -1;
  c.xclk_freq_hz = 20000000;
  c.pixel_format = PIXFORMAT_JPEG;
  c.frame_size = FRAMESIZE_QVGA;
  c.jpeg_quality = 12;
  c.fb_count = 1;
  c.fb_location = CAMERA_FB_IN_PSRAM;
  c.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
  esp_err_t err = esp_camera_init(&c);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed: 0x%x\n", (unsigned)err);
    while (true) delay(1000);
  }
  Serial.println("Send c to capture one frame");
}
void loop() {
  if (Serial.available() && Serial.read() == 'c') {
    camera_fb_t *fb = esp_camera_fb_get();
    if (!fb) {
      Serial.println("Capture failed: check power, clocks and wiring");
      return;
    }
    Serial.printf("Frame %ux%u, %u bytes\n", (unsigned)fb->width,
                  (unsigned)fb->height, (unsigned)fb->len);
    esp_camera_fb_return(fb);
  }
  delay(10);
}

Полный скетч для классической Ai-Thinker ESP32-CAM + OV2640, Arduino-ESP32 3.0.7; API сверены с esp32-camera 2.0.16. Компиляция и аппаратная проверка не выполнялись. Печать длины не показывает качество изображения; следующим шагом кадр можно сохранить или вывести через защищённое приложение, обязательно возвращая frame buffer драйверу.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты