• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP32 Camera, выжимаем по максимуму (Face Recognition, Motion Detection, Apple Home)

yurik72

Member
Решил выжать па максимуму из модуля 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%.

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

Кому интересно смотрите
 
Сверху Снизу