Реклама

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

Что вам нужно

  • Raspberry Pi 2 или 3 с картой Micro SD
  • Arduino UNO или аналогичный
  • 2 х микро или мини хобби серво
  • USB вебкамера
  • Мужские и мужские соединительные провода
  • Мужские и женские соединительные провода
  • Ассорти молнии

Построение камеры безопасности

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

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

Серво-Оборудование

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

instagram viewer

Pi-Pan-Tilt-камера

Слово о веб-камерах

Не все веб-камеры USB созданы одинаково. Подключите веб-камеру к USB-порту вашего Pi и выполните следующую команду:

lsusb

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

Настройка сервопривода

Хотя сервоприводы могут показаться страшными и сложными, их действительно довольно просто подключить. Сервоприводы работают с широтно-импульсной модуляцией (ШИМ), которая позволяет цифровым системам имитировать аналоговые сигналы. Сигналы ШИМ - это, по сути, сигнал быстрого включения-выключения Сигнал ON или HIGH описывается с использованием коэффициента заполнения. Рабочий цикл выражается в процентах и ​​описывает, как долго сигнал включен. Сигнал ШИМ с рабочим циклом 25% будет включен в течение 25% времени и выключен в течение оставшихся 75%. Сигнал не включается в начале, а затем выключается вечно, он пульсирует регулярно в течение очень короткого периода времени.

Сервоприводы слушают эти импульсы и действуют соответственно. Использование коэффициента заполнения 100% будет таким же, как «обычный» 5 В, а 0% будет таким же, как заземление. Не беспокойтесь, если вы не до конца понимаете, как работает ШИМ, вы все равно можете управлять сервоприводами (Extreme Electronics - хорошее место, чтобы узнать больше).

Существует два основных способа использования ШИМ - аппаратный или программный. Аппаратная широтно-импульсная модуляция часто обеспечивает более низкую задержку (как долго между сервоприводом, получающим команду и движется), чем программная широтно-импульсная модуляция, однако Pi имеет только один вывод с аппаратной широтно-импульсной модуляцией. Внешние цепи доступны для обеспечения нескольких каналов аппаратного ШИМ, однако простой Arduino также может справиться с этой задачей, поскольку они имеют несколько аппаратных выводов ШИМ.

Вот схема:

Pi-Servo-соединение

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

  • Красный положительный, подключите это к Pi + 5v
  • Коричневый или черный отрицательный, подключите это к GND на Pi
  • Оранжевый или белый сигнал, подключите его к контактам 9 и 10 Arduino

Настройка Arduino

Новичок в Arduino? Начните здесь Начало работы с Arduino: руководство для начинающихArduino - это платформа для создания прототипов электроники с открытым исходным кодом, основанная на гибком, простом в использовании аппаратном и программном обеспечении. Он предназначен для художников, дизайнеров, любителей и всех, кто заинтересован в создании интерактивных объектов или сред. Прочитайте больше .

После подключения сервоприводов откройте Arduino IDE на своем компьютере и загрузите этот тестовый код. Не забудьте выбрать правильную плату и порт из Инструменты> Доска и Инструменты> Порт меню

#включают // Импортируем библиотеку Servo servoPan, servoTilt; // Создание сервообъектов. int servoMin = 20, servoMax = 160; // Определяем пределы сервоприводов void setup () {// Настройка сервоприводов на штырьки с поддержкой ШИМ servoPan.attach (9); servoTilt.attach (10); } void loop () {for (int i = servoMin; я  сервомин; --i) {// Переместить сервоприводы от максимума к минимуму servoPan.write (i); servoTilt.write (i); задержка (100); // Ждем 100 мс} }

Все хорошо, вы должны видеть, как оба сервопривода медленно движутся вперед и назад. Обратите внимание, как «servoMin» и servoMax »определяются как 20 и 160 градусов (вместо 0 и 180). Это отчасти потому, что эти дешевые сервоприводы не могут точно перемещаться на все 180 градусов, а также из-за физического размера веб-камеры препятствует использованию полного диапазона. Возможно, вам придется настроить их для вашей настройки.

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

Сервоприводы почти слишком мощный для Arduino для питания, поэтому они будут питаться от Pi. Рельс 5v на Пи ограничено 750 мА для всего Pi, и Pi потребляет приблизительно 500 мА, оставляя 250 мА для сервоприводы. Эти микро сервоприводы потребляют около 80 мА, что означает, что Pi должен быть в состоянии справиться с двумя из них. Если вы хотите использовать больше сервоприводов или более мощные модели, вам может потребоваться внешний источник питания.

Теперь загрузите следующий код в Arduino. Это будет слушать входящие последовательные данные (последовательный как в Универсальном последовательный Шина или USB). Пи отправит эти данные через USB на Arduino, сообщив, куда перемещать сервоприводы.

#включают // Импортируем библиотеку Servo servoPan, servoTilt; // Создать сервообъект. Строковые данные = ""; // Сохранение входящих команд (буфер) void setup () {// Настройка сервоприводов на штырьки с поддержкой ШИМ servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Начать серию со скоростью 9600 бит / с (скорость) } void loop () {while (Serial.available ()> 0) {// Если есть данные char singleChar = Serial.read (); // Прочитать каждый символ if (singleChar == 'P') {// Переместить сервопривод панорамирования servoPan.write (data.toInt ()); данные = ""; // Очистить буфер} else if (singleChar == 'T') {// Переместить сервопривод наклона servoTilt.write (data.toInt ()); данные = ""; // Очистить буфер} else {data + = singleChar; // Добавить новые данные}} }

Вы можете проверить этот код, открыв серийный монитор (верхний правый> последовательный монитор) и отправив некоторые тестовые данные:

  • 90P
  • 0P
  • 20T
  • 100T

Обратите внимание на формат команд - значение, а затем буква. Значение - это положение сервопривода, а буква (заглавными буквами) указывает сервопривод панорамирования или наклона. Поскольку эти данные передаются от Pi последовательно, каждый персонаж проходит по одному за раз. Arduino должен «хранить» их, пока не будет передана вся команда. Последняя буква не только указывает сервопривод, но и позволяет Arduino знать, что в этой команде больше нет данных.

Наконец, отсоедините Arduino от компьютера и подключите его к Raspberry Pi через обычный порт USB.

Настройка Pi

Теперь пришло время настроить Pi. Первый, установить операционную систему Как установить операционную систему на Raspberry PiВот как установить ОС на Raspberry Pi и как клонировать идеальную настройку для быстрого аварийного восстановления. Прочитайте больше . Подключите веб-камеру и Arduino к Pi USB.

Обновите Pi:

sudo apt-get update. sudo apt-get upgrade

Установить движение:

sudo apt-get установить движение

Motion - это программа, предназначенная для потоковой передачи через веб-камеру. Он справляется со всеми тяжелыми работами и даже может выполнять запись и обнаружение движения (попробуйте построение системы безопасности захвата движения Создайте систему безопасности Motion Capture, используя Raspberry PiИз многих проектов, которые вы можете построить с помощью Raspberry Pi, одним из наиболее интересных и неизменно полезных является система безопасности захвата движения. Прочитайте больше ). Откройте файл конфигурации Motion:

sudo nano /etc/motion/motion.conf

Этот файл предоставляет множество опций для настройки движения. Настройте следующим образом:

  • демон включен - запустить программу
  • частота кадров: 100 - сколько кадров или изображений в секунду для потоковой передачи
  • stream_localhost off - разрешить доступ через сеть
  • ширина 640 - ширина видео, настроить для вашей веб-камеры
  • высота 320 - высота видео, настроить для вашей веб-камеры
  • stream_port 8081 - порт для вывода видео на
  • output_picture off - не сохранять изображения

Это довольно большой файл, поэтому вы можете использовать CTRL + W искать строки. Когда закончите, нажмите CTRL + X и затем подтвердите, чтобы сохранить и выйти.

Теперь отредактируйте еще один файл:

sudo nano / etc / default / motion

Установите «start_motion_daemon = yes». Это необходимо для обеспечения работы Motion.

Теперь узнайте свой IP-адрес:

Ifconfig

Эта команда покажет детали сетевого подключения для Pi. Посмотрите на вторую строку, интернет адрес. Вы можете установить статический IP-адрес (что такое статический IP? Что такое статический IP-адрес? Вот почему вам не нуженСтатический IP-адрес никогда не меняется. Динамические IP-адреса меняются. Мы объясним, почему вам не нужен статический IP-адрес. Прочитайте больше ), но пока запишите этот номер.

Теперь запустите Motion:

sudo service motion start

Вы можете остановить или перезапустить Motion, изменив «start» на «stop» или «restart».

Переключитесь на свой компьютер и перейдите к Pi из веб-браузера:

http://xxx.xxx.x.xx: 8081

Где xxx.xxx.x.xx - IP-адрес Pi. Двоеточие, за которым следует число, - это порт, который был настроен ранее. Все хорошо, вы должны видеть поток с вашей веб-камеры! Попробуйте передвигаться и посмотреть, как все выглядит. Возможно, вам придется настроить яркость и контрастность в файле конфигурации. Возможно, вам придется сфокусировать веб-камеру - у некоторых моделей есть небольшое кольцо фокусировки вокруг объектива. Поворачивайте это, пока изображение не станет самым резким.

Вернитесь на Pi, создайте папку и перейдите в нее:

MKDIR Security-Cam. cd security-cam /

Теперь установите Twisted:

sudo apt-get установить Python-Twisted

Twisted - это веб-сервер, написанный на Python, который будет прослушивать команды и затем действовать соответствующим образом.

После установки создайте скрипт Python для выполнения команд (переместите сервоприводы).

sudo nano servos.rpy

Обратите внимание, что расширение файла «.rpy» вместо «py». Вот код:

# Импорт необходимых файлов. импортный сериал. из twisted.web.resource import Resource # Setup Arduino на правильной скорости. попробуй: arduino = серийный. Serial ('/ dev / ttyUSB0', 9600) кроме: arduino = серийный. Серийный ('/ dev / ttyUSB1', 9600) класс MoveServo (Resource): isLeaf = True def render_GET (self, request): try: # Отправить значение более последовательный к Arduino arduino.write (request.args ['value'] [0]) возвращает 'Success', кроме: return 'Failure' resource = MoveServo ()

Теперь запустите веб-сервер:

sudo twistd -n web -p 80 --path / home / pi / security-cam /

Давайте разберемся - «-p 80» указывает порт (80). Это порт по умолчанию для веб-страниц. «–Path / home / pi / security-cam /» указывает Twisted запустить сервер в указанном каталоге. Если вы внесете какие-либо изменения в сценарии внутри папки «security-cam», вам потребуется перезагрузить сервер (CTRL + X чтобы закрыть, затем снова запустите команду).

Теперь создайте веб-страницу:

sudo nano index.html

Вот код веб-страницы:

Воспользуйтесь камерой безопасности DIY


Измените «PI_IP_ADDRESS» (используется дважды) на реальный IP-адрес вашего Pi (raspberrypi.local также должен работать, если вы используете последнюю версию Raspian). Перезапустите веб-сервер и затем перейдите к Pi с вашего компьютера, не нужно указывать порт. Вы должны иметь возможность перемещаться влево и вправо и видеть видеопоток:

Pi-Pan-Tilt-камера-Web-View

Там у вас есть это. Ваша собственная сетевая камера Pan and Tilt. Если вы хотите открыть свою веб-камеру в Интернете, не забудьте рассмотреть опасности 5 опасностей, которые следует учитывать при указании домашних камер безопасностиВажно тщательно обдумать, где вы располагаете свои камеры и на какие части вашего дома вы их указываете. Безопасность вещей важна, но и ваша конфиденциальность тоже важна. Прочитайте больше - тогда посмотри в Перенаправление порта Что такое переадресация портов и как это может мне помочь? [MakeUseOf Объясняет]Ты немного плачешь внутри, когда кто-то говорит тебе, что есть проблема с переадресацией портов, и поэтому твое блестящее новое приложение не будет работать? Ваш Xbox не позволит вам играть в игры, ваши торрент-загрузки отказываются ... Прочитайте больше Ваш маршрутизатор знает, куда отправлять входящие запросы. Вы можете добавить внешний источник питания 3 батарейных блока Raspberry Pi для портативных проектовАккумулятор Raspberry Pi может превратить обычный Pi в портативный компьютер. Вам нужно одно из этих решений батареи, чтобы начать. Прочитайте больше и адаптер Wi-Fi для действительно портативной установки.

Вы сделали что-нибудь классное с веб-камерой и пи? Дайте мне знать в комментариях, я хотел бы видеть!

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