Камера (обновлено: 12 Apr 2021, 13:34:51)

Использование ESP32 + камера

Доступ к изображению доступен через адрес  [IP]/cam в виде картинки и [IP]/camstream в виде потока, а так же доступна отправка изображения в Telegram, ICQ, MQTT и на любой веб сервер http запросом, в том числе и на Narodmon.ru. В Free режиме доступны только базовые функции опции.


Хотя опция может отправлять изображение сразу на все включенные опции (POST, Telegram, ICQ, MQTT) , но имеются ограничения по ресурсам и при нехватке ОЗУ может произойти отказ в отправке изображения или привести к сбоям, особенно при отсутствии на борту памяти PSRAM. Даже использование PSRAM не дает "свободу" - она не дает полную замену внутренней быстрой ОЗУ !!! 

Поддержка готовых плат ESP32-CAM (вариант 0), TTGO T-Camera(вариант 1), M5stack(вариант 2). Вариант выбирается в шестеренке опции. Сейчас существует множество готовых плат и иногда невозможно определить их название, для определения варианта расспиновки камеры в конце статьи есть таблица вариантов. Если там нет Вашего варианта - добавлю. Обращайтесь в чат или в обратную связь Не все платы имеют на борту память PSRAM !!!

Поддерживаются модели камер OV2640 (2мп), OV3660(3мп) и OV5640(5мп, не проверен). Поддержка устаревшей OV7725 возможна, но она не поддерживает jpeg сжатие и имеет максимальное разрешение 640х480.

Для успешного запуска и работы камеры требуется обеспечить модуль хорошим питанием и качественным подключением к источнику питания, используя качественные и желательно короткие провода !

Настройка камеры:

Image resolution - настройка разрешения камеры. На данный момент рекомендуемое максимальное разрешение 800х600, при включенной поддержке PSRAM максимальное разрешение доступно до 2560x1920 (зависит от модели камеры)

Buffer count - количество буферов для изображений, если нужен поток и больше fps включаем 2, при большем значении улучшение не значительное. По умолчанию 1. Использования нескольких буферов рекомендуется только если есть PSRAM.

Jpeg quality - качество jpeg изображения, доступно значение от 3 до 63. 3 - наилучшее, 63 - наихудшее. По умолчанию - 12.

Применение настроек происходит после их сохранения. Показывает статус работы камеры , возможно отображение ошибки во время инициализации камеры - требуется обновить страницу.

Из-за того, что камера использует много GPIO, то gpio 18 и 19 обычно заняты и safe mode в данном случае включить можно только используя опцию Safe GPIO.

Отправка изображения по событию

Для отправки изображения требуется вызвать соответствующий GPIO из систем модуля, начальный GPIO можно изменить в шестеренке, если есть конфликт с другими GPIO:

190 - отправка изображения на все подключенные сервисы модуля;

191 - отправка изображения POST запросом;

192 - отправка изображения в Telegram;

193 - отправка изображения в MQTT;

194 - отправка изображения в ICQ;

195 - сохранение изображения на SD карту(в разработке).

Например данные GPIO можно указать в планировщике заданий, Logic2, Interpreter, или в опции работы с прерывании совместно с датчиком движения.

Открытие изображения через веб

Открыть изображение можно по ссылке [IP]/cam как картинку и [IP]/camstream в виде потока. При открытии потока веб интерфейс будет занят и не доступен.

При включении опции "Новый вариант веб сервера" возможно улучшение или ухудшение работы вывода потока(не протестировано)

Сохранение изображения на SD карту

Опция в разработке

Отправка изображения в Telegram

В настройках опции камеры можно настроить интервал отправки, если этот параметр равен нулю, то отправка не происходит.

Доступен запрос изображения по команде cam, если включен прием команд в опции Telegram. Описание настройки опции находится в документации по Telegram.

Отправка изображения в ICQ

В настройках опции камеры можно настроить интервал отправки, если этот параметр равен нулю, то отправка не происходит.

Доступен запрос изображения по команде cam, если включен прием команд в опции ICQ. Описание настройки опции находится в документации по ICQ.

Отправка изображения в MQTT

Модуль отправляет изображение в топик login/hostname/cam в бинарном формате. Приложение, должно уметь его читать. Например MQTT Dash.

В настройках требуется указать интервал отправки, если он равен 0, то отправка не включена.

Отправка изображения POST запросом на сервер

Опция отправки изображений может отправлять текущую картинку на любой сервер, поддерживающий POST загрузку, например на narodmon.ru

В настройках требуется указать интервал отправки, если он равен 0, то отправка не включена.

URL address - адрес скрипта на сервере, куда мы отправляем картинку. Доступна передача GET параметров в том числе используя метрики.

Name post - имя параметра на сервере.


Параметры настройки для сервиса Narodmon.ru

Image interval send - интервал отправки, Минимальный интервал 900 секунд (15 минут). Меньший интервал игнорируется. При слишком частых запросах возможна авто блокировка по IP адресу

URL address - narodmon.ru/post

Name post - ключ API, полученный на сайте при регистрации камеры


Пример PHP скрипта загрузки файла

$uploaddir = '/hdd/upload/'; // адрес для сохранения файла
$img="postname"; // Name post

$uploadfile = $uploaddir . basename($_FILES[$img]['name']);
if (move_uploaded_file($_FILES[$img]['tmp_name'], $uploadfile)) {
    echo "OK.\n";
} else {
    echo "error!\n";
}

Классическая ESP32-CAM (вариант 0):


Данная плата содержит память PSRAM, SD кардридер , а так же LED светодиод. На борту нет преобразователя USB-UART ! Размер платы 25х40мм На GPIO 4 подключен светодиод. 16 и 17 GPIO заняты под PSRAM. Запуск в режим программирования производиться путем замыкания GPIO 0 до запуска питания (рекомендуется)!


Варианты распиновки камер:



Вариант 0Вариант 1Вариант 2Вариант 3
PWDN
32НЕТНЕТ26
RESET
НЕТНЕТ15НЕТ
XCLK
042732
SIOD
26182513
SIOC
27232312
D7
35361939
D6
34373636
D5
39381823
D4
36393918
D3
2135515
D2
1926344
D1
18133514
D0
534175
VSYNC
2552227
HREF
23272625
PCLK
22252119