Создание беспроводной шпионской камеры с Raspberry Pi. Как установить и настроить модуль камеры Raspberry Pi Raspberry pi работа с камерой

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

Особенности камеры для Raspberry Pi

Для Raspberry Pi камера появилась в 2014 году, и она стала самым популярным модулем для данного одноплатника. Используя его, пользователи-разработчики получили возможность реализовывать самые разные проекты, в числе которых:

  • телескопы;
  • устройства для слежения за животными;
  • системы видеонаблюдения с функцией распознавания лиц и т. д.

Первая версия камеры имела 5-мегапиксельную матрицу. Производством соответствующих оптических сенсоров занималась компания Omnivision. И уже в конце 2014-го она сняла их с производства, в связи с чем пришлось подыскивать замену.

Вскоре вышла Raspberry Pi camera v2, которая была даже лучше, чем предыдущая. В ней использовался 8-мегапиксельный сенсор от Sony, который имеет название IMX 219 EXMOR RS.

Новая камера научилась снимать с частотой кадров 60 FPS в HD-разрешении, тогда как старая выдавала лишь 30 FPS. И, как и первая генерация, вторая также могла записывать FullHD-видео с 30-кадровым фреймрейтом.

Также устройство стало быстрее, а главное - научилось лучше корректировать баланс белого.

Следует отметить, что Raspberry camera не потребляет процессорное время, так как у нее есть свой видеоускоритель. Это положительно отличает ее от обычных USB-камер.

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

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

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

Когда загрузится рабочий стол 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.

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

Наблюдение всегда было полезным инструментом в арсенале любого хакера, независимо от того нападаем мы или защищаемся. Самостоятельное наблюдение за целями не всегда практично, а традиционные системы видеонаблюдения, как правило, либо слишком дорогое удовольствие, либо имеют недостаточный для наших задач функционал. Сегодня мы будем использовать motionEyeOS на Raspberry Pi Zero для создания небольшой скрытой Wi-Fi камеры, очень доступной и легко скрываемой.

Для чего вы можете ее использовать

Неужели вы бы не нашли способ использовать маленькую, дюймовую шпионскую камеру ценой в 40 баксов? На самом деле, сложное видеонаблюдение никогда не было доступно большинству людей, и только совсем недавно такие платы, как Pi Zero W, стали достаточно мощными, чтобы мы могли создавать такие классные штуки. Благодаря тому, что Raspberry Pi - это решение из разряда Plug-and-Play, мы можем на скорую руку собрать за небольшие деньги легко настраиваемую дневную или ночную камеру.

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

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

MotionEyeOS

Чтобы собрать эту сборку максимально быстро и просто, мы будем использовать кастомный образ для Raspberry Pi, который называется motionEyeOS.

«MotionEyeOS - это дистрибутив Linux, который превращает одноплатный компьютер в систему видеонаблюдения. ОС основана на BuildRoot и использует на бекенде motionEye , а на фронтенде - motionEye».
motionEyeOS

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

Обычная камера против NoIR-камеры

Существует два типа плат для камер, которые мы можем использовать с Pi. Оба имеют по 8 мегапикселей и ведут съемку в 1080p. Стандартная камера похожа на камеру в вашем смартфоне, но не такого высокого качества. Камера NoIR немного отличается. Как следует из названия, у нее нет ИК-фильтра (инфракрасного). Это означает, что она может видеть больший спектр света, чем стандартная камера, что дает основное преимущество при ночном видении, но за это придется платить плохой размытой картинкой при свете дня.

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

Если вы ведете съемку в темноте, то используйте камеру NoIR вместо обычной, тогда у вас появится возможность видеть в темноте. Не забывайте, что вам все равно понадобится источник инфракрасного света, например, инфракрасный светодиодный источник или стойка с ИК-подсветкой, чтобы камера могла видеть. Человеческие глаза не видят в ИК-спектре, поэтому не беспокойтесь о том, что этот свет кто-нибудь заметит и догадается о наличии рядом камеры.

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

Если вы ограничены в средствах и можете позволить себе только одну из двух типов камер, то мы советуем купить NoIR-камеру. Это на несколько долларов дороже, но в комплекте идет ИК-фильтр, поэтому вы сможете менять камеру так, чтобы она стала стандартной, когда вам это потребуется.

Корпус для камеры

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

  • Что вы собираетесь использовать - Raspberry Pi или Pi Zero?
  • Собираетесь ли вы установить камеру в помещении или на улице?
  • Насколько прочной она должна быть?
  • Насколько скрытой должна быть ваша камера?

Нужен ли ИК-источник света? Если да, то нужен ли он в какой-то конкретной ситуации?

Учитывая эти вопросы, вы можете погуглить и найти подходящий для ваших целей корпус для камеры. Выбор по умолчанию - корпус, который можно найти на Amazon’е по запросам «Raspberry camera case». Если у вас есть доступ к 3D-принтеру, то можно поискать что-нибудь подходящее на Thingiverse

Если вы используете Pi Zero, то ZeroView и Pigeon будут хорошим выбором.

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

Если вы впервые покупаете Raspberry Pi, тогда набор Canakit - это отличный выбор, в котором есть все, что нужно. Наиболее экономичным вариантом будет Pi Zero CanaKit и Pi 3 CanaKit. Если вы не хотите покупать набор, то вот список того, что вам нужно для этой сборки:

  • Raspberry Pi - в принципе для наших задач годится любая Pi, но настоящий выбор лежит между Pi 3 и Pi Zero W. Встроенный Wi-Fi делает их очень легкими для установки, разница между ними - в производительности и размере. Если размер критичен, то используйте Zero, но у нее могут быть проблемы с производительностью, например, более низкая частота кадров. Имейте в виду, что вы можете использовать длинный (2 метра) кабель для камеры, что позволит лучше спрятать Pi, поскольку видимым должен быть только сам модуль камеры.
  • Карта microSD.
  • Кардридер для microSD.
  • Источник питания.

Шаг 1. Скачайте образ motionEyeOS

Для начала нужно скачать кастомный образ для Raspberry Pi со страницы выпуска motionEyeOS ‘Github . Скачайте последнюю версию для того типа Pi, который вы будете использовать. Помните, что для Pi Zero вам нужно скачать версию для оригинальной Pi.

Образ заархивирован, поэтому первым делом его нужно распаковать. В Windows вы можете использовать 7-Zip, а на Mac - Keka. Вы также можете использовать WinZip для обеих платформ. WinZip стоит денег, но пробная версия бесплатна. После того, как вы установите что-нибудь из них себе в систему, кликните на архив правой кнопкой мыши и выберите в меню «Извлечь файлы» (Extract files).

Шаг 2. Запись образа на карту MicroSD

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

Если у вас уже есть программа для записи образов на флешки, то можете воспользоваться ею. Если такой программы еще нет, то загрузите Etcher, так как его использовать проще всего. У него предельно простой пользовательский интерфейс, и он работает на Windows, Mac и Linux. Etcher должен определить, какую операционную систему вы используете. Если этого не происходит, то убедитесь, что вы загрузили версию, которая подходит к вашей операционной системе и следуете инструкциям на экране. Откройте Etcher (если он не откроется автоматически сразу после установки) и выберите образ, который вы только что скачали.

Убедитесь, что вы выбрали правильный диск и запишите образ. Затем безопасно извлеките SD-карту. Маловероятно, что использование Etcher’а вызовет какую-нибудь ошибку, но если вдруг что-то с ним не получится, то попробуйте воспользоваться ApplePiBaker для Mac или Win32 Disk Imager для Windows.

Шаг 3. Настройка Wi-Fi

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

Если вы используете Windows,загрузите Notepad ++ или у вас могут возникнуть проблемы с тем, как Windows сохраняет переносы строк. После того, как вы его скачаете, откройте его и перейдите в меню «Edit», а затем «EOL Conversion» и нажмите «UNIX»

Чтобы Pi подключался к сети при загрузке, мы должны предоставить ему сетевые учетные данные. Сделать это можно с помощью файла wpa_supplicant.conf, который мы добавляем в загрузочный раздел SD-карты. Etcher отсоединил SD-карту, поэтому выньте ее из кардридера и снова вставьте. В Windows необходимо включить отображение расширений имен файлов на вкладке «Вид» в Проводнике, чтобы вы могли редактировать тип файла.

Затем, используя текстовый редактор, например Notepad++, создайте файл с именем «wpa_supplicant.conf». На скриншоте ниже мы создали новый текстовый документ, а затем переименовали его.

Скопируйте текст ниже, заменив SSID и PSK своей информацией, но не удаляйте кавычки. Если вы живете за пределами США, то можете найти свой код страны и тоже заменить его

Country=us update_config=1 ctrlinterface=/var/run/wpasupplicant network={ scan_ssid=1 ssid=»MyNetworkSSID» psk=»YourPassword» }

После этого сохраните файл и безопасно извлеките SD-карту. Если вы делаете много сборок Pi, то это может быть очень полезный файл, который имеет смысл хранить на рабочем столе и просто копировать на каждую новую Pi, чтобы быстро подключать ее к Wi-Fi.

Шаг 4. Собираем устройство

Самой важной частью процесса сборки является подключение камеры. Давайте посмотрим, как это должно быть сделано на Pi и Pi Zero.

Во-первых, поднимите черную пластиковую часть ленточного разъема, расположенную между разъемами HDMI и аудио на Pi 3.

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

На Pi Zero процесс похож. Вытяните черную пластиковую часть ленточного разъема.

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

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

Вставьте SD-карту в слот внизу Raspberry Pi. Последний этап - засунуть все это в тот корпус, который вы выбрали. Здесь у нас корпус Pi Foundation, который идет в комплекте CanaKit.

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

Наконец, подключите Pi к питанию.

Шаг 5. Запустите вашу Pi

Pi может потребоваться несколько минут, чтобы загрузиться в первый раз, поэтому можно сходить на кухню и сделать себе кофе или чаю, или можно начать записывать ОС на новую флешку если вы запланировали сделать несколько устройств. Через три-пять минут она должна загрузиться, поэтому найдем ее в нашей сети.

Ее IP-адрес можно найти несколькими способами. Например, можно открыть страницу администрирования вашего маршрутизатора и просмотреть все подключенные к нему устройства или воспользоваться программами типа Nmap, Fing или Angry IP Scanner . Если вы не можете найти его, то наиболее вероятной проблемой будет файл wpa_supplicant.conf. Дважды проверьте его и убедитесь, что информация в нем записана правильно.

Как только вы найдете IP-адрес Pi, вставьте его в адресную строку вашего браузера. Вы попадете на страницу входа камеры. По умолчанию имя пользователя - admin, а пароля нет.

Если все сделано правильно, то в верхнем левом углу мы увидим наш видеоканал.

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

По очевидным причинам, первая вещь, которую мы должны сделать - установить пароль администратора и пароль пользователя. Кликните на три горизонтальные полоски в левом верхнем углу экрана, а затем кликните на «General Settings».

К сожалению, вы не сможете изменить имя пользователя admin, но вы можете изменить «Surveillance Username». Как следует из названия, этот пользователь может просматривать только камеры, но не имеет прав изменять настройки. Идем дальше и устанавливаем пароли для обеих учетных записей.

Если вы находитесь в меню, то вы, может быть, захотите изменить имя камеры («Camera Name») в разделе «Video Device». Это очень полезно, когда у вас есть много камер или у вас есть кто-то, кто не знаком с настройкой камеры. После этого нажмите «Apply» на верхней панели, и камера перезапустится.

Когда камера перезапустится, нам нужно проверить наличие обновлений. Перейдите на вкладку «General Settings» и кликните «Advanced Settings». Когда вкладка развернется, кликните «Check» рядом с «Software Updates». Обновление ПО должно стать вашей привычкой.

Вы можете изменить часовой пояс и имя хоста. Здесь также вы должны безопасно отключать Pi.

Шаг 6. Исправление IP-адреса

Чтобы упростить себе процесс добавления камер и поиск этой веб-страницы в будущем, полезно установить статический IP-адрес. Найдите вкладку «Network» в настройках и откройте ее. Затем измените конфигурацию IP на статическую, установив IP в тот, который у нее есть в текущий момент.

Шаг 7. Добавление камер

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

Однако это не будет нормально работать, поскольку придется каждый раз заходить на веб-страницу для каждой новой камеры. И в связи с этим, у нас есть два варианта добавления новых камер. Первый заключается в том, чтобы иметь Pi-хост более чем для одной камеры, что можно сделать, если добавить новые веб-камеры к Pi. Это может быть полезно, если для покрытия всех углов в одной зоне наблюдения требуется несколько камер, но эта возможность ограничена вычислительной мощностью Pi. В зависимости от того, какое разрешение камеры и частоту кадров вы установили, вы можете избежать подобных проблем на Pi 3, но не на Pi Zero.

Чтобы добавить камеру в сеть, перейдите в верхнюю левую часть страницы и откройте вкладку «Settings», затем кликните «Camera 1» и «add camera».

Появится окно, по умолчанию оно будет искать любые локальные камеры на Pi. У нас камер больше нет, но если вы это сделаете, то появится раскрывающееся меню рядом с «Camera». Выберите ту, которую вы хотите добавить, и кликните «ОК».

Второй способ, который мы можем использовать, заключается в том, чтобы одна motionEye-камера дистанционно управляла другой motionEye-камерой. Мы даже можем обозначить одно из motionEye-устройств как хаб и добавить все другие камеры на основе motionEye к этому хабу в качестве удаленных motionEye-камер. Это лучше всего подходит для нашей сборки на основе Pi из-за ограниченной мощности процессора каждой отдельной Pi. Из Pi Zero получаются отличные удаленные камеры, с которыми Pi 3 выступает в качестве хаба.

Перейдите в меню «Add Camera», как и раньше, но на этот раз выберите «remote motionEye». Затем вам нужно предоставить информацию, причем URL-адресом будет статический IP-адрес, который мы установили несколькими шагами ранее. Если у этого Pi имеется более одной камеры, вы можете выбрать, какую из них добавить.

Шаг 8. Настройка обнаружения движения

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

Если у вас возникли проблемы с ложным срабатыванием камер, включите «Mask», и вы сможете выбрать те части кадра, которые нужно игнорировать. Это действительно полезно, если у вас есть деревья, которые шатаются на ветру, или автомобили, проезжающие по улице.

Заключение

Сегодня мы узнали, как сделать и настроить одну или несколько Raspberry Pi-камер, работающих под управлением motionEyeOS и объединить их в сеть.

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

Если у вас есть вопросы, не стесняйтесь оставлять их в комментариях!

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

Опубліковано 03.12.2014

Матрица камеры 5 MP , камера имеет объектив с фиксированным фокусом и позволяет получать фотоснимки с разрешением 2592×1944 . Видео: 1080p, FPS: 30 кадров в секунду, 720p при 60 кадров в секунду и 640×480 до 90 кадров в секунду. Камера полностью поддерживается операционной системой Raspbian.

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

Будьте осторожны! Статическое электричество может вывести камеру со строя! Модуль камеры подключается к Raspberry Pi гибким шлейфом в разъем, который расположен между Ethernet и HDMI .

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

Камера весит около 3 граммов и имеет миниатюрные размеры. Для нормальной фиксации камеры рекомендую сделать любой держатель. Держатель, который Вы видите на фото, напечатанный на 3D принтере.

Sudo apt-get update sudo apt-get upgrade

После чего запускаем raspi-config и включаем поддержку камеры:

Sudo raspi-config

Меняем Disable на Enable

Перезагружаем Raspberry Pi:

Съемка с Raspberry Pi с помощью модуля камеры

Существует два стандартных инструмента для работы с камерой raspivid и raspistill . Камера позволяет работать с графическими эффектами и общими параметрами камеры. Вы можете менять баланс белого, фокусировку, тип фото, экспозицию, ISO, и т.п.

Фото (raspistill)

Утилита производит захват изображения в формате JPEG. Использование параметров команды raspistill :

Usage: raspistill Image parameter commands -?, --help: This help information -w, --width: Set image width -h, --height: Set image height -q, --quality: Set jpeg quality <0 to 100> -r, --raw: Add raw bayer data to jpeg metadata -o, --output: Output filename (to write to stdout, use "-o -"). If not specified, no file is saved -l, --latest: Link latest complete image to filename -v, --verbose: Output verbose information during run -t, --timeout: Time (in ms) before takes picture and shuts down (if not specified, set to 5s) -th, --thumb: Set thumbnail parameters (x:y:quality) or none -d, --demo: Run a demo mode (cycle through range of camera options, no capture) -e, --encoding: Encoding to use for output file (jpg, bmp, gif, png) -x, --exif: EXIF tag to apply to captures (format as "key=value") or none -tl, --timelapse: Timelapse mode. Takes a picture every ms -fp, --fullpreview: Run the preview using the still capture resolution (may reduce preview fps) -k, --keypress: Wait between captures for a ENTER, X then ENTER to exit -s, --signal: Wait between captures for a SIGUSR1 from another process -g, --gl: Draw preview to texture instead of using video render component -gc, --glcapture: Capture the GL frame-buffer instead of the camera image -set, --settings: Retrieve camera settings and write to stdout -cs, --camselect: Select camera . Default 0 -bm, --burst: Enable "burst capture mode" Preview parameter commands -p, --preview: Preview window settings <"x,y,w,h">

Следующая команда записывает фото, сделанное камерой, в файл photo.jpg. Файл будет записан в текущей директории:

Raspistill -o photo.jpg

Фото будет размером 2592×1944 (5 Мп). Для изменения параметров фото используйте параметры, которые описаны выше.

Сделать фото 640×480:

Raspistill -o image.jpg -w 640 -h 480

Видео (raspivid)

Утилита производит захват видео в формате H264 . Использование параметров команды raspivid :

Usage: raspivid Image parameter commands -?, --help: This help information -w, --width: Set image width . Default 1920 -h, --height: Set image height . Default 1080 -b, --bitrate: Set bitrate. Use bits per second (e.g. 10MBits/s would be -b 10000000) -o, --output: Output filename (to write to stdout, use "-o -") -v, --verbose: Output verbose information during run -t, --timeout: Time (in ms) to capture for. If not specified, set to 5s. Zero to disable -d, --demo: Run a demo mode (cycle through range of camera options, no capture) -fps, --framerate: Specify the frames per second to record -e, --penc: Display preview image *after* encoding (shows compression artifacts) -g, --intra: Specify the intra refresh period (key frame rate/GoP size). Zero to produce an initial I-frame and then just P-frames. -pf, --profile: Specify H264 profile to use for encoding -td, --timed: Cycle between capture and pause. -cycle on,off where on is record time and off is pause time in ms -s, --signal: Cycle between capture and pause on Signal -k, --keypress: Cycle between capture and pause on ENTER -i, --initial: Initial state. Use "record" or "pause". Default "record" -qp, --qp: Quantisation parameter. Use approximately 10-40. Default 0 (off) -ih, --inline: Insert inline headers (SPS, PPS) to stream -sg, --segment: Segment output file in to multiple files at specified interval -wr, --wrap: In segment mode, wrap any numbered filename back to 1 when reach number -sn, --start: In segment mode, start with specified segment number -sp, --split: In wait mode, create new output file for each start event -c, --circular: Run encoded data through circular buffer until triggered then save -x, --vectors: Output filename for inline motion vectors -cs, --camselect: Select camera . Default 0 -set, --settings: Retrieve camera settings and write to stdout H264 Profile options: baseline,main,high Preview parameter commands -p, --preview: Preview window settings <"x,y,w,h"> -f, --fullscreen: Fullscreen preview mode -op, --opacity: Preview window opacity (0-255) -n, --nopreview: Do not display a preview window Image parameter commands -sh, --sharpness: Set image sharpness (-100 to 100) -co, --contrast: Set image contrast (-100 to 100) -br, --brightness: Set image brightness (0 to 100) -sa, --saturation: Set image saturation (-100 to 100) -ISO, --ISO: Set capture ISO -vs, --vstab: Turn on video stabilisation -ev, --ev: Set EV compensation -ex, --exposure: Set exposure mode (see Notes) -awb, --awb: Set AWB mode (see Notes) -ifx, --imxfx: Set image effect (see Notes) -cfx, --colfx: Set colour effect (U:V) -mm, --metering: Set metering mode (see Notes) -rot, --rotation: Set image rotation (0-359) -hf, --hflip: Set horizontal flip -vf, --vflip: Set vertical flip -roi, --roi: Set region of interest (x,y,w,d as normalised coordinates ) -ss, --shutter: Set shutter speed in microseconds -awbg, --awbgains: Set AWB gains - AWB mode must be off -drc, --drc: Set DRC Level

Следующая команда записывает 20 секунд видео в формате h264:

Raspivid -t 20000 -o video.h264

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

Потоковое видео

Для получения потокового видео установим на Raspberry Pi mjpg-streamer . Сначала установим необходимые для mjpg-streamer пакеты:

Apt-get install cmake apt-get install subversion apt-get install libv4l-dev apt-get install libjpeg8-dev apt-get install imagemagick

Теперь устанавливаем mjpg-streamer :

Wget github.com/jacksonliam/mjpg-streamer/archive/master.zip unzip ./master -d ./ms cd ./ms/mjpg-streamer-master/mjpg-streamer-experimental make clean all

Для настройки mjpg-streamer корректируем файл start.sh :

Nano start.sh

Все строки комментируем или удаляем и добавляем две следующие строки:

Cd /root/ms/mjpg-streamer-master/mjpg-streamer-experimental ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 10 -ex auto -awb auto -vs -ISO 100"

где:
-x 640 – размер видео по горизонтали
-y 480 – размер видео по вертикали
-fps 10 – частота кадров
-ex auto – автоматическая экспозиция
-awb auto – автоматический баланс белого
-vs – вертикальная синхронизация
-ISO 100 – параметры ISO

Запускаем mjpg-streamer :

./start.sh

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

Где 192.168.1.100 – IP адрес моего Raspberry Pi. Вам нужно изменить его на адрес своего Raspberry Pi.

Видео можно просматривать также с мобильных устройств – планшетов, смартфонов, и тому подобное. Для просмотра видео на смартфоне с операционной системой Android я использую программу IP Cam Viewer Lite .

Чтобы остановить mjpg-streamer в консоли нажмите Ctrl+c

Time lapse Video

Теперь попробуем сделать Time lapse видео . Этот прием используется для съемки очень медленных процессов. Делается серия фото с определенным интервалом, как правило, от 1 секунды и более (это зависит от скорости процесса, который Вы снимаете). Затем из набора фото создается видео с помощью любой доступной программы, которая имеет такие функции. Многие фотокамеры умеют делать снимки для Time lapse Video, но Raspberry Pi имеет некоторые преимущества. Кроме съемки, Raspberry Pi может делать другие вещи, например, включать свет на момент съемки, а затем выключать его. Это весьма уместно, когда съемка идет несколько недель с достаточно большими временными интервалами. Не нужно, чтобы свет горел все время, особенно если съемка требует мощного освещения. Raspberry Pi питается от сети, что необходимо для длительной съемки достаточно медленных процессов, таких как рост кристаллов или жизнь растений, процесс съемки которых может затянуться на несколько дней, недель или даже месяцев. Сделанные фото можно копировать на другой компьютер и обрабатывать еще в процессе съемок. При съемках, когда камера должна изменять свое положение, Raspberry Pi может помочь автоматизировать этот процесс.

Итак, самый простой путь для создания серии фото для Time lapse Video – воспользоваться ключом -tl в команде raspistill . Например:

Raspistill -t 600000 -tl 10000 -o image_num_%d_today.jpg

Эта команда будет создавать фото каждые 10 (-tl 10000) секунд в течение 10 минут (10 минут = 600000мс). Файлы будут называться image_num_1_today.jpg , image_num_2_today.jpg , image_num_3_today.jpg и так далее. Для съемки небольшого видео такой метод вполне пригоден. Но при съемках длительных процессов может возникнуть небольшая проблема. Если питание Raspberry Pi по каким-либо причинам прервется, придется снова запускать команду.

Это меня не устроило. Поэтому я написал скрипт и указал его запуск в crontab . Содержание срипта:

#!/bin/bash echo 11 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio11/direction echo 1 > /sys/class/gpio/gpio11/value DATE=$(date +"%Y-%m-%d_%H%M") raspistill -o /root/camera/$DATE.jpg echo 0 > /sys/class/gpio/gpio11/value echo 11 > /sys/class/gpio/unexport

Строка в crontab:

*/10 * * * * root /root/camera/camera.bash

Теперь скрипт запускается каждые 10 минут. Даже если Raspberry Pi перезагрузится, скрипт будет запускаться. Скрипт включает свет (к GPIO11 подключена схема, которая включает лампу освещения), делает фото и затем выключает свет.

Собрать видео из полученных фото можно воспользовавшись утилитой avconv . Устанавливается avconv следующей командой:

Apt-get install libav-tools

Фото должны иметь имена файлов в своеобразном формате. Пример скрипта, который переименовывает jpg файлы в текущей директории с учетом их даты модификации, запускает конвертацию и записывает видео в файл timelapse.avi :

#!/bin/bash i=0 for f in `ls -tr *.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 timelapse.avi

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

Вот что у меня получилось:

Это первое тестовое видео сделано для подбора параметров съемки.

Надписи на фото

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

Модифицируем скрипт чтобы он добавлял в левый верхний угол снятого фото дату и время:

#!/bin/bash echo 11 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio11/direction echo 1 > /sys/class/gpio/gpio11/value DATE=$(date +"%Y-%m-%d_%H%M") timeshtamp=$(date +"%Y.%m.%d %H:%M:%S") raspistill -o /root/camera/tmp.jpg convert /root/camera/tmp.jpg -fill black -draw "rectangle 0,0 420,70" -fill white -pointsize 45 -draw "text 10,50 "${timeshtamp}"" /root/camera/$DATE.jpg rm /root/camera/tmp.jpg echo 0 > /sys/class/gpio/gpio11/value echo 11 > /sys/class/gpio/unexport

Теперь на всех фото будут дата и время съемки. Сначала на фото рисуется прямоугольник черного цвета (-fill black -draw “rectangle 0,0 420,70” ), а затем белым цветом пишется время (-fill white -pointsize 45 -draw “text 10,50 ‘${timeshtamp}"” ).

Успехов .

Доброе время суток!

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

  • Одноплатный компьютер Raspberry Pi Model B
  • Web-камера LOGITECH HD Webcam C270
Прочитав я решил немного развить идею автора.
Знакомство
Итак, для начала познакомимся c главным «компонентом»:
Внешний вид Raspberry Pi:

Характеристики:

  • Broadcom BCM2835 700MHz ARM1176JZFS processor with FPU and Videocore 4 GPU
  • GPU provides Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode
  • GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs with texture filtering and DMA infrastructure
  • 512MB RAM
  • Boots from SD card, running a version of the Linux operating system
  • 10/100 BaseT Ethernet socket
  • HDMI video out socket
  • 2 x USB 2.0 sockets
  • RCA composite video out socket
  • SD card socket
  • Powered from microUSB socket
  • 3.5mm audio out jack
  • Raspberry Pi HD video camera connector
  • Size: 85.6 x 53.98 x 17mm"
pi@hall-pi ~ $ cat /proc/cpuinfo processor: 0 model name: ARMv6-compatible processor rev 7 (v6l) BogoMIPS: 2.00 Features: swp half thumb fastmult vfp edsp java tls CPU implementer: 0x41 CPU architecture: 7 CPU variant: 0x0 CPU part: 0xb76 CPU revision: 7 Hardware: BCM2708 Revision: 000e Serial: 000000005a82c372

Список официально поддерживаемых дистрибутивов можно найти . Я же остановил свой выбор на Raspbian без графической оболочки.

Процесс установки достаточно прост и не нуждается в подробном описании, поэтому перечислю основные факты, на которые стоит обратить внимание:

  1. Настройка часового пояса
  2. Настройка имени компьютера
  3. Включение доступа по SSH
  4. Обновление системы
После выполнения всех необходимых настроек можно приступать.
Подготовка
Для начала выполним установку всех необходимых пакетов:
sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
После чего скачаем и соберем mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Т.к. у нас все данные будут храниться в облаке, настроим работу с удаленной файловой системой по WebDAV:
sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
Для того, чтобы не вводить каждый раз имя пользователя и пароль, нужно добавить их в файл
/etc/davfs2/secrets
/mnt/dav user password
Рабочий процесс
Добавим в /etc/rc.local команды для монтирования WebDAV и запуска скрипта для трансляции в сеть:
mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
Теперь, зайдя по адресу http://:8080/ мы получим доступ к камере. Осталось только сделать проброс порта на роутере и можно получить доступ к камере за пределами локальной сети.
Создание timelapse видео
Первым делом нам надо получить изображение с камеры. Т.к. она уже занята (изображение транслируется веб-сервером), то воспользуемся возможностью получения текущей картинки с веб-сервера:
curl http://localhost:8080/?action=snapshot > out.jpg
В случае, если мы хотим нарисовать дату снимка на изображение, то мы можем воспользоваться командой convert
timestamp=`stat -c %y out.jpg` convert out.jpg -fill black -fill white -pointsize 15 -draw "text 5,15 "${timestamp:0:19}"" out_.jpg
Полная версия скрипта:
#!/bin/bash filename=$(perl -e "print time") foldername=$(date --rfc-3339=date) curl http://localhost:8080/?action=snapshot > $filename timestamp=`stat -c %y $filename` mkdir /mnt/dav/out/$foldername convert $filename -fill black -fill white -pointsize 15 -draw "text 5,15 "${timestamp:0:19}"" /mnt/dav/out/$foldername/$filename.jpg rm $filename
Сборка видео осуществляется командой avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Полная версия скрипта сборки видео:
#!/bin/bash filename=$(date --rfc-3339=date) i=0 for f in `ls -tr /mnt/dav/out/$filename/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done rmdir -R /mnt/dav/out/$filename/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filename.avi rm *.jpg
Теперь осталось только прописать выполнение скриптов в планировщике Cron:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Пример видео
Заключение
Данный подход помогает избавиться от необходимости траты большого количества времени на просмотр видео, а так-же удешевляет конечный продукт. Благодаря присутствию полноценной ОС, появляется возможность расширять функционал в нужном направлении.

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

Сама плата камеры крошечная. Ее размеры лишь 25x20x9 мм, а весит всего 3 грамма и поставляется с 15 см ленточным кабелем.


Датчик камеры 5 MP, имеет объектив с фиксированным фокусом и позволяет получить фотоснимки с разрешением 2592x1944. Поддержка видео: 1080p 30 кадров в секунду (fps), 720p при 60 fps и разрешением 640x480 со скоростью до 90 fps. Полная поддержка камеры добавлена ​​к Raspbian ОС, которую нужно обновить.

Скажите «чи-и-из» для Wheezy

Прежде чем двигаться дальше, Вам необходимо подключение к Интернету. Модуль камеры требует, чтобы Raspian ОС была обновлена ​​до последней версии, потому что так можно установить необходимые драйвера и инструменты.

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

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

Для камеры выделенной шиной является ленточный разъем ближе к порту Ethernet. Он имеет конструкцию нулевого усилия вставки (ZIF): надо только подтянуть два боковых зажимы, чтобы освободить скобу.

Вам нужно разместить ленту с введением от края соединения вблизи порта Ethernet и до конца разъема питания Pi. Держите квадрат ленты на месте и раздвиньте фиксаторы так, чтобы зафиксировать ленту в нужном положении. Обратите внимание на фото, что гибкий кабель вставляется серебряными контактами в сторону порта HDMI:


Подключите все к Raspberry Pi и загрузитесь с SD-карты, выбрав для установки стандартную ОС Raspbian "Wheezy", а затем перезагрузитесь. Имя пользователя и пароль по умолчанию "pi" и "raspberry", соответственно.

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

sudo apt-get update

sudo apt-get upgrade -y

Теперь нам нужно использовать инструмент настройки Raspberry Pi, чтобы проверить распределение памяти GPU, потому что нужно не менее 128 как буфер для всех видеоданных, которые вот-вот будут залиты в память. При этом фактически выполняется активация шины камеры. Введите в терминале:

sudo raspi-config

Сначала выберите "Advanced > Memory_split" (Расширенный > Распределение памяти) - он должен быть уже установлен на 128, но если нет, то внесите изменения. Система камеры, вроде, нормально работает даже при 16, но рекомендуется 128.

Наконец, есть вариант поддержки камеры Enable/Disable Camera (включение/выключение камеры), выберите Enable (включить):



Виберите Finish (готово), а дальше Reboot - для перезагрузки:


Съемка с Raspberry Pi

Есть два инструмента командной строки для доступа к модулю камеры - это raspivid и raspistill .

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

Ниже приведены примеры команд с терминала и что они будут делать, время захвата по умолчанию 5 секунд, воспользуйтесь параметром -t , чтобы указать более длительный период в миллисекундах, так -t 20000 означает "в течение 20 секунд".

Видео

Отображение пять секунд в режиме демо: raspivid -d

Показывает 10 с видео в демо-режиме: raspivid -о video.h264 -t 10000 -d

Отображение 640х480 превью: raspivid -p 0,0,640,480

Захват 20 секунд видео в формате h264: raspivid -t 20000 -o video.h264

Использование параметров изображения в команде raspivid

Синтаксис: RaspiVid [параметры]

Помощь: Информация для помощи
. По умолчанию 1920
. По умолчанию 1080
-b , - битрейт: Указанный битрейт. Используйте биты в секунду (например, 10Mbits/s будет -b 10000000 )
-o , - выход: Выходной файл (для записи на stdout, использовать"-o - ")

-t , - время ожидания: Время (в мс) к фотографированию и отключения. Если не указано, устанавливается 5 секунд

-fps - частота кадров: Установите частоту кадров в секунду для записи
-e , - penc: Показать изображения для предварительного просмотра *после* кодирования (показать артефакты сжатия)

<"x,y,w,h">

Фото

Захват изображения в JPEG формате: raspistill -о image.jpg

Сделать фото 640x480: raspistill -o image.jpg -w 640 -h 480

Сделать JPEG пониженного качества: raspistill -o image.jpg -q 5

Использование параметров изображения в команде RaspiStill

Синтаксис: RaspiStill [параметры]

Параметры команд для изображения

Помощь: Информация для помощи
-w , - ширина: Установите ширину изображения
-h , - высота: Указанная высота изображения
-q , - качество: Установка качества JPEG <0 до 100>
-r , - raw: Добавить данные raw bayer в JPEG метаданные
-o , - выход: Выходной файл (для записи на stdout, использовать "-o -"). Если не указано, файл не сохраняется
-v , - подробно: Вывод подробностей во время работы
-t , - время ожидания: Время (в мс) к фотографированию и выключению (если не указано, то устанавливается в 5 секунд)
-th , - thumb: Установить параметры эскиза (х:у:качество)
-d , - демо: Запуск демонстрационного режима (цикл через ряд параметров камеры, захвата нет)
-e , - кодирование: Кодирование, используемое для выходного файла (JPG, BMP, GIF, PNG)
-x , - exif: Тег EXIF для применения к захватам (формат как "key=value")
-tl , - timelapse: Режим интервальной съемки. Делает снимок каждые мс

Параметры команд предварительного просмотра

P , - предварительный просмотр: Параметры окна просмотра <"x,y,w,h">
-f , - полноэкранный: Полноэкранный режим просмотра
-n , - без предварительного просмотра: Не показывать окно предварительного просмотра

Дополнительные параметры команд для видео и изображения

Sh , - резкость: Установка резкости изображения (от -100 до +100)
-co , - контраст: Установка контрастности изображения (от -100 до +100)
-br , - яркость: Установка яркости изображения (от 0 до 100)
-sa , - насыщение: Установка насыщенности изображения (от -100 до +100)
-ISO , - ISO: Указанное ISO для захвата
-vs , - vstab: Включить видео стабилизацию
-ev , - ev: Установить экспокоррекцию
-ex , - экспозиция: Установить режим экспозиции
-awb , - awb: Установить режим AWB
-ifx , - imxfx: Установить эффект изображения
-cfx , - colfx: Установить цветовой эффект (U:V)
-mm , - metering: Установить режим замера экспозиции
-rot , - вращение: Поворот изображения (0-359)
-hf , - hflip: Горизонтальный флип
-vf , - vflip: Вертикальный флип

По умолчанию папка для сохранения изображений "/home/pi " поэтому, если Вам просто необходимо проиграть сохраненное видео, то проще загрузиться в графический интерфейс с startx, открыть "File Manager" и использовать "LXTerminal" для команд камеры.

Как организувать потоковое видео с Raspberry Pi

Для просмотра канала на Linux

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