Câmera de detecção de movimento Raspberry Pi 3 com feed ao vivo: 6 etapas
Câmera de detecção de movimento Raspberry Pi 3 com feed ao vivo: 6 etapas
Anonim
Câmera de detecção de movimento Raspberry Pi 3 com feed ao vivo
Câmera de detecção de movimento Raspberry Pi 3 com feed ao vivo

Introdução

Neste projeto, você aprenderá a construir uma câmera de detecção de movimento que poderá usar como armadilha fotográfica, monitor de bebê / animal de estimação, câmera de segurança e muito mais.

Este projeto está organizado em várias etapas:

  • Introdução
  • Configurando seu Pi
  • SSHing em seu Pi
  • Enviando seu endereço IP por e-mail na inicialização
  • Instalando e configurando o Motion
  • Envio de vídeos por e-mail com detecção de movimento
  • Solução de problemas e fontes

O que você precisará:

  • Um modelo Raspberry Pi 3 b ~~ $ 35
  • Cartão Micro SD de 8GB ~ ~ $ 10
  • Webcam USB ~ ~ $ 20 (este projeto usou uma Logitech HD Webcam c270)
  • cabo micro usb ~~ $ 5
  • qualquer:
  • bateria recarregável de 5 volts (bateria reserva do telefone), isso torna seu projeto sem fio ~~ $ 20
  • ou
  • adaptador de parede USB ~ ~ $ 5
  • Uma conexão WiFi

O que você precisa acessar para configurar:

  • Um monitor
  • Um mouse e teclado
  • Um computador com um slot para cartão SD
  • Um conversor de cartão Micro SD para SD (deve vir com seu cartão micro SD)

Etapa 1: Configurando seu Pi

Configurando seu Pi
Configurando seu Pi

Agora vamos configurar o seu Pi

Para começar, certifique-se de ter todos os itens necessários da última etapa. Em seguida, siga as etapas no site do Raspberry Pi sobre como instalar o Raspbian Jessie em seu cartão Microsd, encontrado aqui.

Depois de instalar o Raspbian em seu Pi, é hora de configurar alguns recursos básicos.

Wi-fi

O primeiro passo para obter o máximo do seu Pi é conectá-lo à Internet. Você pode já ter concluído esta etapa localizando o símbolo WiFi no canto superior direito da tela principal do seu Pi e se registrando lá, ou fazendo a mesma coisa antes de instalar o Raspbian na última etapa. Se você não conseguir entrar na sua rede WiFi a partir da interface da área de trabalho do seu Pi, você pode seguir as instruções aqui para configurar o WiFi por meio da linha de comando.

SSH

Uma ferramenta muito útil disponível para você ao usar seu Pi é a opção de emitir comandos para seu Pi no que é conhecido como configuração sem cabeça. Usando um Secure SHell, ou SSH, você pode controlar seu Pi remotamente de um computador. Com este método, tudo que você precisa para editar seu Pi é uma fonte de energia para mantê-lo ligado, chega de monitor e teclado!

Etapa 2: SSHing em seu PI

SSHing Into Your PI
SSHing Into Your PI
SSHing Into Your PI
SSHing Into Your PI

Fazer SSH em seu Raspberry Pi é fácil e muito útil, pois o processo permite que você emita comandos para seu Pi a partir de qualquer computador com nada mais do que uma conexão wi-fi.

Para fazer SSH em seu Pi, você precisa seguir estas 3 etapas simples.

Primeiro, você precisa habilitar o SSH em seu Pi. Para fazer isso, abra uma janela de comando em seu Pi e digite:

sudo raspi-config

Este comando permite que você entre em um menu de configuração. a partir daí, você vai querer usar as teclas de seta, tab e enter para ir primeiro para as opções de interface, então para habilitar SSH, assim como a câmera, então saia e reinicie o pi.

Em seguida, você precisará encontrar o endereço IP do seu Pi. Em um terminal de comando, digite:

sudo ifconfig

E seu endereço IP deve estar na seção wlan0 que aparece, logo abaixo de Link encap: ethernet. Na imagem de demonstração acima, o endereço IP é 192.168.1.10.

Por último, você precisará abrir o aplicativo de terminal integrado em um mac ou encontrar e seguir as instruções de um aplicativo ssh de terceiros para Windows. No aplicativo Terminal, digite:

ssh pi @ SEU ENDEREÇO IP

Se você não alterou a senha enquanto estava no Raspi-config, sua senha a ser inserida quando solicitada será a senha padrão: raspberry.

A partir daí, você deve estar pronto para ir!

Etapa 3: envie seu endereço IP por e-mail na inicialização

Envie seu endereço IP por e-mail na inicialização
Envie seu endereço IP por e-mail na inicialização

Nesta etapa, vamos nos concentrar em como acessar seu Raspberry Pi, independentemente da rede em que você está. Dependendo da rede, o endereço IP do Pi muda. E se você não tiver um monitor configurado, precisará entrar no Pi para acionar o protocolo de detecção de movimento, alterar as preferências de movimento ou acessar qualquer outra coisa no dispositivo. Para resolver esse problema, escreveremos um script python que nos enviará um e-mail com o endereço IP atual do Pi na inicialização. O script python é o seguinte e foi armazenado em um diretório marcado como "plano de fundo".

# iniciar no diretório inicial

cd ~

#create pasta de fundo

fundo mkdir

#create script python

sudo nano emailip.py

#write in emailip.py

soquete de importação

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 ()

importar smtplib

from email. MIMEMultipart import MIMEMultipart

from email. MIMEText import MIMEText

fromaddr = "SEU ENDEREÇO"

toaddr = "A RECEBER ENDEREÇO"

msg = MIMEMultipart ()

msg ['De'] = fromaddr

msg ['To'] = toaddr

msg ['Assunto'] = "Endereço IP"

body = xmsg.attach (MIMEText (body, 'plain'))

server = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, "SUA SENHA")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, texto)

server.quit ()

# então isso acontece na reinicialização

sudo nano /etc/rc.local

#enter em /etc/rc.local

enquanto ! / sbin / ifconfig wlan0 | grep -q 'inet addr: [0-9]';

durma 3

feito

_IP = $ (hostname -I) || verdade

if ["$ _IP"]; então

printf "Meu endereço IP é% s / n" "$ _IP"

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

fi

saída 0

#e pronto

Etapa 4: instalando e configurando o Motion

Instalando e configurando o Motion
Instalando e configurando o Motion

#update pi

sudo apt-get update

sudo apt-get upgrade

#download

sudo apt-get install motion

# agora edite este arquivo com as seguintes alterações

sudo nano /etc/motion/motion.conf

#para definir um padrão para este tutorial, mude

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

daemon em

stream_localhost desligado

webcontrol_localhost off

ffmpeg_output_movies on

target_dir / var / lib / motion

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

#local web browser streaming options

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

stream_maxrate 100 # Isso permitirá streaming em tempo real, mas requer mais largura de banda e recursos

taxa de quadros 60 # Isso permitirá que 60 quadros sejam capturados por segundo # quanto maior for, mais lento será o processamento do vídeo

largura 640 # Isso muda a largura da imagem exibida

altura 480 # Isso muda a altura da imagem exibida

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

#emailing video settings in… / motion.conf

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

#exclua o ";" na frente da linha, o ponto-e-vírgula comenta a linha

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

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

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

#astectics

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

#choices descritas no arquivo

output_pictures locate_motion_style

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

#então mudar

sudo nano / etc / default / motion

#dizer

start_motion_daemon = yes

# por último, inicie o B **** up

sudo service motion start

# você pode alterar o comando para "parar" ou "reiniciar"

Etapa 5: Envio de vídeos por e-mail a partir do movimento na detecção

Envio de vídeos por e-mail a partir do movimento na detecção
Envio de vídeos por e-mail a partir do movimento na detecção

Email quando o movimento é detectado:

# começar em casa

dircd ~

#create motion alert python script

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

#escrever

importar smtplib

de datetime import datetime

from email. MIMEMultipart import MIMEMultipart

from email. MIMEText import MIMEText

fromaddr = "SEU ENDEREÇO"

toaddr = "RECIEVINGADDRESS"

msg = MIMEMultipart ()

msg ['De'] = fromaddr

msg ['To'] = toaddr

msg ['Assunto'] = "Movimento detectado"

body = 'Um movimento foi detectado. / nHora:% s'% str (datetime.now ())

msg.attach (MIMEText (body, 'plain'))

server = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, "SUA SENHA")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, texto)

server.quit ()

Vídeo de movimento por e-mail quando o vídeo for salvo:

#start at homedircd ~

#create motion video python scriptsudo nano /home/pi/background/motionvid.py

