Видеорегистратор на ардуино своими руками

Добавил пользователь Владимир З.
Обновлено: 19.09.2024

Статья посвящена подключению и работе с серийным модулем TTL камеры и Arduino.

Камера работает по стандартам NTSC. Подобные модули отлично вписываются в проекты для реализации фотографии и видеострима. Кроме того, обычно они имеют встроенную возможность настройки яркости и насыщенности цветов, настройки авто-контраста и авто-яркости, дают возможность отслеживать движение.

Описание и технические характеристики камеры

Хотелось бы более детально остановиться на том, как именно подобные модули обеспечивают и фото и видеосъемку. Изначально камера была разработана с целью наблюдения. То есть, основная задача была стримить видео с пина Video (в черно-белом цвете) и обрабатывать команды по серийному протоколу связи. С помощью серийного протокола можно запросить у модуля камеры остановить кадр видеосъемки и сохранить полученный кадр в формате JPEG. Например, модуль камеры в стандартном режиме работы будет стримить видео. Когда камера обнаружит движение, будет сделано фото, которое сохранится на карту памяти для дальнейшего анализа.

Видеокамера для Arduino

Разрешение на модуле камеры не большое – максимальный размер фото 630х480 пикселей. При этом камера чувствительна к инфракрасному излучению, благодаря чему обнаруживаются изменения в цветопередаче. Основная причина этих недостатков – модуль камеры предназначен для наблюдения, а не качественной фотографии. Существуют модули и с другими параметрами. Рассматриваемый нами – один из самых лучших по своим техническим характеристикам.

Технические характеристики модуля камеры

  • Размер модуля: 32 м x 32 мм : CMOS 1/4 дюйма
  • Количество пикселей: 0.3 M
  • Размер пикселя: 5.6 мкм * 5.6 мкм
  • Формат на выходе: Стандартный JPEG/M-JPEG
  • Баланс белого: автоматический
  • Экспозиция: автоматическая
  • Коэффициент передачи: автоматический
  • Динамический диапазон: 60 Дб
  • Максимальное аналоговое усиление: 16 Дб
  • Скорость кадров: 640*480 30 кадров в секунду
  • Режим сканирования: прогрессивное сканирование
  • Угол обзора: 60 градусов
  • Расстояние наблюдения: 10 метров, максимум 15 метров (настраиваемое)
  • Размер изображения: VGA (640*480), QVGA (320*240), QQVGA (160*120)
  • Скорость передачи данных: по умолчанию 38400 (В даташите указано, что вы можете менять скорость с помощью соответствующих команд, но на практике это не работает)
  • Потребляемый ток: 75 мА
  • Рабочее напряжение: постоянный ток +5В
  • Связь: 3.3В TTL (три проводника TX, RX, GND)

В качестве примера работы видеокамеры ниже приведены две фотографии: первая – в комнате в солнечный день и вторая – на улице в дождливый.

Фото с видеокамеры в помещении
Фото улицы с видеокамеры в дождливый день

Подключение камеры

Как правило модуль продается без коннекторов, так что придется запаять проводники к предусмотреным пинам. Хорошая новость: контакты находятся на достаточно большом расстоянии друг от друга (около 2 мм). Можно использовать достаточно толстый проводник и жало для распайки.

Если вы не планируете использовать возможности видеосъемки, можно использовать четыре провода. Мы используем красный для пина +5 В, черный для Земли, белый для пина RX (данные, которые поступают на камеру от Arduino) и зеленый для пина TX (данные, которые поступают с камеры).

Видеокамера для Arduino вид спереди
Видеокамера для Arduino четыре коннектора

Если вы планируете использовать NTSC видео-выход для подключения к телевизору или монитору, припаяйте еще один черный проводник к пину Земля и желтый к пину CVBS.

Видеокамера для Arduino с NTSC
Видеокамера для Arduino в корпусе

Если у вас водонепроницаемая модель камеры, в ней уже будут предусмотрены следующие коннекторы:

  • Красный подключен к +5 В;
  • Черный подключен к Земле;
  • Зеленый – RX;
  • Белый – TX;
  • Желтый – сигнал NTSC видео;
  • Коричневый – Земля NTSC видео.

Проверка работоспособности камеры

Один из самых быстрых методов проверки работоспособности камеры – использование NTSC видео выхода для подключения. В этом случае при настройке параметров изображения и фокусировки вы моментально увидите результат. В комплексе с программой CommTool, которую мы рассмотрим ниже, это идеальный метод для ознакомления с основаи работы с модулем камеры и Arduino.

Для подключения к большинству телевизоров и мониторов нужен RCA джек. С этой целью мы припаяли RCA выход к камере. Черный проводник подключен к Земле, а желтый – к сигналу. Купить коннекторы RCA типа можно в любом магазине радиотехнических деталей.

К сожалению, перейти из режима NTSC в режим PAL невозможно.

Подключите кабель NTSC к монитору и подключите красный и черный кабели к источнику питания +5 В. На мониторе тут же появится черно-белое изображение!

Видеокамера подключенная к Arduino
Видеокамера Arduino - вывод через RCA джек

Использование CommTool

Для использования windows-приложения Comm Tool, необходимо наладить обмен данными с камерой по серийному протоколу. Мы предлагаем два варианта. Первый – использовать переходник для FTDI или какой-то USB/TTL конвертер. В случае с Arduino вы можете использовать серийный чип (чип FTDI), загрузив следующий скетч на Arduino:

Примечание: Этот метод сработает только на Arduino с отдельным USB-интерфейсом, вроде Uno. С платами Leonardo так не получится!

Если вы используете Leonardo, Micro, Yun, или другие контроллеры на основании ATmega32U4, используйте этот Leo_passthru скетч вместо "пустого" скетча.

//Обеспечивает передачу данных по серийному протоколу при

//использовании плат Arduino Leonardo в Windows.

// Красный подключен к +5 В

// Черный - к земле

// Зеленый - к цифровому пину 0

// Белый - к цифровому пину 1

Теперь подключите камеру к Arduino следующим образом:

Подключение видеокамеры к Arduino

На водонепроницаемых камерах белый и зеленый провода часто меняются местами! Так что учтите это при подключении. Красный коннектор должен все равно идти к +5 В, а черный – к Земле.

Обратите внимание, что при подключении камеры к Arduino используется резистор на 10 кОм. Питание логики камеры 3.3 В, так что опустить напряжение с 5 В до 2.5 не такая уж плохая идея. В обычном режиме на выходе с цифрового пина 0 формируется сигнал HIGH, который соответствует 5 В. При нашем подключении, с учетом сопротивления резистора, подключенного к входному сигналу (белый проводник), напряжение не превысит 3.3 В.

Теперь загрузите и установите программное обеспечение VC0706 CommTool.

Запустите программу и выберите COM порт, к которому подключена Arduino.

Запуск VC0706 CommTool

После этого Open порт и нажмите Get Version

Обратите внимание, что отобразилось VC0703 – Почему DSP запрограммирован под другим номером – точно не известно. В любом, случае, ответ мы получили.

Следующая кнопка – рядом с FBUF CTRL.

Панель управления в VC0706 CommTool

Это новая панель, которую мы можем использовать, чтобы напрямую загрузить рисунки с камеры.

После этого нажмите Read (рядом с Sel File), чтобы считать кадр с камеры.

Считывание изображения с камеры

Вот и все! Теперь вы с легкостью можете загружать фото с камеры. Чтобы сделать новый снимок, нажмите Resume. После этого нажмите Stop CFbuf для нового фото. Кроме того, вы можете выбрать Compression Ratio и выбрать качество снимка. Учтите, что время обработки тоже изменится. Простого пути изменения размера фотографии в этой программе нет, но мы можем это сделать в скетче Arduino.

Вы могли заметить, что есть выпадающий список для изменения скорости передачи данных. По умолчанию скорость выставлена на 38400.

Несмотря на то, что в программе есть эти настройки, даже если они отработают, после перезагрузки камеры придется выставлять их заново. В некоторых случаях, при изменении скорости передачи данных в программе, камеры отключаются. Так что пользоваться этими настройками не рекомендуется.

Настройка считывания изображения с камеры

Стоит обратить внимание на кнопку Image Property, с помощью которой можно настроить камеру. С помощью ползунов можно в режиме реального времени подстраивать изображение, которое выводится на вашем подключенном мониторе.

Настройка считывания изображения с камеры в режиме реального времени

В программе куча настроек. Рекомендуем ознакомится с их перечнем ниже и не менять их, пока вы на 100% уверены, что это за настройка и зачем она вам нужна.

  • Config – смотрите выше.
  • Get Version – смотрите выше.
  • R/W Data – используется для передачи данных на процессор DSP чипа. Не стоит менять эту настройку без стопроцентного понимания, зачем это необходимо, так как можно получить конфликт с камерой.
  • Color Ctrl – служит для выбора цвета, черно-белого режима или авто выбора (вероятно, основанного на условиях освещенности). Автоматический режим отлично отрабатывает, так что можно использовать именно его.
  • Mirror Ctrl – скорее всего – переворот изображения (зеркальный эффект).
  • Power Ctrl – проверка питания. Можно настроить автоматический режим отключения, когда нет движения.
  • Timer Ctrl – в DSP есть встроенный RTC, который можно настроить. Однако батарейки нет, так что после перезагрузки настройки собьются.
  • AE Ctrl – управление авто контрастом/яркостью. По умолчанию настройки установлены на автоматический выбор для сьемки в помещении и на открытом пространстве.
  • Motion Ctrl – настройки системы обнаружения движения. Можно с ними поиграться и протестировать. Есть скетч для Arduino для обнаружения движения объектов, который можно использовать.
  • OSD Config – протокол, который, судя по отзывам, не поддерживается большинством камер :(
  • Image property – смотрите выше.
  • Gamma – точная настройка гаммы CMOS сенсора. Настройки по умолчанию хорошие. Поэкспериментировать можно.
  • SPI Flash – скорее всего – считывание и запись данных в SPI хранилище.
  • Other Ctrl – возможно, для цифро-аналогового преобразования.
  • Up/Down Load – считывание и запись данных на флэш-память. Вероятно, для загрузки нового DSP кода.
  • System Reset – перезагрузка модуля. Актуальна, когда модуль перестает отвечать.
  • FBuff Ctrl – смотрите выше.
  • Zoom Ctrl – в модуле есть встроенный 'Pan Tilt Zoom', НО он рассчитан только для видеосьемки. С фотографиями отрабатывать не будет. Можете поэкспериментировать с PTZ, может оказаться полезным.

Использование видеокамеры с Arduino

Давайте подключим камеру к нашему микроконтроллеру (в данном случае - Arduino). Подключение похоже на предложенный выше вариант. Для подключения используем два цифровых пина и серийный протокол для обмена данными с модулем. Для сохранения снимков вам понадобится карта памяти. Можно использовать дополнительные microSD модули или шилды.

Подключите видеокамерукамеру к Arduino, как показано на рисунке ниже:

Подключение видеокамеры к Arduino Uno

В водонепроницаемых камерах белый и зеленый проводники могут располагаться наоборот! Так что проверьте это перед подключением. Красный кабель идет к +5 В, черный – к Земле.

Переименуйте распакованную папку Adafruit_VC0706. Проверьте наличие файлов Adafruit_VC0706.cpp и Adafruit_VC0706.h. Переместите папку с библиотекой Adafruit_VC0706 в папку /libraries/ folder. Возможно, вам надо будет создать подпапку в библиотеке. Перезагрузите Arduino IDE.

Первый снимок

Что ж, теперь можно делать ваш первый снимок. Откройте Arduino IDE и выберите скетч File-> Examples-> Adafruit_VC0706-> Snapshot. Загрузите его на Arduino. Откройте окно серийного монитора, в котором вы увидите как сделается фото 640x480 и сохранится на карту памяти microSD. Карту можно извлечь и перенести с нее данные на ваш компьютер.

Данные с видеокамеры в серийном мониторе Arduino IDE

Ниже показаны несколько настроек, которые можно поменять для работы с вашей видеокамерой. Первое – замена пинов, к которым подключена камера. Можно использовать два любых цифровых пина. Замена проводится в следующей строке:

// This is the camera pin connection. Connect the camera TX

// to pin 2, camera RX to pin 3

NewSoftSerial cameraconnection = NewSoftSerial(2, 3);

Можно изменить разрешение снимка на 160x120, 320x240 или 640x480. Для этого используются следующие строки:

// Set the picture size - you can choose one of 640x480, 320x240 or 160x120

// Remember that bigger pictures take longer to transmit!

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

Обнаружение движения

Отличная опция, которая есть в камере – возможность обнаруживать движение. Работает эта фукция по принципу обнаружения изменений в кадрах и подаче соответствующего сигнала на микроконтроллер. Так что в своих проектах можно немного сэкономить и не использовать дополнительный пироэлектрический датчик движения.

Загрузите скетч из File-> Examples-> Adafruit_VC0706-> MotionDetect на Arduino. Как только он загрузится, будет сделан снимок. Подождите несколько минут и помашите рукой перед камерой, будет сделано еще одно фото.

Данные с видеокамеры при обнаружении движения

Включать и отключать функцию обнаружения движения можно с помощью вызова setMotionDetect()

// Motion detection system can alert you when the camera 'sees' motion!

cam.setMotionDetect(true); // turn it on

//cam.setMotionDetect(false); // turn it off (default)

Вам надо подать запрос на камеру при обнаружении движения, вызвав motionDetected() – в результате вам вернется true, если движение было и false, если не было.

Ручная настройка фокуса

В камере не предусмотрен автофокус, есть только ручной режим. С одной сторы это хорошо, с другой – плохо. Камера поставляется с хорошей глубиной фокуса, которая подходит для большинства задач. Если вы планируете настраивать фокус, очень рекомендуем предварительно подключить модуль камеры к монитору, как мы это делали выше. Так вы сможете в режиме реального времени отследить изменение настроек. После настройки, объектив затягивается винтом.

Ручная настройку фокуса на видекомере для Arduino

Если у вас влагозащищенная камера, для настройки придется снять корпусную часть и только потом провести настройку.

Дополнительные вопросы-пояснения

Как можно изменить скорость передачи данных на модуле видеокамеры?

Возможно, вы обратили внимание, что есть командная строка для изменения скорости передачи данных. По умолчанию, значение установлено на 38400.

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

С какой скоростью можно делать снимки?

Рассмотренная в данной статье камера достаточно медленная. Для передачи изображения понадобится около 30 секунд. Обратите внимание, что это характеристика, которая отвечает за обработку и сохранение снимка в том числе. Для анализа в режиме реального времени подобной задержки нет.

Почему такие бледные цвета? Снимки похожи на монохромные.

Рассмотренный модуль был разработан для режима наблюдения, чувствительность видеокамеры смещена к инфракрасному диапазону. Это значит, что объект, который отражает или излучает инфракрасные волны будет казаться ярче.

Для более естественной цветопередачи можно использовать дополнительные инфракрасные фильтры.

Есть ли альтернативные библиотеки для камеры и Arduino?

Например, есть еще одна библиотека, которую можно тоже скачать на Github

Так что экспериментируйте, тестируйте и развивайте свои проекты на Arduino.



В качестве преамбулы скажу, что поскольку, подобная статья уже была, я по-началу и не собирался писать о камере на хабр.
Камера была сделана, просто ради интереса, тренировки навыков и отработки технологии удалённого управления физическими объектами.
Немного позже использовал эту систему как наглядный пример, сопровождающий обзор, на другом ресурсе (а фактически, в качестве чита что-бы подтянуть голоса). Это был настоящий бета-тест, который выявил кучу недоработок. За это огромное спасибо всем неравнодушным, помогавшим кто советом, а кто и куском кода.

При этом, посетители, которые игрались с камерой, помимо того, что не проходило и часу чтобы не помянули хабр, так ещё и начали активно интересоваться устройством всего этого дела, техническими деталями, программной реализацией и конечно же стоимостью.

Вот это всё и сподвигло меня на статью. А чтобы не повторюшничать, я и решил заостриться на стоимости, т.к. у автора предыдущего топика на эту тему, насколько я помню, итоговая стоимость вылилась во что-то в районе 5000р.

О том какова стоимость моей поделки: читаем ниже.

Пройдём по ценам*

* все цены даны со скидками. О скидках — отдельно, пожже.

  • Arduino Uno (или nano) — 15.29$
  • Сервопривод (рулевая машинка) SG90 2х2.37$ = 4.74$
  • Вебкамера 3.01$
  • Экран от Nokia 5110 — 250р (в комплекте с самой Нокией и блоком питания, куплено пару лет назад, будем считать, что именно для этой цели, реально можно найти уже вдвое дешевле, или вообще на халяву)
  • MegaShield v4 к Arduino — 5.86$
  • Проводки-коннекторы — 2.86$ (40 штук за эту цену, реально использовано 7)
  • Сверхяркий сверхсиний сверхтодиод для подсветки экрана — 5р/шт (лучше 4шт., у меня сделано неправильно)

Всего: 1300р

О реализации

Всё делалось с нуля. Повторять то, что уже было — я не стал, во-первых из соображений тренировки, а во-вторых Ethernet-модуля у меня на тот момент не было, я решил что это всё слишком сложно (там был завязан MySQL) и это решение мне однозначно не подойдёт.

Довольно лирики!

Как выглядит

Выглядит всё более чем скромно

Работает примерно так:


Ардуина, если кто не видел


Мегашилд с проводками


LCDшка


Она же вид сзади (пины и кондёр)


В сборе


В сборе 2

Колхоз — система проводков и верёвочек (крепление камеры)




Куда же без него

Как устроено аппаратно

Вебкамера подлючена по USB к компьютеру.
Arduino тоже подключена к компьютеру по USB.
Все внешние устройства, ввиду исключительно малого потребления тока, подключены напрямую к Arduino, работает круглосуточно уже полтора месяца, с онлайном 10 пользователей в момент наименьшей нагрузки.

Как работает программно

На стороне клиента чистый веб-интерфейс, без всяких плагинов и примочек. Только html, css, и javascript (+ajax).

Система выдержала все нашествия и рейды, а так же онлайн более 120 пользователей.
Были случаи отказа управления, которые случались из-за моих недоработок в программе-прокси, в частности из-за недостаточной обработки ошибок, в то время как програмная часть со стороны Апача и Ардуино держалась достойно.

Будьте внимательны к мелочам

Оставшиеся недоработки

О скидках

Ссылки

Камера, работающий экземпляр, для тех кто ещё не видел и не наигрался
Топик, в котором ссылку на камеру слили на хабр раньше времени
RAMDisk
juction
Исходники (упрощённые, во избежание) клиентской части, серверной (php) и программы web-arduino-прокси (VB 6.0)



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

… и растянуть процесс съёмки во времени.

Хе, многие уже и сами догадались, эта техника съёмки называется timelapse (замедленная покадровая съёмка). То есть это никакая не видеосъёмка, а фотосъёмка, в результате которой создаётся видео.

Признаюсь, изначально я не планировал делать замедленную съёмку. Просто хотел сделать для своей ардуины регистрацию событий, в том числе и с фотографиями. Ну а потом пошло-поехало. Если мой читатель не занимается разработкой, то может просто посмотреть полученный результат (зайти из под Chrome).

  • плата Arduino Mega;
  • модуль JPEG камеры;
  • служебная программа и база данных MongoDB;
  • WEB сервер для размещения HTML файлов;

Когда ардуина посылает свои данные на сервер, то к каждому параметру прикрепляется своя метка времени.
Отправили параметр — добавилась запись в хранилище, ещё два раза отправили — сохранились ещё две записи.

Вся работа с хранилищем ведётся через служебную программу (далее посредник), которая запускается на стационарном компьютере. При этом, сам WEB сервер отдаёт только статичный контент. То есть, все клиенты ведут информационный обмен через служебную программу посредника, аналогично популярному протоколу MQTT. Основное отличие от MQTT будет в том, что этот посредник напрямую работает с хранилищем данных, обеспечивая работу с историческими данными. Этот факт упрощает схему взаимодействия, и не требует дополнительного сетевого трафика для сохранение данных.

Для удобства разработки своих веб приложений, я создал javascript библиотеку с таким API:

Так создаётся клиент для работы с сетевым хранилищем:


Пока не сложно? Дальше будет потрудней.

Структура запроса к хранилищу:


Ещё не запутались?

Тогда вот структура ответа на запрос:


Ага, уже сложней?

Вы думаете это всё? К сожалению, нет.

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

Уфф, самое сложное уже позади.

А так выглядит сама отправка запроса:


Наконец мы подошли к самому монтажу видео.

Для создания видео я использовал javascript библиотеку Whammy, здесь подробнее.

Функция, которая создаёт видео:

Не имея цельной документации, могу предложить мои предыдущие статьи.
Статья 1
Статья 2


К старту курса по разработке на С++ рассказываем, как самостоятельно собрать IP-камеру с обнаружением движения. За подробностями приглашаем под кат, где вы найдёте много фотографий и видео на Youtube-канале автора, за которым наблюдают более 30 000 человек.

Хотя не все хорошие WiFi камеры наблюдения дороги, большинство из них стоят немало, особенно если брать для дома сразу несколько. Сегодня мы за небольшие деньги (около 20 долларов, цена зависит от того, что у вас уже есть) сделаем беспроводную камеру с модулем ESP32-CAM AI thinker WiFi (одной из лучших макетных плат для камер), чтобы наблюдать за происходящим в доме или снаружи.

Введя уникальный IP-адрес в браузере, с этой камеры можно войти на веб-сервер и просматривать видео, а также менять настройки на боковых панелях управления. Благодаря коду, когда что-то или кто-то движется перед камерой, начинается запись, а записанные видеофайлы .MJPEG сохраняются на SD-карту. В камере слежения есть ещё много функций, но о них позже. А сейчас приступим к её сборке. Вот ссылка на видео проекта на YouTube.

Что нам потребуется

модуль ESP32-CAM с датчиком камеры OV2640 на 2 Мпикс;

конвертер с USB-порта FTDI на последовательный (для программирования) + соединительные провода между гнёздами;

карта microSD на 4 Гб (карта памяти TF);

антенна с фиксатором;

литий-ионный зарядный модуль TP4056 на 1 ячейку;

батарея 18650 3,7 В 2600 мАч (2 шт.);

ползунковый мини-переключатель SPDT (лучше тумблер 3 A);

провода диаметром 0,51 мм;

красный светодиод 3 мм;

резистор на 220 Ом;

цилиндрический пластиковый контейнер (выбор корпуса камеры — за вами);

крепление камеры к стене для GoPro.

1. Программирование ESP32-CAM

Загружаем код ESP32-CAM_MJPEG2SD в ESP32-CAM (спасибо пользователю s60sc на GitHub: он выложил последнюю версию кода). Всю информацию о коде смотрите по ссылке.





Чтобы запрограммировать модуль камеры, соединяем его с конвертером FTDI, работающим с USB и последовательным портом, как показано на схеме выше. Здесь подключаем пин GPIO 0 к GND, что позволяет программировать ESP. Нажимаем кнопку сброса на задней части платы модуля камеры, чтобы включить режим флеш-памяти перед загрузкой.

2. ESP32.json



3. Заполнение параметров в коде

Открываем загруженный код камеры слежения ESP32-CAM_MJPEG2SD:


Раскомментируем строку CAMERA_MODEL_AI_THINKER, если у вас эта плата:


Вводим необходимые параметры, такие как модель камеры, а также учётные данные WiFi:


Дополнительно вводим данные FTP, чтобы получать записанные видео удалённо:


4. Загрузка кода на плату

Выбираем плату, скорость загрузки, частоту и режим флеш-памяти, схему разделов, основной уровень отладки и COM-порт:



5. Подготовка ESP32-CAM и получение IP-адреса

Обязательно отсоединяем провод от IO0 к GND:


И нажимаем кнопку сброса:


Вставляем в слот модуля карту MicroSD. Минимум 4 Гб:


И получаем уникальный IP-адрес с монитора порта. Нужная кнопка в правом верхнем углу Arduino IDE.


6. Веб-сервер ESP32-CAM

После ввода IP-адреса в веб-браузер при включённой камере появится такая страница:



Последняя версия кода даёт возможность начинать и останавливать запись вручную. Ранее запись запускалась лишь при обнаружении движения.

7. Сборка камеры

Для корпуса выбираем контейнер или материал, с которым легко работать. С вставкой железа в сплющенную трубу из ПВХ (показана ниже) возникли проблемы, поэтому используем цилиндрический пластиковый контейнер. Подробнее об этом читайте далее.


На картинке не совсем те детали, что использовались.

Для сборки понадобится

плата для заряда батарей TP4056 1S;

Li-Ion батарея 18650 3,7 В;

ползунковый мини-переключатель SPDP или тумблер 3 A;

красный светодиод 3 мм;

резистор мощностью 1/4 Вт 220 Ом;

провод диаметром 0,51 мм;

крепёжный винт GoPro.

8. Подключение платы для внешней антенны



Выпаиваем резистор 0 Ом, соединяющий ESP с его антенной на плате:


И припаиваем его, подключая ESP к порту внешней антенны:


Этот этап нужен, чтобы увеличить диапазон для подключения собственной антенны.

9. Подключение источника питания ESP32-CAM


Подключаем к батарее зарядную плату TP4056 4,2 В (соединения B+ и B– от платы к батарее показаны выше):


К клеммам батареи подключаем входы платы рядом с портом Micro USB:


10. Работа с соединениями компонентов


Выпаиваем штыревые разъёмы ESP32-CAM с обеих сторон и удлиняем их, припаивая обратно с проводами.


Добавляем индикатор питания (красный светодиод):


Чтобы не запутаться, подбираем цвета проводов по их назначению:


11. Схема соединений


По этой простой схеме подключений должна получиться домашняя камера слежения со всем её железом.

12. Выбор батарей и корпуса

Сначала был плоский Li-Ion аккумулятор, я заменил его на батареи, более компактные для нового, цилиндрического корпуса:


Чтобы камера работала хорошо, лучше использовать батарею ёмкостью более 2000 мА·ч:


В итоге параллельно использовали 2 батареи 18650 по 3,7 В и 2600 мА·ч, что дало в сумме 5200 мА·ч. Приличная ёмкость.


13. Подготовка железа к установке в корпус

Отмечаем и сверлим отверстия для выступающих из корпуса частей:




Выбираем корпус для камеры, состоящий из двух частей: с таким легко работать. Лучше распечатать его на 3D-принтере.

14. Установка в корпус

Клеим двусторонний скотч или ленту на батареи и модуль ESP32-CAM (сверху и снизу):


Вставляем их в корпус:


Места с выступающими компонентами герметизируем термоклеем:



15. Защита от воды

Крепим детали к корпусу термоклеем, если нужно:



Чтобы вода не попала внутрь, место стыка половинок заклеиваем изолентой:


Нарезаем кусочки резины и вставляем в любые зазоры/отверстия, например порт Micro USB сзади и слот SD-карты спереди вверху:


16. Тестирование камеры

Вставляем карту MicroSD в слот камеры, а кусочек резины обратно, включаем камеру переключателем сзади, и находим веб-сервер IP-камеры (см. этапы 5 и 6):



Процедура запуска камеры и поиска её веб-сервера та же, но без нажатия кнопки сброса, ведь снова программировать камеру не нужно:



17. Панель видеопотока

На этой панели есть вся подробная информация о ходе записи, освещённости (в ночное время), свободном месте на карте памяти, а также о дате и о температуре камеры. Здесь даже кнопкой переключается светодиод на плате ESP, отображается движение, обнаруженное ИИ, меняется чувствительность определённых функций и т. д.:



18. Крепление к стене

Можно взять держатель или кронштейн для крепления камеры к стене или любой другой поверхности. Здесь используется комплект креплений для экшн-камеры:




19. Включение камеры через USB

Подключаем источник питания на 5 В к зарядному модулю Micro USB (с кабелем от зарядника телефона) в задней части камеры:


Прикреплённая к стене камера должна работать постоянно:


Так идёт подзарядка батарей и непрерывное питание ESP32-CAM.


Батарея пригодится, если нужно снимать там, где нет розетки. Но на всю ночь её не хватит.

20. Очистка

Заполненную карту microSD извлекаем, подключаем к компьютеру и просматриваем файлы .MJPEG в проигрывателе:


21. Запись


Когда в кадре есть движение, камера записывает, когда его нет — прекращает запись.


22. Заключение


Теперь у вас есть собственная классная WiFi камера слежения:



Она сделает ваш дом ещё безопаснее:


В репозитории на GitHub есть код с расширениями, дополнительной информацией, характеристиками и возможностями ESP32-CAM MJPEG2SD.


Видео

Схемы и проекты на Arduino Uno, Mega, Nano и Mini. Рубрика содержит большое количество схем подключения к платам Arduino различных дисплеев, датчиков, взаимодействия с другими устройствами по Bluetooth и WiFi, и множество проектов в формате DIY (сделай сам, своими руками). Для каждого проекта приведены схема устройства и текст программы (скетч) с комментариями, что позволяет начинающим радиолюбителям на конкретных примерах научиться созданию практических схем на платформе Arduino.

Симулятор компьютера Altair 8800 на Arduino


Индикатор испорченных продуктов на Arduino


В данной статье мы рассмотрим создание индикатора испорченных продуктов (предсказателя качества еды) на основе платы Arduino Mega и технологии машинного обучения (Tiny Machine Learning). Ранее на нашем сайте мы также рассматривали проект индикатора качества воды на основе Arduino. Необходимые компоненты … Читать далее →

UnoArduSim: симулятор для изучения программирования плат Arduino


Arduino Uno – одна из самых популярных в настоящее время микроконтроллерных плат, поддерживаемая очень большим сообществом разработчиков. Стоимость и простота использования делают платы Arduino привлекательным вариантом для создания простых электронных проектов своими руками (DIY). Но как быть, если платы Arduino … Читать далее →

Как производить отладку программ для Arduino: руководство для начинающих


Отладка программы является жизненно важным элементом при ее разработке. Программы для плат Arduino не являются в этом плане исключением. Процедура программирования плат Arduino достаточно проста, чего нельзя сказать о способах отладки программ, доступных для данной платформы. Одна из причин этого … Читать далее →

Подключение датчика температуры и влажности AHT20 к Arduino


AHT20 и AHT21 представляют собой недорогие датчики температуры и влажности, которые по функционалу похожи на датчик DHT22. Датчики AHT20 и AHT21 взаимозаменяемы. Но в отличие от датчика DHT22, с датчиков AHT20 и AHT21 мы можем считывать данные так часто, как … Читать далее →

Подключение датчика MPU9250 к Arduino


Обработка данных движения какого-либо объекта – весьма востребованная в современном мире технология, широко применяющаяся при создании различных роботов, самоуправляемых автомобилей, дронов и многого другого. Для полноценной обработки данных движения объекта необходимо взаимодействовать с такими параметрами как линейное ускорение, угловое ускорение … Читать далее →

Измеритель скорости ветра (анемометр) на Arduino


Измеритель скорости ветра, также известный как анемометр (Anemometer) является обязательным элементом профессиональных метеостанций. И если в сети интернет можно найти огромное количество проектов метеостанций (и на нашем сайте мы рассматривали их создание на основе плат Arduino и Raspberry Pi, а … Читать далее →

Часы бесконечности на Arduino Nano


Наверняка многие из вас смотрели блокбастер “Мстители: война бесконечности”. Тем, кому данный фильм понравился, надеюсь, понравится и представленный в данной статье проект электронных часов на основе платы Arduino Nano. Но также он может понравиться и более широкому кругу энтузиастов электроники. … Читать далее →

Взаимодействие с ботом Telegram с помощью Arduino


Мессенджер Telegram является крайне популярным в современном мире, с ним могут взаимодействовать множество сторонних приложений. В данной статье мы рассмотрим взаимодействие с ботом Telegram с помощью платы Arduino. Делать мы это будем с помощью библиотеки TelegramBot.h, позволяющей работать с ботами … Читать далее →

Электронный очиститель (умягчитель) воды от накипи на Arduino Uno


Электронный очиститель воды от накипи является более эффективным устройством, чем мощные магниты, размещенные вокруг входящей водопроводной трубы. Это устройство работает путем намотки катушки провода вокруг входящей водопроводной трубы для пропускания магнитного поля через воду. Теория данного процесса заключается в том, … Читать далее →

Читайте также: