Install a camera on your raspberry pi: the ultimate guide

Внешний вид и комплект поставки

Камера поставляется в картонной коробке с логотипом производителя.

Вся продукция Raspberry Pi Foundation выпускается на мощностях двух компаний — RS Components (Англия) и element14 (Китай). Я приобрел модуль камеры производства element14, за те же деньги и у того же продавца можно взять модель английской сборки, разница между ними будет только в полиграфии коробки.

В коробке находится сама камера с подключенным к ней шлейфом и руководство по технике безопасности на разных языках, включая и русский.

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

Размеры модуля 23×25мм.

Имеются 4 отверстия для стационарного крепления винтами или на защелках.

На обратной стороне модуля находится разъем для подключения шлейфа.

Большинство корпусов для Raspberry Pi 3 не очень приспособлены для работы с модулем камеры. Вывести шлейф наружу — это можно, а вот как закрепить камеру в статичном положении — проблемы пользователя. Хотя в моей статье годовалой давности с подборкой хороших корпусов для Raspberry Pi присутствует одна модель .

Сам я заказывал Raspberry Pi Camera Board с прицелом на использование в паре с Raspberry Pi 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:

  • День, 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 разрешении можно забыть: снимать-то она может, но видеопоток не будет успевать обрабатываться, поэтому в таком разрешении можно рассчитывать только на фотофиксацию.

Как подключить камеру Raspberry Pi

Предположим, что камера уже извлечена из упаковки, а одноплатник находится на столе. Все, что нужно, чтобы подсоединить модуль к Raspberry – вставить шлейф в CSI-порт, который имеет соответствующую подпись – CAMERA.

Важно: цветовой ключ нужно направить на Ethernet-порт. Подключение, в свою очередь, следует производить только при обесточенной плате

Далее нужно либо подключить Raspberry к монитору, либо подсоединиться к компьютеру по VNC, подключить к нему питание и включить.

Когда загрузится рабочий стол Raspbian, понадобится:

  • открыть меню;
  • перейти к пункту Preferences;
  • запустить программу Raspberry Pi Configuration.

Откроется утилита конфигурирования, в интерфейсе которой есть четыре вкладки – нужно перейти на Interfaces. Оказавшись на ней, потребуется найти переключатель Camera (он, обычно, идет первым) и поставить его в положение «Включено» (Enabled). Далее нужно просто нажать на OK и выполнить перезагрузку.

Если устройство исправно и все вышеперечисленное выполнено правильно, к Raspberry Pi подключение камеры должно быть выполнено успешно. Но, конечно, это следует проверить. Для этого после загрузки Raspbian потребуется: открыть меню, перейти к пункту Programming и открыть Python 3.

Запустится IDLE, в котором потребуется создать файл с названием camera.py (можно по-другому, но, чтобы было понятно, лучше оставить так).

Далее нужно написать следующий код:

  • from picamera import PiCamera
  • # вышеуказанная инструкция подключает интересующий модуль
  • from time import sleep
  • # теперь объявим переменную для камеры
  • camera = PiCamera()
  • # затем запустим просмотр поступающего с камеры сигнала так, чтобы изображение выводилось поверх любых окошек
  • start_preview()
  • # пусть картинка выводится 15 секунд
  • sleep(15)
  • # завершаем предпросмотр
  • stop_preview()

Когда код введен, потребуется выполнить сохранение (клавиши CTRL+S), а затем – запустить исполнение кода, что делается нажатием на F5. Если на экране появится картинка, которую видит сенсор, значит Py camera Raspberry работает исправно.

Теперь, когда есть уверенность, что камера подключена правильно, необходимо определиться с целями, для которых она будет использоваться. Например, можно при помощи Raspberry Pi видеонаблюдение вести, следить за птицами или использовать как-то иначе.

При желании возможно самому написать код, но если нет времени, то нужно зайти на GitHub и найти подходящий скрипт на Python – их там около тысячи. Используя какой-нибудь из них, может быть создана IP-камера из Raspberry Pi или что-то другое. Рассматривать инструкции по установке скриптов здесь нет смысла, так как они присутствуют на GitHub.

VLC media player

Самый простой способ транслировать видео с камеры Raspberry Pi — установка проигрывателя VLC media player как на компьютере, так и на «малинке». Последнее делается следующей командой:

После этого необходимо запустить запись видео и его трансляцию. На примере ниже, видео размером 800 на 400 пикселей и частотой 24fps, будет транслироваться в формате h264 через порт номер 8160:

На компьютере в VLC, в меню нужно выбрать «Открыть URL» и вписать http://192.168.0.9:8160 (замените 192.168.0.9 на реальный IP-адрес своего Raspberry Pi). Если установить VLC на Android-устройство, то этот способ тоже работает. Впрочем, для смартфонов есть и более удобный способ.

Шаг 2. Что нужно

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

  • Рекомендуется использовать Raspberry Pi 3 Model B +, но вы можете использовать любой Pi (включая Zero).
  • MicroSD Card — используйте Class 10 для лучшей производительности и большей емкости для большего времени записи.
  • Pi камера — рекомендуется модуль камеры Pi V2, но также будут работать USB веб-камеры.
  • Используйте инфракрасный фильтр для Pi камеры с инфракрасными светодиодами для ночного видения.
  • Портативный аккумулятор с USB-выходом. Выберите большую емкость аккумулятора для более длительного времени работы.
  • Пластиковый контейнер для пищевых продуктов. Используйте один с герметичной крышкой, способной обеспечить защиту от атмосферных воздействий.

Дополнительные детали, которые можно рассмотреть:

Дополнительная камера (камеры) — для многонаправленной записи.Обратите внимание, что Pi имеет только одно подключение к модулю Camera Module, любые дополнительные камеры должны быть подключены через USB.
Проволочная/тканевая сетка для покрытия дополнительного вентиляционного отверстия.
USB HDD — добавляет дополнительную емкость, но быстрее потребляет аккумулятор.

Вам потребуется небольшой набор инструментов:

  • Отвертка.
  • Горячий клей.
  • Электрическая дрель.
  • Доп. инструменты.

Программное обеспечение:

MotionEyeOS — загрузите соответствующий файл изображения для вашей модели Pi.Win32DiskImager — используется для записи файла образа MEYEOS на карту MicroSD.WinSCP — не требуется, но удобен для загрузки нескольких медиафайлов из Pi за один раз.

Шаг 4. Настройка Raspberry Pi

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

Установка операционных систем:

  • Windows
  • MacOS
  • Linux

Примечание. Мы используем изображение MotionEyeOS, поэтому вам не нужно скачивать Raspbian.

Чтобы настроить свою Raspberry Pi, выполните следующие действия:

  1. Вы можете загрузить последнюю версию файла изображения MotionEyeOS из своего GitHub.
  2. После того как вы загрузили изображение, вам нужно его извлечь, для этого используйте winRAR или другие программы.
  3. Вставьте карту MicroSD в компьютер и запишите файл изображения. Если у вас Windows используйте Win32DiskImager.
  4. После завершения записи изображений извлеките карту MicroSD из своего компьютера, вставьте в Raspberry Pi и затем включите ее.
  5. Как только Pi включится и загрузится (как правило, занимает около 30 секунд), к нему можно получить доступ через веб-браузер, вам просто нужно узнать имя хоста или IP-адрес, а затем ввести его в адресную строку браузера.

Примечание. Вы хотите подключить кабель Ethernet RJ45 от Pi к маршрутизатору для первоначальной настройки, в этом случае будет проще сделать сначала это, а затем настроить соединение Wi-Fi.

Легкий способ найти IP-адрес Pi — это консоль управления веб-маршрутизатором. Обычно это делается путем ввода его IP-адреса в адресной строке веб-браузера (например, http://192.168.0.1).

What is the Raspberry Pi Camera Module V2?

The Raspberry Pi Camera Module V2 is the all-new official camera board released by Raspberry Pi Foundation. It boasts an 8 megapixel Sony IMX219 image sensor that’s capable of outputting up to 3280×2464 pixel static images, and 1080p30, 720pp60, and 640x480p video!

You may use this Raspberry Pi camera module with most SBCs or Dev boards like Raspberry Pi 4 Computer Model B, Raspberry Pi Zero, and NVIDIA Jetson Nano, due to its wide compatibility

For Raspberry Pi Zero Camera usage, you’ll need this Camera Cable for Pi Zero

Without further ado, here are 24 best Raspberry Pi Camera projects to help you get started!

1) Learn the Raspberry Pi Camera with this Project Tutorial

Kicking our list of is this quick project tutorial for you lot that’s using the Raspberry Pi Camera Module for the first time! If you’re wondering how to use the Pi Camera, this essential project will help you get started in using and connecting the camera module to the latest Raspberry Pi 4 Model B board!

It covers the following:

  • How to control the pi camera using Python
  • How to use raspivid, raspistill and raspiyuv utilities
  • How to use start_preview() and stop_preview() to display the image from the camera
  • How to take photos using the capture() command
  • How to record video using start_recording() and stop_recording()
  • How to view the video via omxplayer
  • How to change the brightness, contrast, and resolution in photos
  • How to apply visual effects to video

What do you need?

  • Raspberry Pi 4 Computer Model B 4GB
  • Raspberry Pi Camera Module V2

Interested to find out more? You can find the full tutorial by Nurgaliyev Shakhizat at Seeed Project Hub!

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

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

Для работы с камерой используйте подключение по HDMI. При работе через виртуальный рабочий стол (VNC) окно с захватом данных с камеры не отобразится.

  1. Подключите камеру через FFC/FPC шлейф к Raspberry Pi в разъём CSI-2:

    1. Официальная Raspberry Pi High Quality Camera

    2. Официальная Raspberry Camera v2

    3. Официальная Raspberry Camera v2 NoIR

    4. Камера (модель D);
    5. Камера (модель M);
    6. Камера (модель FPC);
    7. Камера (модель IR-CUT B);
    8. Камера (модель Zero).
  2. Заведите Raspberry Pi.

  3. Зайдите в меню конфигурации параметров Raspberry Pi:
    Menu
    Preferences
    Raspberry Pi Configuration

  4. Перейдите на вкладку Interfaces, а затем переключите состояние пункта Camera из положения Disable в Enable. Сохраните изменения и перезагрузите Raspberry Pi.

На этом настройка камеры закончена и можно смело переходить к примерам работы.

Объектное хранилище MinIO

Придерживаясь микросервисного подхода, ответственность за хранение видеозаписей хотелось бы скинуть на какой-то отдельный сервис. Что, собственно, и было сделано. Отличным решением такой задачи стало open-source хранилище MinIO. Разворачивается мгновенно, масштабируется превосходно, веб-интерфейс крайне удобен. 

Решение предлагает пользователю размещать файлы любого расширения в так называемые bucket’ы (или же корзины):

Что ж, переходим к самому анализатору данных. Сервис написан на Java с использованием Spring фреймворка. Для инициализации MQTT-слушателя добавляем в зависимости следующее:

Сама же конфигурация выглядит следующим образом:

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

Добавим в зависимости следующее:

Конфигурация MinIO:

Изящно, не так ли? 

MinioFileManager — класс собственной реализации, основной целью которого является  облегчить жизнь при манипуляциях с файлами.

Пример самой работы с MinIO будет описан чуть ниже — для начала давайте поговорим о некоторых нюансах реализации потокового воспроизведения медиа-контента поверх HTTP протокола.

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

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

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

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

sudo apt-get install vlc

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

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

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

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

Как подключить USB-камеру к Raspberry

Что касается того, как выполняется к Raspberry Pi подключение камеры по USB, то следует сказать, что это делается так же, как и во всех дистрибутивах Linux.

Принцип настройки такой:

  • подключение камеры;
  • обновление списка репозиториев и ПО (опционально);
  • установка программы Motion;
  • конфигурирование приложения.

Настройка заключается в изменении содержания двух файлов: motion/motion.conf и default/motion – оба из них находятся в директории etc.

В первом нужно изменить два параметра: DAEMON – на ON и Webcam_local – на OFF. Во, втором, в свою очередь, следует после знака «=» у параметра start_motion_daemon написать yes (по умолчанию стоит – no).

Чтобы запустить Motion Raspberry Pi, нужно запустить его сервис. Это делается командой: service motion start (естественно, под sudo). Останавливается демон той же командой, только вместо start нужно указывать stop.

Если же требуется трансляция в интернет, то нужно в роутере открыть для Raspberry порт 8081. Затем к камере можно будет обращаться так: http://адрес_роутера:8081.

Чтобы проверить работу камеры, нужно в браузере ввести следующий адрес: http://адрес_raspberry:8081. Вот таким нехитрым образом была настроена Raspberry Pi web camera usb.

Выше было рассмотрено, как камера под управлением Raspberry может быть подключена к одноплатнику. Как можно видеть, это сделать очень легко – главное, четко следовать инструкциям.

MQTT-брокер

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

MQTT протокол — это протокол обмена сообщениями по модели издатель-подписчик поверх протокола TCP/IP, где центральная часть протокола — MQTT-сервер или же брокер. Использование MQTT в нашем проекте было выбрано по ряду причин. Во-первых, он привлекателен своей легковесностью и компактностью, вследствие чего по сети будет перемещаться существенно меньший объем траффика, а это, в свою очередь, ведёт к снижению нагрузки как на оперативную память, так и снижает энергопотребление от альтернативного источника питания – аккумулятора (тут стоит отметить, что Raspberry может быть оснащён также аккумулятором для повышения отказоустойчивости в случае обесточивания места установки). Во-вторых, протокол изначально разрабатывался как способ поддержки связи между системами с ограниченной пропускной способностью и неопределенной стабильностью сети. Ну а тем более, чтобы не ограничивать свою фантазию в том, где можно расположить скрытую камеру – данное достоинство играет не последнюю роль, ровно как и значимость и уверенность в том, что сообщение будет гарантированно доставлено (как никак, конструируем систему охраны). В качестве MQTT-брокера был использован open-source брокер Mosquitto

В качестве узла связи выступает MQTT-брокер. MQTT протокол — это протокол обмена сообщениями по модели издатель-подписчик поверх протокола TCP/IP, где центральная часть протокола — MQTT-сервер или же брокер. Использование MQTT в нашем проекте было выбрано по ряду причин. Во-первых, он привлекателен своей легковесностью и компактностью, вследствие чего по сети будет перемещаться существенно меньший объем траффика, а это, в свою очередь, ведёт к снижению нагрузки как на оперативную память, так и снижает энергопотребление от альтернативного источника питания – аккумулятора (тут стоит отметить, что Raspberry может быть оснащён также аккумулятором для повышения отказоустойчивости в случае обесточивания места установки). Во-вторых, протокол изначально разрабатывался как способ поддержки связи между системами с ограниченной пропускной способностью и неопределенной стабильностью сети. Ну а тем более, чтобы не ограничивать свою фантазию в том, где можно расположить скрытую камеру – данное достоинство играет не последнюю роль, ровно как и значимость и уверенность в том, что сообщение будет гарантированно доставлено (как никак, конструируем систему охраны). В качестве MQTT-брокера был использован open-source брокер Mosquitto.

Install your new camera on Raspberry Pi

Now that you have everything you need, we can start the serious part of this tutorial

System installation

Raspberry Pi OS (ex Raspbian) is the recommended operating system to install and use a camera on Raspberry Pi. Everything is included and especially if you choose the official model, you’ll have absolutely no issue with it. I don’t know exactly which systems are compatible, you may want to try them later, but start with Raspberry Pi OS for now.

I already wrote a guide on how to install Raspbian on Raspberry Pi, feel free to check it if you’re not confident with the installation.You can use the Desktop or Lite version, both are working fine with any compatible camera, so choose the one you prefer for your project.The only advantage of the Desktop version is that you can check the picture directly on Raspberry Pi OS if you have a screen in your setup.For remote access only, keep the Lite version.

After the installation, make sure you made these steps:

  • Raspberry Pi OS installed with anything you need (applications, network, …)
  • Raspberry Pi OS configured with all your favorites settings (keyboard layout and language for example)
  • System updated with the latest version of all packages
  • SSH enabled to allow remote access for the first tests
  • If you choose the Desktop version, you can also install a remote desktop app to do everything from your computer.

Once everything is OK, you can shut down the Raspberry Pi to install the camera

Connect the camera

The camera installation on the Raspberry Pi is straightforward once you find the port location:

  • Take the Raspberry Pi out of its box
  • Find the camera port on the Raspberry Pi (between the HDMI and jack port)You’ll find it easily because it’s the only one that fit the cable width, and it may be written “CAMERA” on the main board.
  • Before plugging the cable, you may need to remove the plastic film and lightly pull the black plastic
  • Plug the cable and push the black plastic to hold the cable inside
  • Make sure to align both connectors on the same side (cable connectors on the HDMI port side)
  • Then I recommend starting with a rapid test before holding everything in the case and/or in the holder, just to be sure that it’s working

Plug all cables back (power, HDMI, network, USB …) and start the Raspberry Pi.

Master your Raspberry Pi in 30 daysSale: 10% off today.Download the eBook.Uncover the secrets of the Raspberry Pi in a 30 days challenge.Learn useful Linux skills and practice multiples projects.Get it Now!

Enable the camera on Raspberry Pi OS

Before using the camera on your Raspberry Pi, you need to enable it in your system. The camera port is disabled by default.

  • Connect using SSH (you can find useful tips here to connect via SSH from your computer).If you prefer, you can use a terminal on the Raspberry Pi OS desktop, or even use the Lite version.
  • Start the raspi-config tool
  • Go to “Interfacing options” > “Camera”
  • “Would you like the camera interface to be enabled?”Yes!
  • Exit raspi-config and accept the reboot

That’s all you need to do.After the reboot, the camera is ready to use.

Быстрый запуск камеры видеонаблюдения на Raspberry Pi с захватом движения

Чтобы начать записывать ваше первое видео и транслировать его через сеть интернет, понадобится ввести всего лишь несколько команд. Но перед этим убедитесь в том, что ваша плата Raspberry Pi подключена к сети Интернет – через LAN или Wi-Fi. После этого выполните следующую последовательность шагов.

Шаг 1. Обновите вашу Raspberry Pi OS до последней версии с помощью команды:

Shell

sudo apt-get update

1 sudo apt-getupdate

Шаг 2. Установите библиотеку ‘Motion’ с помощью следующей команды:

Shell

sudo apt-get install motion

1 sudo apt-getinstall motion

Шаг 3. Установите процесс Motion (Motion daemon) в состояние «yes» (чтобы он был всегда запущен и действовал) с помощью редактирования файла /etc/default/motion. Его можно отредактировать с помощью редактора ‘nano’, запустив его с правами суперпользователя.

Shell

sudo nano /etc/default/motion

1 sudo nanoetcdefaultmotion

Затем сохраните файл нажав ‘CTRL+X’, затем ‘Y’, после чего нажав Enter.

Шаг 4. Далее нам необходимо установить разрешение на использование целевого каталога (/var/lib/motion/), в котором программное обеспечение Motion будет сохранять все записываемые видео и изображения. Вам необходимо установить Motion в качестве «владельца» этого каталога с помощью команды:

Shell

sudo chown motion:motion /var/lib/motion/

1 sudo chownmotionmotionvarlibmotion

Это разрешение крайне необходимо выставить, иначе вы получите ошибку, показанную на рисунке ниже. Эта ошибка высветится если вы будете проверять состояние (статус) Motion с помощью команды: sudo service motion status.

Шаг 5. На этом этапе у нас уже практически все готово, нам необходимо всего лишь изменить одну настройку в конфигурационном файле Motion (/etc/motion/motion.conf) – мы должны выключить stream_localhost (off). Мы должны отключить эту настройку, иначе вы не сможете транслировать видео в сеть Интернет и оно будет доступно только на самой плате Raspberry Pi. Измените эту настройку в конфигурационном файле Motion (Motion Configuration file) с помощью редактора ‘nano’:

Shell

sudo nano /etc/motion/motion.conf

1 sudo nanoetcmotionmotion.conf

Теперь у нас все готово к трансляции видеоизображения в сеть Интернет, получаемого с USB веб камеры, подключенной к плате Raspberry Pi. Запустите Motion с помощью следующей команды и откройте IP вашей Raspberry Pi на порту 8081 в вашем браузере (например, 192.168.1.103:8081):

Shell

sudo /etc/init.d/motion start

1 sudoetcinit.dmotion start

После этого вы увидите транслируемое видеоизображение как показано на рисунке ниже. В данном проекте мы использовали очень дешевую USB веб камеру (Quantum web camera QHM500LM), но если вы хотите улучшить качество изображения в данном проекте, вы можете использовать более дорогую камеру с хорошим разрешением.

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

Вы всегда сможете начать, остановить, возобновить и узнать состояние программы Motion с помощью следующих команд:

Shell

sudo /etc/init.d/motion start
sudo /etc/init.d/motion stop
sudo service motion restart
sudo service motion status

1
2
3
4

sudoetcinit.dmotion start

sudoetcinit.dmotion stop

sudo service motion restart

sudo service motion status

Или же вы можете перезагрузить Raspberry Pi в случае возникновения проблем:

Shell

sudo reboot

1 sudo reboot

Примечание: если у вас модель платы Raspberry Pi ниже версии 3, то вам, скорее всего, понадобится Wi-Fi адаптер чтобы подключить плату к роутеру по беспроводному соединению. Мы в этом проекте использовали плату Raspberry Pi 2 Model B, поэтому нам такой адаптер понадобился. Платы Raspberry Pi 3 и выше имеют в составе встроенный Wi-Fi.

Объяснение программы для Raspberry Pi

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

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

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

Python

import RPi.GPIO as gpio
import picamera
import time

m11=17
m12=27
led=5
buz=26

button=19

RS =18
… ….
… …..

1
2
3
4
5
6
7
8
9
10
11
12
13
14

importRPi.GPIO asgpio

importpicamera

importtime

m11=17

m12=27

led=5

buz=26

button=19

RS=18

…….

……..

Функция def capture_image() используется для захвата изображения посетителя с временем и датой.

Python

def capture_image():
lcdcmd(0x01)
lcdprint(«Please Wait..»);
data= time.strftime(«%d_%b_%Y\%H:%M:%S»)
camera.start_preview()
time.sleep(5)
print data
camera.capture(‘/home/pi/Desktop/Visitors/%s.jpg’%data)
camera.stop_preview()
lcdcmd(0x01)
lcdprint(«Image Captured»)
lcdcmd(0xc0)
lcdprint(» Successfully «)
time.sleep(2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14

defcapture_image()

lcdcmd(0x01)

lcdprint(«Please Wait..»);

data=time.strftime(«%d_%b_%Y\%H:%M:%S»)

camera.start_preview()

time.sleep(5)

printdata

camera.capture(‘/home/pi/Desktop/Visitors/%s.jpg’%data)

camera.stop_preview()

lcdcmd(0x01)

lcdprint(«Image Captured»)

lcdcmd(0xc0)

lcdprint(» Successfully «)

time.sleep(2)

Функция def gate() используется для управления двигателем постоянного тока, который в нашем проекте используется в качестве ворот (Gate).

Python

def gate():
lcdcmd(0x01)
lcdprint(» Welcome «)
gpio.output(m11, 1)
gpio.output(m12, 0)
time.sleep(1.5)
gpio.output(m11, 0)
gpio.output(m12, 0)
time.sleep(3)
gpio.output(m11, 0)
gpio.output(m12, 1)
time.sleep(1.5)
gpio.output(m11, 0)
gpio.output(m12, 0)
lcdcmd(0x01);
lcdprint(» Thank You «)
time.sleep(2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

defgate()

lcdcmd(0x01)

lcdprint(»    Welcome  «)

gpio.output(m11,1)

gpio.output(m12,)

time.sleep(1.5)

gpio.output(m11,)

gpio.output(m12,)

time.sleep(3)

gpio.output(m11,)

gpio.output(m12,1)

time.sleep(1.5)

gpio.output(m11,)

gpio.output(m12,)

lcdcmd(0x01);

lcdprint(»  Thank You  «)

time.sleep(2)

Также запрограммируем ряд функций для работы с ЖК дисплеем (их коды приведены в конце статьи):

  • def begin() – для инициализации ЖК дисплея;
  • def lcdcmd(ch) – для передачи команд на ЖК дисплей;
  • def lcdwrite(ch) – для передачи данных на ЖК дисплей;
  • def lcdprint(Str) – для передачи строки на ЖК дисплей.

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

Python

while 1:
d= time.strftime(«%d %b %Y»)
t= time.strftime(«%H:%M:%S»)
lcdcmd(0x80)
lcdprint(«Time: %s»%t)
lcdcmd(0xc0)
lcdprint(«Date:%s»%d)
gpio.output(led, 1)
if gpio.input(button)==0:
gpio.output(buz, 1)
gpio.output(led, 0)
time.sleep(0.5)
gpio.output(buz, 0)
capture_image()
gate()
time.sleep(0.5)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

while1

d=time.strftime(«%d %b %Y»)

t=time.strftime(«%H:%M:%S»)

lcdcmd(0x80)

lcdprint(«Time: %s»%t)

lcdcmd(0xc0)

lcdprint(«Date:%s»%d)

gpio.output(led,1)

ifgpio.input(button)==

gpio.output(buz,1)

gpio.output(led,)

time.sleep(0.5)

gpio.output(buz,)

capture_image()

gate()

time.sleep(0.5)

Рассмотренную в данном проекте систему мониторинга посетителей на основе платы Raspberry Pi и камеры можно значительно усовершенствовать, дополнив ее системой компьютерного зрения и библиотекой OpenCV, с помощью которой можно сравнивать полученное изображение посетителя с хранящимися в памяти изображениями и осуществлять допуск посетителя только при совпадении его изображения с одним из хранящихся образцов.

Заключение

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

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

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

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

Заключение

За свои деньги мне модуль Raspberry Pi Camera Board V2 понравился.

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

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

Рекомендую к покупке вместе с Raspberry Pi Zero W.

Raspberry Pi Camera Board V2на AliExpress Raspberry Pi NoIR Camera Board V2на AliExpress

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

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

Adblock
detector