Гайд · ESP32-CAM · Камера
Как выжать хорошие фото из ESP32-CAM
ESP32-CAM соединяет ESP32 с 2 Мп камерой OV2640 за пару долларов — но плохой конфиг даёт огромные, размытые и медленно уходящие фото. Всё решают три настройки: формат пикселя, JPEG-качество и framesize. Вот что делает каждая и значения, что просто работают для Telegram, Google Drive и веб-дашборда.
1. Формат пикселя — бери JPEG
OV2640 умеет отдавать сырые форматы, но на голодной по памяти ESP32 это ловушка. Сырой RGB565 или YUV422 кадр не сжат — картинка 800×600 это почти мегабайт, она и не влезет спокойно, и не улетит быстро. JPEG сжимает её аппаратно до доли размера — так что для всего, что хранишь или шлёшь по Wi-Fi, это единственный разумный выбор.
| Формат | Сжатие | Размер | Для чего |
|---|---|---|---|
| JPEG | высокое (аппаратно) | малый | Telegram, Drive, веб — почти всё |
| RGB565 | нет (сырой) | большой | обработка на устройстве / дисплей |
| YUV422 | нет (сырой) | большой | обработка цвета, конвертация |
| Grayscale | низкое | средний | простое зрение / детекция лиц |
В коде — одна строка: config.pixel_format = PIXFORMAT_JPEG;
2. JPEG-качество — крутилка 0–63
Запутанно, но jpeg_quality — это на самом деле число сжатия: меньше значит лучше
качество и больше файл, больше — сильнее сжатие, меньше и размытее. Диапазон 0–63.
| Значение | Качество | Заметки |
|---|---|---|
| 5 | очень чётко ★★★★★ | отличная детализация, большой файл |
| 10 | чётко ★★★★ | хорошее качество, ещё крупный — рекомендуется |
| 12 | сбалансировано ★★★ | сбалансированное качество, средний размер |
| 20 | экономно ★★ | качество падает, маленький файл |
| 30+ | сильное сжатие ★ | низкое качество, крошечный файл |
Золотая середина: качество 10–12 — красиво и разумный размер. (На многих платах совсем низкие 0–4 требуют PSRAM, иначе съёмка падает.)
3. Framesize — разрешение
Потолок OV2640 — 1600×1200 (UXGA, 2 Мп), но больше не всегда лучше: каждый шаг вверх множит размер файла и время отправки. Бери наименьшее разрешение, что всё ещё показывает нужное.
| Режим | Разрешение | Пикселей | Для чего |
|---|---|---|---|
| QQVGA | 160×120 | 19 200 | крошечное, экономия трафика |
| QVGA | 320×240 | 76 800 | лёгкий мониторинг |
| CIF | 400×296 | 118 400 | сбалансировано |
| VGA | 640×480 | 307 200 | стандартный realtime-мониторинг |
| SVGA ★ | 800×600 | 480 000 | выбор для Telegram и Drive |
| XGA | 1024×768 | 786 432 | больше деталей |
| SXGA | 1280×1024 | 1 310 720 | детальные фото |
| UXGA | 1600×1200 | 1 920 000 | максимум (2 Мп) |
Конфиг, что просто работает
Собери вместе — и получишь маленькое, чёткое, быстро уходящее фото, повседневный сетап ESP32-CAM:
#include "esp_camera.h"
camera_config_t config;
// ... конфиг пинов вашей платы ESP32-CAM ...
config.pixel_format = PIXFORMAT_JPEG; // сжато → мало и быстро слать
config.frame_size = FRAMESIZE_SVGA; // 800×600 — золотая середина IoT
config.jpeg_quality = 10; // 0..63, меньше = лучше (и больше)
config.fb_count = 1; // один буфер кадра — экономит RAM
esp_camera_init(&config); Дальше — под задачу: детальные фото → UXGA + качество 10; Telegram / Google Drive → SVGA + качество 10 (лучший универсал); быстрый мониторинг → VGA + качество 12. Больше разрешение — больше деталей, но крупнее файл и дольше отправка. И помни: OV2640 нужна ESP32 с PSRAM, чтобы буферить крупные кадры.
Показать поток вживую? Отдай его с платы в веб-дашборде.