
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 / GPIO3 | TX USB–TTL, логика 3,3 В | Нельзя использовать RS-232 или TX 5 В. |
| U0T / GPIO1 | RX USB–TTL, логика 3,3 В | Serial monitor 115200 бод в примере. |
| IO0 / GPIO0 | GND только для входа в загрузчик | Удержать 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 / 27 | SCCB: служебная настройка, не передача изображения. |
| Камера XCLK / PCLK / VSYNC / HREF / PWDN | Внутренние GPIO0 / 22 / 25 / 23 / 32 | RESET не выведен на 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=1320×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 драйверу.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