importar smtplib

from email. MIMEMultipart import MIMEMultipart

from email. MIMEText import MIMEText

from email. MIMEBase import MIMEBase

de codificadores de importação de e-mail

fromaddr = "SEU E-MAIL"

toaddr = "ENDEREÇO DE E-MAIL QUE VOCÊ ENVIE PARA"

msg = MIMEMultipart ()

msg ['De'] = fromaddr

msg ['To'] = toaddr

msg ['Assunto'] = "Câmera de movimento ativada"

body = "Vídeo de movimento detectado"

msg.attach (MIMEText (body, 'plain'))

importar os

rootpath = '/ var / lib / motion'

filelist = [os.path.join (rootpath, f) para f em os.listdir (rootpath)]

filelist = [f para f em filelist if os.path.isfile (f)]

newest = max (filelist, key = lambda x: os.stat (x).st_mtime)

filename = newest

importar os

rootpath = '/ var / lib / motion'

filelist = [os.path.join (rootpath, f) para f em os.listdir (rootpath)]

filelist = [f para f em filelist if os.path.isfile (f)]

newest = max (filelist, key = lambda x: os.stat (x).st_mtime)

anexo = aberto (mais recente, "rb")

part = MIMEBase ('aplicativo', 'fluxo de octeto')

part.set_payload ((anexo).read ())

encoders.encode_base64 (parte)

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

msg.attach (parte)

server = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, "SUA SENHA")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, texto)

server.quit ()

Etapa 6: solução de problemas e fontes

Solução de problemas e fontes
Solução de problemas e fontes

Solução de problemas:

Como este projeto tem vários estágios, há vários pontos em que as coisas podem dar errado. Abaixo estão alguns dos possíveis erros que podem ocorrer e como corrigi-los.

  • Ao configurar seu pi para enviar a você por e-mail seu endereço IP atual, é crucial editar o arquivo rc.local conforme mostrado anteriormente porque isso permite um pequeno atraso antes que o programa seja ativado após a reinicialização. Caso contrário, o pi ainda não estará conectado ao wi-fi e o e-mail não será enviado.
  • Ao editar o arquivo motion.conf, certifique-se de excluir os pontos-e-vírgulas na frente de certos parâmetros. O ponto-e-vírgula suprime uma determinada ação, caso contrário, a alteração não terá efeito.
  • O arquivo motion.conf é muito bem organizado e detalhado. Sinta-se à vontade para alterar as configurações a seu gosto, mas entenda que elas podem afetar o sucesso do sistema de captura de movimento.
  • Depois de configurar as opções de alerta por e-mail e vídeo por e-mail, é importante observar que o e-mail do vídeo de detecção de movimento demorará um pouco mais para ser enviado do que o e-mail de alerta inicial. Isso ocorre porque o vídeo termina alguns segundos depois que o movimento não é mais detectado e porque o anexo de e-mail pode ser grande o suficiente para exigir alguns minutos para ser recebido. Em alguns casos, se o movimento for sustentado por um período muito longo de tempo, ele pode ser muito grande para ser enviado. Por isso, é sempre uma boa ideia verificar a transmissão ao vivo depois de receber o e-mail de alerta inicial.

Por que movimento ?:

Ao embarcar neste projeto pela primeira vez, consideramos vários recursos diferentes. Primeiro consideramos o uso da PiCam, que é uma unidade de câmera construída especificamente para o pi raspberry. O PiCam é certamente um dispositivo capaz e tem muitos aplicativos, mas é limitado ao uso de programas especificamente projetados para ele e é relativamente caro em comparação com as webcams multiuso baratas. Portanto, para tornar este projeto acessível a um público maior, decidimos usar uma webcam USB comum. A próxima questão era qual software incorporar. Inicialmente, consideramos o OpenCV, que é um software livre que permite muitos tipos diferentes de projetos de imagem e visão computacional. Um dos problemas aqui é que o OpenCV é um arquivo enorme que ocupa muita memória e muito tempo configurado. A configuração também possui vários estágios, deixando ainda mais espaço para erros. Descobrimos que, para nosso projeto específico, o Motion era mais simples de configurar e fazer funcionar, mas muito mais robusto em sua execução.

Fontes

Fontes de código:

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

Créditos fotográficos:

SSH Snail:

Logotipo do Mail:

Webcam da Logitech:

Janela SSH: