#1 2020-12-30 17:56:13

YK
Учасник
Зареєстрований: 2020-02-26
Повідомлень: 27

ESP32 Camera , что удалось выжать из модуля

Решил выжать па максимуму из модуля ESP32 Cam.
Как известно, он построен на базе Wrower и имеет в отличие от обычного ESP32 дополнительную Flash память 4Мб (PSRAM)
Соответственно можно уже делать минимальную обработку снимков

Итак сначала:
За основу взять проект https://robotzero.one/esp32-face-door-entry/ , по этой ссылке детальная инструкция как прошивать ESP32 Camera
с помощью Arduino. Соответственно проект сохранил все свои особенности и может действительно открывать двери на определенные лица

Но я решил пойти дальше и использовать максимум возможностей
1. Управление Серво приводами по вертикали и горизонтали. Т.е. если на камеру навесить на серво приводы. Через встроенный Web интерфейс
можно управлять ими.

2. В случае если Лицо распознано, то модуль может поcсылать определённый RF 433. Через  подключенный RF433 Transmitter. Соотв. расширяются возможности интеграции с существующими замками. Уже не нужно управлять GPIO, достаточно послать сигнал. Также может быть удобно и для монтажа и развязки...

3. Пожалуй самое главное, научил камеру распознавать движение: Motion Detection. Это была пожалуй самая интересная часть как обойти все баги и лимитации предоставленного API. Решение оказалось интересное, в отличие от найденных аналогов в интернете.
Основной проблемой было то что, камеру можно инициализировать только один раз, и при  инициализации нужно задать желаемый формат. Для определения движения конечно надо сравнивать RAW data (BMP) и тут конечно вопрос. если постоянно получать данные RAW, то уже jpeg не получишь, соответственно отпадает возможность сделать нормальный capture и отправить его на e-mail
Поэтому попробовал и о чудо получилось быстро и изящно. Получаем с камеры данные в формате JPEG. Выигрываем в скорости. Т.к. обмен с камерой не очень быстрый, а данном случае модуль уже кодирует изображение и передает на ESP сжатое.
Далее конвертируем его в BMP, уже силами ESP32 ну и дальше техника сравнить два снимка и понять что было движение...
Вообщем встроенной PSRAM хватило вплоть до разрешений  FRAMESIZE_UXGA    // 1600x1200.
Т.е. можно уже жучков заметить....


4. Решил воспользоваться уже новыми свойствами и сделал интеграцию с Apple Home Kit. Apple теперь видит камеру как датчик движения и можно например с помощью встроенных сценариев уже включать свет в комнате в случае определения движения

5. Показалось мало и решил еще финально добавить отсылку почты со скриншотом, в случае определения движения. Здесь был очередной Challenge... Встроенные библиотеки WiFiClientSecure .При установлении SSL/TSL соединения требуют порядка 70-100 кб свободной памяти для handshake. С помощью ардуино ну никак не удалось заставить их использовать PSRAM. нашел много статей в инете, но все какие то WORKAROUND, и то для esp-idf. кстати параметры SDK и прекомпилинные библиотеки и содержат слово WORKAROUND в своих названиях.
Вообщем не получилось, да и бросил это, иначе проект тяжело переиспользовать. Проблема решилась путем остановки Apple Home Kit сервер и HTTP server, памяти хватило... Т.е. перед отсылкой все останавливаем. Отсылаем и заново запускаем.


Ну наверное уже все выжал из модуля. Вписался в OTA partition,и скетч занимает 99% из 100%.

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

Кому интересно смотрите
https://github.com/Yurik72/ESPHap/tree/master/examples/ESPHAPCamera

Неактивний

#2 2023-09-19 19:09:35

Віктор382
Гість

Re: ESP32 Camera , что удалось выжать из модуля

Добрый день, а хватит ли памяти добавить к веб интерфейсу включения и выключения ir светодиодов и таймер Например( вкл светодиодов 20:00, выключения 8:00?

#3 2023-09-20 21:37:20

Віктор382
Гість

Re: ESP32 Camera , что удалось выжать из модуля

Добрый день, а хватит ли памяти добавить к веб интерфейсу включения и выключения ir светодиодов и таймер Например( вкл светодиодов 20:00, выключения 8:00?

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму