Меню

Домашняя система видеонаблюдения на базе raspberry pi своими руками

Система ограниченного доступа и видеонаблюдения на Raspberry PI +16

Raspberry Pi

  • Создание системы ограниченного доступа в помещение на основе RFID меток.
  • Удаленное открытие двери и просмотр камер с мобильного телефона.
  • Система видеонаблюдения с сохранением в облако.
  • Интеграция в существующую домофонную систему.
  • Интеграция с HomeKit.

Компоненты

  • Raspberry Pi 3
  • Дисплей Waveshare 7″
  • Модуль бесконтактной идентификации RFID RC522 (монтируем в кнопку звонка)
  • Датчик температуры и влажности DHT22
  • Датчик движения HC-SR501
  • Модуль датчика освещенности
  • RFID ключи
  • Веб-камера Lоgitech WebCam C170 (монтируем в кнопку звонка)
  • Замок электромагнитный 12V (ставим на двери)

Программы

  • Raspbian OS
  • MotionEye (для просмотра камер, записи в облако при движении)
  • MySQL server (ведение протокола открытия дверей)
  • Apache HTTP server
  • PHPMyAdmin
  • Conky (для отображения прогноза погоды, температуры и влажности в комнате)
  • Программа для мобильного телефона (удаленное открытие дверей, просмотр видео)

> Установка ОС Raspbian делал через NOOBS.
> Установка MotionEye
> Установка Apache, MySQL, PHPMyAdmin

Делаем настройку MotionEye. Заходим на http://[your_ip]:8765/, подключаем камеру. Указываем в разделе File Storage куда сохранять видео, у меня это в Dropbox, в папку IntercomMyHome

В разделе Movies указал MPEG-4, так прямо с Dropbox’a можно видео будет смотреть.

В разделе General Settings не забудьте сменить пароль в целях безопасности. В разделе Video Streaming настройки для стриминга видео. Есть ссылки для скриншота и интеграции в страницу.

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

События открытия дверей пишем в базу MySQL.

Экран устройства получился такой:


Для удаленного открытия дверей и просмотра камер создано приложение (пока для iOS). Авторизация в приложении по Gmail. FireBase для хранения профиля и настроек.




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

В итоге вся система выглядит так:


Интеграция с HomeKit сделана, но я в ней разочарован. Удаленно в HomeKit нет возможности открыть дверь, она работает только если ты подключен к той же точке Wi-Fi что и устройство. Непонятная для меня интеграция с камерой. Возможно в будущем они изменят технологию и к ней можно будет вернуться.



В этой статье будет говориться о том, как своими руками собрать недорогую IP-камеру на базе Raspberry Pi Zero W и оригинального модуля камеры.

В принципе, именно с этой целью я изначально и планировал использовать «мини-малинку». Но впечатления от ее работы в такой роли оказались неоднозначными.

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

Ну а подробнее обо всем читайте дальше в статье.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

  • Raspberry Pi Zero W + корпус + CSI-шлейф
  • Raspberry Pi Camera Board V2 или Raspberry Pi NoIR Camera Board V2
  • Локальная сеть

Опционально может потребоваться отдельное устройство под видеорегистратор. Он понадобится если есть необходимость использовать 2 или более камер видеонаблюдения в одном комплексе.

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

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

IP-камера своими руками на Raspberry Pi Zero W

Все необходимое для сборки — это микрокомпьютер Raspberry Pi Zero W, microSD-карточка с образом системы, корпус с отверстием под глазок камеры, сам модуль камеры и шлейф с полноразмерного разъема CSI на миниатюрный CSI, используемый в моделях Zero и Zero W.

IP-камера своими руками на Raspberry Pi Zero W

При помощи шлейфа подключаем модуль камеры к микрокомпьютеру.

IP-камера своими руками на Raspberry Pi Zero W

Размещаем Raspberry Pi Zero W в основании корпуса.

IP-камера своими руками на Raspberry Pi Zero W

Закрепляем модуль камеры под крышку на предназначенных для этого пластиковых защелках.

IP-камера своими руками на Raspberry Pi Zero W

Совмещаем крышку с основанием корпуса, и процесс сборки IP-камеры можно считать завершенным.

IP-камера своими руками на Raspberry Pi Zero W

К сожалению, каких-либо приспособлений для навесного крепления на корпусе Zero W не предусмотрено. Но главное определиться где будет стационарно размещена камера, а уж крепление придумать можно всегда.

На время экспериментов я просто прикрепил ее на скотч к оконному стеклу.

Вариант 1: MotionEyeOS

Наиболее простой способ использования Raspberry Pi в качестве сетевой камеры — это использование приложения MotionEye.

MotionEye представляет собой сервер видеонаблюдения, работающий на базе консольной утилиты Motion. Которая, в свою очередь, позволяет распознавать движение на видеопотоке с камеры и выводить этот видеопоток на открытый порт веб-сервера.

MotionEye можно установить на любой компьютер под управлением Linux как обычное приложение, а на Raspberry Pi и некоторых других одноплатных компьютерах также возможно использовать готовую сборку MotionEyeOS — минималистичный Linux-дистрибутив, весящий всего 230Мб и не содержащий в себе ничего, кроме самого MotionEye и минимального количества необходимых для его работы пакетов.

Я считаю, что для IP-камеры удобнее использовать именно готовую сборку. Ведь мы же не будем делать из камеры многозадачное устройство, а раз так — правильнее установить максимально облегченную версию системы.

Поэтому скачиваем образ системы с этой страницы и записываем его на microSD-карту как любой другой Linux-дистрибутив для Raspberry Pi (если вы не знаете как это делать — подробнее все действия описаны в обзорах Raspberry Pi 3 и Raspberry Pi Zero W).

После чего создаем файл wpa_supplicant.conf со следующим содержимым:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=RU
network={
ssid="НАЗВАНИЕ ТОЧКИ ДОСТУПА WIFI"
psk="ПАРОЛЬ ОТ WIFI"
key_mgmt=WPA-PSK
}

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

IP-камера своими руками на Raspberry Pi Zero W

Затем находим локальный IP-адрес нашей камеры в локальной сети, и открываем его в браузере.

IP-камера своими руками на Raspberry Pi Zero W

И перед нами открывается веб-интерфейс MotionEye с уже работающей камерой.

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

К слову, настройки достаточно обширны. Мы можем:

  • Менять разрешение и частоту кадров видеопотока
  • Включать и отключать систему обнаружения движения на видео
  • Задавать место для хранения видеозаписей, которым может быть как собственная память Zero W, так и расшаренный сетевой ресурс, FTP-сервер в интернете или облачные хранилища Dropbox и Google Диск
  • Кодек, которым будет кодироваться видео
  • Подключать дополнительные камеры, в том числе и сетевые, поддерживающие протоколы RTSP или MJPEG
  • Записывать не только видео, но и фото с заданной частотой (или по срабатыванию детектора движения)
  • Гибко настраивать сам модуль камеры, меняя в том числе и ISO с экспозицией
  • Передавать поток с камеры на сторонний видеосервер

В общем, вещь вполне серьезная. Может быть не настолько, как коммерческие системы видеофиксации, но скорее всего возможности MotionEye закроют все потребности домашнего пользователя по части видеонаблюдения.

А что с недостатками? А главный недостаток заключается в том, что Motion на Raspberry Pi не умеет использовать аппаратное ускорение. Поэтому вся нагрузка при работе с видеопотоком ложится на процессор — далеко не самый мощный даже в третьей «малине» и откровенно слабоватый в Zero и Zero W.

Давайте просто посмотрим примеры видеозаписей, сделанных через MotionEye на Zero W:

  • День, 640×480
  • День, 800×600
  • Ночь, 800×600
  • День, 1024×768
  • День, 1280×720
  • День, 1600×1200

(Кстати, эти записи почему-то по-разному воспроизводятся в разных плеерах. Например, во всеядном Media Player Classic видео в высоких разрешениях идут как очень медленное слайдшоу, в то время как в Lister — встроенном в Total Commander просмотрщике файлов — они проигрываются намного лучше и с большей частотой кадров. Надо будет еще поэкспериментировать с выбором кодеков для сжатия)

Что мы видим? Хорошо пишется видеопоток с разрешением 640×480 пикселей, почти нормально идет видео в разрешении 800×600. На видео в более высоких разрешениях процессорной мощности Raspberry Pi Zero W уже не хватает и fps падает до 2-3 кадров в секунду.

Так что придется идти на компромисс, выбирая между разрешением видео и частотой кадров. Ну и о возможности Raspberry Pi Camera Board снимать в fullHD разрешении можно забыть: снимать-то она может, но видеопоток не будет успевать обрабатываться, поэтому в таком разрешении можно рассчитывать только на фотофиксацию.

Вариант 2: RTSP-поток на стороннее устройство

Другой вариант использования Raspberry Pi Zero W в качестве камеры — транслировать видео по RTSP-протоколу на другое устройство, выполняющее функции видеорегистратора.

Для этого нам понадобится уже не Motion, а VLC Player и консольная утилита raspivid, о которой я писал в обзоре модуля камеры.

Устанавливаем в Raspbian пакет vlc:

sudo apt-get install vlc

И запускаем трансляцию видеопотока:

raspivid -o - -t 0 -n -w 640 -h 480 -fps 30 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264

При этом параметрами -w и -h устанавливается разрешение видео (ширина и высота соответственно), а ключ -fps ограничивает максимальную частоту кадров.

Видеопоток будет доступен в сети по адресу rtsp://ip-адрес-rpi-zero-w:8554/. Его можно интегрировать в любые приложения для видеонаблюдения, либо просматривать через видеоплееры с поддержкой сетевого воспроизведения — например, тот же VLC Player или Media Player Classic.

По RTSP-протоколу видео идет без таких просадок по fps как в Motion, но возникает другая проблема: транслируется оно с задержкой 3-5 секунд.

Вариант 3: MotionEye (клиент) + MotionEye (сервер)

IP-камера своими руками на Raspberry Pi Zero W
Еще один вариант заключается в том, чтобы установить на Zero W MotionEye в качестве клиентского модуля, а на другом устройстве развернуть MotionEye в качестве сервера видеорегистратора для записи и трансляции видео. И соединить их по сети.

Это позволит снизить нагрузку на процессор Zero W (особенно если активировать в настройках MotionEye опцию («Fast Network Camera»).

Заключение

К явным плюсам подобной самодельной камеры можно отнести стоимость. Около 25 долларов стоит сам микрокомпьютер, еще 20 долларов за камеру, итого устройство обходится нам в 45 долларов или примерно 2700 рублей по нынешнему курсу. Средняя IP-камера в российской рознице будет стоить в 2-3 раза дороже. Минимум.

Еще один однозначный плюс — компактные габариты. Описываемую в данной статье камеру легко спрятать. И хотя в целом наше законодательство негативно относится к скрытому видеонаблюдению, в пределах своего жилища (не являющегося местом общего пользования) человек вправе устанавливать камеры так, как посчитает нужным.

Ну а минус — качество видео. Требовательных пользователей оно не удовлетворит.

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

Raspberry Pi Zero W (набор)в интернет-магазине GearBest Raspberry Pi Camera Board V2на AliExpress

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *