Главная Новости

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

Опубликовано: 27.08.2018

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

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

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

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

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

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

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

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

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

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

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

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

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

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

К сожалению, каких-либо приспособлений для навесного крепления на корпусе 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-адрес нашей камеры в локальной сети, и открываем его в браузере.

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

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

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

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

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

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

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

(Кстати, эти записи почему-то по-разному воспроизводятся в разных плеерах. Например, во всеядном 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 (сервер)

Еще один вариант заключается в том, чтобы установить на 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

rss