Умная охранная камера наблюдения на Raspberry Pi Zero
Данная самодельная камера наблюдения созданная на Raspberry Pi Zero и модулем камеры для Raspberry Pi с программным обеспечением OpenCV которое предназначено для умного обнаружения объектов. При обнаружении любых подозрительных объектов камера отправит Вам электронное письмо с изображением нарушителей.
Необходимые компоненты для умной камеры:
- Raspberry Pi Zero Wireless — https://alii.pub/6pwoa2;
- Модуль камеры для Raspberry Pi — https://alii.pub/6pwohu;
- Шлейф камеры Adafruit Raspberry Pi Zero Camera;
- Кабель Micro-USB на USB;
- Лист МДФ – 6 мм;
- Строительный уголок;
- Двусторонний скотч 3M на вспененной основе для наружного применения;
- Винты M4 х 20 мм – 2 шт;
- Шестигранные гайки M4 – 2 шт;
- Винты M2.5 – 4 шт;
- Зажимы или струбцины;
- Клей ПВА.
Как сделать умную камеру для охраны на Raspberry Pi Zero, инструкция:
Шаг 1
Корпус камеры наблюдения будет состоять из двух частей сделанных из МДФ диаметром 6 мм, нижняя часть удерживает камеру и Raspberry Pi Zero на месте, а верхняя часть крепится к монтажному кронштейну.
Для начала на бумаге мы начертили шаблоны всех частей корпуса, наклеили их на лист МДФ и вырезали их с помощью электрического лобзика.
Чертежи двух частей корпуса охранной камеры:
Шаг 2
Теперь пора собирать все части вместе согласно их расположению на схеме. Для склейки мы использовали клей ПВА, так как клей высыхает в течении суток то для удержания частей вместе используйте зажимы или струбцины.
Шаг 3
На передней стенке корпуса будет крепиться камера, монтажные отверстия в модуле камеры образуют прямоугольник размером 21,7 х 13,3 мм. Просверлите в углах этого прямоугольника отверстия под винты M2,5. Затем разметьте отверстие под объектив камеры и просверлите сначала сквозное отверстие по диаметру линзы объектива, а затем с помощью большего по диаметру сверла которое соответствует диаметру корпуса объектива про зенкуйте отверстие, чтобы объектив мог углубиться в переднюю стенку.
Теперь нам нужно просверлить отверстие для кабеля питания micro-USB. Поскольку верхний корпус будет накрывать боковые стороны нижнего корпуса, нам необходимо просверлить одно и то же отверстие в одном и том же месте в обеих частях корпуса. Но для начала расположите Raspberry Pi в нижней части корпуса чтобы разъём для камеры располагался в задней части корпуса и ленточный кабель камеры при этом не сильно изгибался. Затем отметьте расположение порта питания micro-USB на боковой стороне корпуса. Затем отметьте отверстие и на второй части корпуса, которая будет с внешней стороны. Затем совместите две части корпуса вместе и просверлите сквозное отверстие через две стенки сначала тонким сверлом, а затем более толстым.
Далее размещаем металлический уголок и размечаем крепёжное отверстие на боковой стенке корпуса. Размечаем его в таком месте, чтобы камера могла в итоге свободно наклоняться вверх и вниз, а затем просверлите отверстие под винт.
Чтобы скрепить две части корпуса охранной камеры вместе то в другой боковой части корпуса мы просверлили два сквозных отверстия через внешний корпус и внутренний под винты. Убедитесь, чтобы винты выходили внутрь корпуса и не задевали при этом Raspberry Pi. Затем на внутренней части корпуса мы рассверлили отверстия, чтобы можно было в них вклеить гайки, винты будут вкручиваться в них, чтобы можно было удобно скручивать и раскручивать камеру наблюдения.
Шаг 4
Теперь, когда все отверстия просверлены пришла пора покрасить корпус черной аэрозольной краской (или любой другой), чтобы он выглядел красиво.
Шаг 5
Охранная камера на Raspberry Pi почти готова, осталось её собрать. Металлический монтажный кронштейн (уголок) для камеры крепится таким образом, чтобы угол камеры можно было легко регулировать. Проденьте винт через поворотное отверстие в верхнем корпусе изнутри и закрепите его на месте с помощью шестигранной гайки снаружи.
Затем наденьте уголок на винт поверх шестигранной гайки и накрутите под конец барашковую гайку. Крыльчатая гайка позволяет легко ослабить кронштейн, отрегулировать угол и снова затянуть.
Чтобы закрепить шестигранные гайки в отверстиях нижней части корпуса, используйте ватный тампон (или лист бумаги) пропитанные клеем, чтобы заполнить внутреннюю поверхность отверстий. Затем осторожно вставьте шестигранные гайки M4 в отверстия и дайте клею высохнуть. Будьте осторожны, чтобы не нанести клей на резьбу гаек, вытрите излишки клея.
Шаг 6
Корпус готов и теперь крепим электронику и проводку. Используя четыре винта M2.5, привинтите камеру к передней части корпуса. Мы обнаружили, что винты M2.5 слегка ввинчиваются в отверстия модуля камеры, поэтому крошечные гайки не требуются. Затем подключите плоский кабель модуля камеры к разъёму Raspberry Pi Zero.
Поместите Raspberry Pi в корпус так, чтобы отверстие для ленточного кабеля было обращено к задней части корпуса. Это позволяет шлейфу плавно изгибаться от модуля камеры через весь корпус к Raspberry Pi, саму малинку прикрепите к корпусу двусторонним скочем.
Теперь наденьте верхний корпус на нижний корпус следя за тем, чтобы не защемить или не согнуть ленточный кабель камеры.
Наконец, привинтите две части корпуса вместе двумя винтами M4 x 20 мм и подключите кабель micro-USB.
Поздравляем! Вы собрали свою собственную камеру безопасности. Теперь пора сделать её умной охранной камерой.
Шаг 7
Пришло время для настройки охранной камеры. Этот проект использует камеру на Raspberry Pi для потокового видео. Перед запуском кода обязательно настройте камеру Raspberry Pi на своем устройстве, для этого откройте терминал и запустите (более наглядно и подробно описан весь процесс на видео в конце статьи):
sudo raspi-config
Выберите «Параметры интерфейса» (Interface Options), затем «Pi Camera» и включите. Нажмите «Finish» и выйдите.
Вы можете убедиться, что камера работает, запустив эту строчку кода:
raspistill -o image.jpg
Эта команда сохранит изображение с камеры в вашем текущем каталоге. Вы можете открыть инспектор файлов и просмотреть это изображение.
Этот проект использует библиотеку для Python – «OpenCV» для обнаружения объектов в видеопотоке. Я использовал при установке библиотеки туториал для Python 2.7.
OpenCV — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков.
Установка заняла почти 8 часов (!!) на моем Raspberry Pi Zero, но она бы происходила значительно быстрее на более мощной плате, такой например, как Raspberry Pi 3.
Туториал предложит Вам создать виртуальную среду. Убедитесь, что Вы используете виртуальную среду, введя следующие команды:
source ~/.profile workon cv
Далее перейдите в каталог репозитория:
cd Smart-Security-Camera
И затем установите зависимости для проекта:
pip install -r requirements.txt
Чтобы получать электронные письма при обнаружении объектов, вам нужно внести пару изменений в файл mail.py.
Откройте mail.py с помощью vim vim mail.py, затем нажмите i для редактирования. Прокрутите вниз до следующего раздела:
# Email you want to send the update from (only works with gmail)fromEmail = '[email protected]'fromEmailPassword = 'password1234'# Email you want to send the update totoEmail = '[email protected]'
И замените адрес электронной почты на свой. Файл mail.py регистрируется на SMTP-сервере gmail и отправляет электронное письмо с изображением объекта, обнаруженного камерой безопасности.
Нажмите esc, затем ZZ, чтобы сохранить и выйти.
Вы также можете изменить под себя и другие настройки в файле main.py.
email_update_interval = 600 # sends an email only once in this time intervalvideo_camera = VideoCamera(flip=True) # creates a camera object, flip verticallyobject_classifier = cv2.CascadeClassifier("models/fullbody_recognition_model.xml") # an opencv classifier
В частности, вы можете использовать другой детектор объектов, изменив путь «models / fullbody_recognition_model.xml» в object_classifier = cv2.CascadeClassifier («models / fullbody_recognition_model.xml») на новую модель в каталоге моделей:
facial_recognition_model.xmlfullbody_recognition_model.xmlupperbody_recognition_model.xml
Запустите программу:
python main.py
Вы можете просмотреть прямой поток видео в реальном времени, посетив IP-адрес Вашего Raspberry Pi в браузере в той же сети. Вы можете найти IP-адрес своего Raspberry Pi, набрав в терминале ifconfig и выполнив поиск по адресу inet.
Посетите страницу <raspberrypi_ip>: 5000 в своем браузере, чтобы просмотреть поток.
Примечание. Для просмотра живого потока в другой сети, отличной от Raspberry Pi, вы можете использовать ngrok для показа локального туннеля. После загрузки запустите ngrok с ./ngrok http 5000 и перейдите по одной из сгенерированных ссылок в вашем браузере.
Примечание. Видеопоток не запускается автоматически при запуске. Для автоматического запуска видеопотока вам нужно будет запустить программу из файла /etc/rc.local, смотрите видео в конце статьи для получения дополнительной информации о том, как это настроить.
При первом получении электронного письма Вы можете получить следующее уведомление от Google:
По умолчанию Google запрещает приложениям использовать SMTP без разрешений. Мы можем решить эту проблему, нажав на ссылку разрешить «менее безопасные приложения» и включив эту функцию. Следующий обнаруженный объект отправит электронное письмо.
Шаг 8
Монтаж охранной камеры наблюдения. Камеру можно легко разместить на полке если вы хотите следить за своим домом, находясь за городом. Для проверки мы поставили её на полку в нашей гостиной, и она работала относительно хорошо при нормальном освещении.
Благодаря возможности регулирования в пределах 180 градусов можно хорошо отрегулировать камеру. Также можно закрепить охранную камеру наблюдения на Raspberry Pi Zero снаружи дома у входной двери, как это сделали мы закрепив её на двусторонний 3М скотч для наружного применения.
Примечание: обнаружение объекта работает лучше, если камера расположена под более меньшим углом (например, на том же уровне, что и человек, которого она обнаруживает).
Умная охранная камера наблюдения на Raspberry Pi Zero готова, посмотрите видео полного процесса создания самодельной камеры наблюдения на Raspberry Pi Zero и её работы:
Код этого проекта для Raspberry Pi Zero можно скачать отсюда или с Гитхаба — https://github.com/HackerShackOfficial/Smart-Security-Camera.