ESP32-CAM датчик движения HC-SR501 Телеграм

ESP32-CAM датчик движения HC-SR501 Телеграм

В этом примере я покажу как совместить датчик движения HC-SR501 с камерой  на ESP32-CAM, делать фотографии при обнаружении движения и отправлять их в Телеграм.
Так как видео про камеру на ESP32 набирают на моём канале больше всего просмотров и комментариев, я продолжу эту тему. И у меня есть ещё как минимум 5-6 нестандартных примеров использования ESP32-CAM. И пока просмотры не иссякнут я буду делать про неё видео.

Приветствую всех моих подписчиков и гостей канала.
В этом видео я покажу как можно сделать фотоловушку. И не важно на кого вы охотитесь, на невинных птичек и животных или собрали охранную систему для того чтобы знать, что было, пока вас не было. А поможет нам в этом ESP32-CAM – это модуль на основе платы ESP32 с камерой OV2640 и датчик движения HC-SR501.
Кстати в одном из следующих видео я покажу как сделать Face Detect, то есть камера найдёт лицо в кадре и если оно есть в базе, то определит кому оно принадлежит.

Это продолжение вот этих видео, и поэтому если вам что-то не понятно или вы не знаете как установить модуль с камерой, то посмотрите эти видео там вы найдёте ответы на все вопросы.

А мы продолжим.
В этом примере я покажу как совместить датчик движения с камерой и делать фотографии при обнаружении движения. Фотографии не будут сохраняться на SD карте, как это было в прошлых примерах, а сразу будет отправляться в чат бот в телеграм. Вот для этого я и сделал 2 видео как создать канал и бот в Телеграм. Жалко что его так мало посмотрели. Ну всё равно, если вам что-то не понятно то посмотрите их. Там рассказано как получить Токен и ID канала. Они нам сегодня понадобятся.

Принцип работы программы такой. Модуль ждёт сигнала от датчика движения.  Вначале при подаче питания возможно он сработает несколько раз. Это обусловлено тем, что датчик движения настраивается и это может занять время до 1 минуты. Если вам, что не понятно или вы не знаете как работает датчик движения, то обязательно посмотрите это видео, там рассказано про различные виды подключения датчика. Как с Ардуиной так и без неё. Датчик может работать самостоятельно. Как только датчик движения обнаруживает что что-то зашевелилось, то он подаёт сигнал плате ESP32. Этим сигналом будет 3.3 вольта с выхода датчика которые поступят на 13 вход ESP.

В предыдущем видео я ошибочно сказал, что вы можете отключить работу светодиода. Это возможно только при работе программы без использования SD карты. Светодиод на плате установлен на GPIO4  и для работы SD также нужен этот вывод. Включается он не для того чтобы работать как подсветка, а он показывает что идёт запись на карту. Так что если хотите сделать систему не видимой, не используйте SD карту, а отправляйте фото на сервер, почту или как сейчас в телеграм, или просто выпаяйте светодиод.

А ещё вы можете подключить несколько инфракрасных светодиодов подключив их к GPIO4 и они помогут сделать фотографии лучше в тёмное время суток или при полной темноте.
Как вы уже наверное поняли я показываю здесь сравнение вывода сообщений на Телеграм установленный на компьютере и на телефоне. Вся разница только в том, что в телефоне на каждой фотографии показано время. И туда и сюда фото приходят одновременно.

Схема соединения очень простая. Нам всего лишь надо подать 5 вольт питания на датчик движения и на плату ESP. Именно 5 вольт, не больше и не меньше. Хоть сама плата питается от 3,3 вольт, но было замечено, и не только мной, что при питании 3,3 вольта плата работает не стабильно. Я много читал об этом на форумах, так что если не хотите проблем, то лучше подавать именно 5 вольт.

Ну и на сладкое я оставил разбор скетча. Хотя до сих пор не понимаю зачем это делаю, всё равно это никто не смотрит.
В первых строчках как всегда подключаем библиотеки. Возможно у вас не будет установлена библиотека WiFIClientSecure тогда вам придётся её установить.
Затем идут настройки подключения к WIFI Надо указать название сети и пароль.
Теперь замените мой токен своим и Id канала тоже установите свой. Как их найти я рассказывал раньше.
Выход датчика движения подключаем к GPIO 13.

Теперь немного поговорим про камеру. У меня камера OV2640, и подключена к модулю AI-THINKER. Распиновка контактов вот такая.
У вас же может быть другая. В примере с библиотекой ESP32 есть пример Camera WebServer и в нём прописаны самые распространённые типы моделей, вам всего лишь надо будет раскомментировать свою. Контакты подключения прописаны в файле camera_pins.h Который так же как библиотеки подключается в скетче. Видите, здесь перечислены все модели что в главном файле и для каждой прописаны свои контакты. Если у вас что-то не так, то вы можете поправить значения здесь.

Функция setup у нас сегодня большая, здесь будет много строк кода.
ESP будет работать как станция, то есть мы не будем ничего выводить на станицу, иначе мы бы использовали сервер.

Соединяемся с WIFI сетью. Используя цикл WHILE мы будем ждать пока не соединимся с сетью, или пока не пройдёт 10 секунд, и по команде break не выйдем из цикла. Если всё прошло удачно, то вы увидите IP адрес который вам присвоили.

Если вы вылетели по break, то ESP перезагрузится и снова начнёт подключаться к сети. Если всё прошло хорошо, светодиод мигнёт 5 раз и программа продолжит работу дальше.
Конфигурацию и инициализацию камеры мы делали уже много раз ,поэтому пропускаем, если что не понятно, смотрите 2 предыдущих видео, или я думаю всё будет понятно и по комментариям в коде.

Цикл loop у нас небольшой. Если обнаружено движение,  мы вызываем функцию отправки фото в телеграм и передаём ей два значения, это токен и id канала. И останавливаем работы скетча на 10 секунд, что бы не было бесконечных отправок фотографий.

Эту функцию я построчно объяснять не буду. Главное просто понять, что она делает. В ней происходят разные проверки, например на работу камеры. Но главное в ней это проверить есть ли подключение и если есть, то сформировать текст сообщения по правилам API телеграм.

И наконец мы добрались до функции отправки сообщения в Телеграм. Из предыдущей функции мы получили все необходимые данные для отправки сообщения. Проверяем подключение к серверу API телеграм и по протокол https используя порт 443 передаём нашу фотографию используя метод пост. Ждём 10 секунд чтобы сообщение было доставлено и разрываем соединение. Снова переходим в loop и ждём когда будет новое движение. Надеюсь, что понятно объяснил.

На этом думаю, что можно закончить это видео. А как скоро выйдет новое – это всё зависит от вас.