Оглавление:

Камера обнаружения движения Raspberry Pi 3 с прямой трансляцией: 6 шагов
Камера обнаружения движения Raspberry Pi 3 с прямой трансляцией: 6 шагов

Видео: Камера обнаружения движения Raspberry Pi 3 с прямой трансляцией: 6 шагов

Видео: Камера обнаружения движения Raspberry Pi 3 с прямой трансляцией: 6 шагов
Видео: Камера распознающая объекты, их размер и расстояние - делаем сами 2024, Ноябрь
Anonim
Камера обнаружения движения Raspberry Pi 3 с прямой трансляцией
Камера обнаружения движения Raspberry Pi 3 с прямой трансляцией

Вступление

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

Этот проект состоит из нескольких этапов:

  • Вступление
  • Настройка вашего Pi
  • SSHing в ваш Pi
  • Отправка вашего IP-адреса по электронной почте при загрузке
  • Установка и настройка Motion
  • Отправка видео из Motion по электронной почте при обнаружении
  • Устранение неполадок и источники

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

  • Модель Raspberry Pi 3 b ~ $ 35
  • Карта Micro SD 8 ГБ ~~ $ 10
  • Веб-камера USB ~ ~ 20 долларов (в этом проекте использовалась веб-камера Logitech HD Webcam c270)
  • кабель micro usb ~~ $ 5
  • или:
  • перезаряжаемый аккумулятор на 5 В (резервная батарея телефона), это делает ваш проект беспроводным ~~ $ 20
  • или
  • сетевой адаптер USB ~~ $ 5
  • Wi-Fi соединение

К чему вам понадобится доступ для настройки:

  • Монитор
  • Мышь и клавиатура
  • Компьютер со слотом для SD-карты
  • Конвертер Micro SD в SD-карту (должен поставляться с вашей micro SD-картой)

Шаг 1: настройка вашего Pi

Настройка вашего Pi
Настройка вашего Pi

Теперь давайте настроим ваш Pi

Для начала убедитесь, что у вас есть все необходимые предметы с последнего шага. Затем следуйте инструкциям на веб-сайте Raspberry Pi по установке Raspbian Jessie на карту Microsd, которые можно найти здесь.

После того, как вы установили Raspbian на свой Pi, пришло время настроить некоторые основные функции.

Вай фай

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

SSH

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

Шаг 2. Подключение по SSH к вашему PI

SSHing в вашем PI
SSHing в вашем PI
SSHing в вашем PI
SSHing в вашем PI

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

Чтобы подключиться к вашему Pi по SSH, вам нужно выполнить следующие 3 простых шага.

Во-первых, вам нужно включить SSH на вашем Pi. Для этого откройте командное окно на вашем Pi и введите:

sudo raspi-config

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

Затем вам нужно найти IP-адрес вашего Pi. В командном терминале введите:

sudo ifconfig

И ваш IP-адрес должен быть в всплывающем разделе wlan0, прямо под Link encap: ethernet. На демонстрационном изображении выше IP-адрес 192.168.1.10.

Наконец, вам нужно либо открыть встроенное приложение терминала на Mac, либо найти и следовать инструкциям для стороннего приложения ssh для Windows. В приложении Терминал введите:

ssh pi @ ВАШ IP-АДРЕС

Если вы не меняли пароль в Raspi-config, тогда вашим паролем для входа при появлении запроса будет пароль по умолчанию: raspberry.

Оттуда все должно быть хорошо!

Шаг 3. Отправьте свой IP-адрес по электронной почте при загрузке

Отправьте свой IP-адрес по электронной почте при загрузке
Отправьте свой IP-адрес по электронной почте при загрузке

На этом этапе мы сосредоточимся на том, как получить доступ к вашему Raspberry Pi, независимо от того, в какой сети вы находитесь. В зависимости от сети IP-адрес Pi меняется. И если у вас нет настройки монитора, вам нужно будет подключиться к Pi по ssh, чтобы запустить протокол обнаружения движения, изменить настройки движения или получить доступ к чему-либо еще на устройстве. Чтобы решить эту проблему, мы напишем скрипт на Python, который отправит нам по электронной почте текущий IP-адрес Pi при запуске. Скрипт python выглядит следующим образом и хранился в каталоге с пометкой «background».

# начать в домашнем каталоге

cd ~

# создать фоновую папку

mkdir фон

# создать скрипт Python

sudo nano emailip.py

#write в emailip.py

импортный сокет

s = socket.socket (socket. AF_INET, socket. SOCK_DGRAM)

s.connect (("8.8.8.8", 80))

print (s.getsockname () [0]) x = s.getsockname () [0] s.close ()

импортировать smtplib

из электронной почты. MIMEMultipart import MIMEMultipart

из электронной почты. MIMEText import MIMEText

fromaddr = "ВАШ АДРЕС"

toaddr = "АДРЕС ПОЛУЧЕНИЯ"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['Кому'] = toaddr

msg ['Subject'] = "IP-адрес"

body = xmsg.attach (MIMEText (body, 'простой'))

сервер = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, «ВАШ ПАРОЛЬ»)

текст = msg.as_string ()

server.sendmail (fromaddr, toaddr, текст)

server.quit ()

# тогда это происходит при перезагрузке

sudo nano /etc/rc.local

#enter в /etc/rc.local

в то время как ! / sbin / ifconfig wlan0 | grep -q 'адрес inet: [0-9]';

спать 3

сделано

_IP = $ (имя хоста -I) || правда

если ["$ _IP"]; тогда

printf "Мой IP-адрес% s / n" "$ _IP"

python /home/pi/Background/emailip.py &

фи

выход 0

#и вы сделали

Шаг 4: Установка и настройка движения

Установка и настройка движения
Установка и настройка движения

# обновить пи

sudo apt-get update

sudo apt-get upgrade

#скачать

sudo apt-get install motion

# теперь отредактируйте этот файл со следующими изменениями

sudo nano /etc/motion/motion.conf

# чтобы установить стандарт для этого урока, измените

#################

демон на

stream_localhost выключен

webcontrol_localhost выключен

ffmpeg_output_movies на

целевой_директор / var / lib / движение

##################

#local параметры потоковой передачи в веб-браузере

##################

stream_maxrate 100 # Это позволит осуществлять потоковую передачу в реальном времени, но требует большей пропускной способности и ресурсов

частота кадров 60 # Это позволит снимать 60 кадров в секунду # чем выше это значение, тем медленнее обработка видео

width 640 # Это изменяет ширину отображаемого изображения

height 480 # Это изменяет высоту отображаемого изображения

##################

# отправка настроек видео по электронной почте в… / motion.conf

##################

# удалите ";" перед строкой, точка с запятой закомментирует строку

on_event_start python /home/pi/background/motionalert.py% f

on_movie_end python /home/pi/background/motionvid.py% f

##################

#астектика

##################

# варианты, описанные в файле

output_pictures locate_motion_style

##################

# тогда измени

Судо нано / и т. д. / по умолчанию / движение

#сказать

start_motion_daemon = да

# последний, начни с ** а

запуск службы sudo

# вы можете изменить команду на "стоп" или "перезапуск"

Шаг 5. Отправка видео по электронной почте при обнаружении движения

Отправка видео по электронной почте при обнаружении движения
Отправка видео по электронной почте при обнаружении движения

Электронная почта при обнаружении движения:

# начать дома

dircd ~

# создать скрипт Python для оповещения о движении

sudo nano /home/pi/background/motionalert.py

#записывать

импортировать smtplib

from datetime import datetime

из электронной почты. MIMEMultipart import MIMEMultipart

из электронной почты. MIMEText импорт MIMEText

fromaddr = "ВАШ АДРЕС"

toaddr = "АДРЕС ПОЛУЧЕНИЯ"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['Кому'] = toaddr

msg ['Subject'] = "Обнаружено движение"

body = 'Обнаружено движение. / nВремя:% s'% str (datetime.now ())

msg.attach (MIMEText (тело, 'простой'))

сервер = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, "ВАШ ПАРОЛЬ")

текст = msg.as_string ()

server.sendmail (fromaddr, toaddr, текст)

server.quit ()

Отправить видео движения по электронной почте при сохранении видео:

# начать в homedircd ~

# создание сценариев Python для движущихся видеоudo nano /home/pi/background/motionvid.py

импортировать smtplib

из электронной почты. MIMEMultipart import MIMEMultipart

из электронной почты. MIMEText импорт MIMEText

из электронной почты. MIMEBase импортировать MIMEBase

из кодировщиков импорта электронной почты

fromaddr = "ВАША ЭЛЕКТРОННАЯ ПОЧТА"

toaddr = "АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ, КОТОРОЙ ВЫ ОТПРАВЛЯЕТЕ"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['Кому'] = toaddr

msg ['Subject'] = "Motion Cam активирована"

body = "Видео обнаружено движение"

msg.attach (MIMEText (тело, 'простой'))

импорт ОС

rootpath = '/ вар / библиотека / движение'

filelist = [os.path.join (rootpath, f) для f в os.listdir (rootpath)]

filelist = [f вместо f в списке файлов, если os.path.isfile (f)]

newest = max (список файлов, ключ = лямбда x: os.stat (x).st_mtime)

имя_файла = новейшее

импорт ОС

rootpath = '/ вар / библиотека / движение'

filelist = [os.path.join (rootpath, f) для f в os.listdir (rootpath)]

filelist = [f вместо f в списке файлов, если os.path.isfile (f)]

newest = max (список файлов, ключ = лямбда x: os.stat (x).st_mtime)

attachment = open (новейшее, «rb»)

part = MIMEBase ('приложение', 'поток октетов')

part.set_payload ((вложение).read ())

encoders.encode_base64 (часть)

part.add_header ('Content-Disposition', "attachment; filename =% s"% filename)

msg.attach (часть)

сервер = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, «ВАШ ПАРОЛЬ»)

текст = msg.as_string ()

server.sendmail (fromaddr, toaddr, текст)

server.quit ()

Шаг 6. Устранение неполадок и источники

Устранение неполадок и источники
Устранение неполадок и источники

Исправление проблем:

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

  • При настройке вашего Pi для отправки вам по электронной почте своего текущего IP-адреса крайне важно отредактировать файл rc.local, как показано ранее, поскольку это допускает небольшую задержку перед активацией программы после перезагрузки. В противном случае пи еще не будет подключен к Wi-Fi, и электронное письмо не будет отправлено.
  • При редактировании файла motion.conf не забудьте удалить точки с запятой перед определенными параметрами. Точка с запятой подавляет данное действие, иначе изменение не вступит в силу.
  • Файл motion.conf очень хорошо организован и подробен. Не стесняйтесь изменять настройки по своему вкусу, но имейте в виду, что они могут повлиять на успех системы захвата движения.
  • После настройки параметров оповещения по электронной почте и видео по электронной почте важно отметить, что электронное письмо с видео обнаруженным движением займет немного больше времени, чем отправка исходного электронного письма с предупреждением. Это связано с тем, что видео завершается через пару секунд после того, как движение больше не обнаруживается, и потому, что вложение электронной почты может быть достаточно большим, чтобы получить его через пару минут. В некоторых случаях, если движение поддерживается в течение очень долгого времени, оно может быть слишком большим, чтобы отправить его вообще. Из-за этого всегда рекомендуется проверять прямую трансляцию после получения первоначального электронного письма с предупреждением.

Почему движение ?:

Когда мы впервые приступили к этому проекту, мы рассмотрели несколько разных ресурсов. Сначала мы рассмотрели возможность использования PiCam, который представляет собой камеру, созданную специально для Raspberry Pi. PiCam, безусловно, способное устройство и имеет множество приложений, но оно ограничено использованием программ, специально разработанных для него, и относительно дорого по сравнению с дешевыми многоцелевыми веб-камерами. Поэтому, чтобы сделать этот проект доступным для более широкой аудитории, мы решили использовать обычную веб-камеру USB. Следующая проблема заключалась в том, какое программное обеспечение использовать. Первоначально мы рассматривали OpenCV, бесплатное программное обеспечение, которое позволяет реализовать множество различных проектов компьютерного зрения и обработки изображений. Одна из проблем заключается в том, что OpenCV - это массивный файл, который занимает много памяти и долго настраивается. Настройка также состоит из нескольких этапов, что оставляет еще больше места для ошибки. Мы обнаружили, что для нашего конкретного проекта Motion было проще настроить и начать работать, но гораздо надежнее в исполнении.

Источники

Исходники кода:

www.techradar.com/how-to/computing/how-to-b…

pimylifeup.com/raspberry-pi-webcam-server/

www.pyimagesearch.com/2015/06/01/home-surve…

naelshiab.com/tutorial-send-email-python/

www.raspberrypi.org/documentation/linux/us…

learn.adafruit.com/adafruits-raspberry-pi-…

learn.adafruit.com/adafruits-raspberry-pi-…

pinout.xyz/pinout/i2c

Фото предоставлено:

SSH Snail:

Почтовый логотип:

Веб-камера Logitech:

Окно SSH:

Рекомендуемые: