Отправка фото по запросу, отправка фото при срабатывании датчика движения, мониторинг температуры и влажности, удаленное управление фотовспышкой и PIR сенсором через мессенджер Telegram. Проект можно собрать за вечер.
Для возможности установки на штатив от фотоаппарата и крепления внешней антенны я использовал 2 алюминиевых уголка купленных в Леруа Мерлен.
Как и в прошлое лето, конструкция использовалась для присмотра за домашними котами, которые остались на 8 дней дома одни.
Примеры фото с фотоловушки на ESP32-CAM отправленных при срабатывании датчика движения:
Примерно в середине периода нашего отсутствия, приходил наш друг кошатник, который поменял воду и накормил влажным кормом.
Компоненты и модули:
- внешняя Wi-Fi антенна
- датчик температуры и влажности SHT3X
- датчик движения hc-sr501
- кнопка
- клеммник
- разъем PBS-1x20 (PBS-20) шаг 2.54 мм
- USB-UART преобразователь для прошивки платы
- источник питания с напряжением 5V и выходным током 1-2А
Разъем XS1 предназначен для прошивки платы, и отладки кода через COM порт. Кнопка BT0 предназначена для перевод платы ESP32 в режим прошивки. (отключаем питание, нажимаем кнопку, подаем питание, отпускаем кнопку, прошиваем плату, снова снимаем и подаем питание)
Подробнее читайте тут:
Переходник, который есть у меня, позволяет при этом обходиться без дополнительных проводов (правда он довольно дорогой).
У вас скорее всего другой переходник - поэтому XS1 лучше распаять именно так - как удобнее будет им пользоваться.
Встроенная антенна на плате ESP32-CAM "ни о чем". У меня соединение рвалось, а сами фото уходили очень долго (точка доступа правда находится в другом конце квартиры) - поэтому установка внешней антенны крайне желательна. Для этого плату ESP32-CAM придется доработать с помощью напильника паяльника. Подробнее читайте тут:
В отличии от прошлого проекта, где фотографии отправлялись на почту:
флеш-карта в этом проекте не используется. Фотографии напрямую из оперативной памяти отправляются в мессенджер Телеграмм. Поэтому пир-сенсор и датчик температуры/влажности подключены на свободные контакты ESP32 CAM.
- PIR Motion Sensor: GPIO 13
- SHT3X: GPIO 14 (SDA), GPIO 15 (SCL)
Также появляется возможность использовать встроенный в плату ESP32 CAM светодиод фотовспышки. (GPIO 4).
Дополнительный встроенный в плату светодиод (с обратной стороны платы) также используется в данном проекте (GPIO 33) - он гаснет каждый раз когда срабатывает датчик движения.
Как это работает?
Для управления потребуется создать бота в Telegram.
Для начала управления и обзора доступных команд можно отправить этому боту команду /start
Для того, чтобы запросить фото отправляем команду /photo
Команда /flash включает/выключает встроенный светодиод фотовспышки.
Команда /readings позволяет запросить температуру, влажность, состояние светодиода вспышки, состояние датчика движения и паузу через какое время присылать сообщения.
Если котики начнут выяснять отношения под камерой - Телеграмм будет завален сообщениями, что в поездке не очень удобно. Величина паузы по умолчанию 15 секунд (не более 4-х сообщений в минуту).
Настраивается командами
/pirup (+5 секунд)
/pirdown (-5 секунд)
После выполнения команды
/pir
будет активирован датчик движения, и каждый раз при обнаружении движения ESP32 CAM будет отсылать в Телеграмм фото. В поездке я как правило на ночь отключал датчик движения, а утром включал - вы можете сами придумать подходящий сценарий использования этого функционала)
Как это прошить?
Код написан в среде Arduino IDE:
- установить поддержку плат ESP32;
- установить библиотеки Universal-Arduino-Telegram-Bot-master, Adafruit_SHT31; (есть в архиве в конце этой статьи)
- установить библиотеку ArduinoJson (через меню "Управлять библиотеками")
- создать телеграмм бота и получить chatId и BOTtoken
Инструкция по созданию телеграмм бота есть на этом сайте (ENG)
Для проекта опубликованного на данном ресурсе потребуется только ESP32-CAM. Для начала рекомендую собрать его, и уже потом переходить к пайке датчиков движения и температуры.
В скетче также указываем параметры для подключения к домашней сети Wi-Fi: ssid и пароль
const char* ssid = "";
const char* password = "";
String chatId = "";
String BOTtoken = "";
А полный код данного проекта качайте по этой ссылке:
Полный список всех статей канала доступен по этой ссылке:
Всем удачи!