Tabla de contenido:

Cámara de detección de movimiento Raspberry Pi 3 con transmisión en vivo: 6 pasos
Cámara de detección de movimiento Raspberry Pi 3 con transmisión en vivo: 6 pasos

Video: Cámara de detección de movimiento Raspberry Pi 3 con transmisión en vivo: 6 pasos

Video: Cámara de detección de movimiento Raspberry Pi 3 con transmisión en vivo: 6 pasos
Video: VIDEOVIGILANCIA con RASPBERRY PI & MOTIONEYEOS 2024, Noviembre
Anonim
Cámara de detección de movimiento Raspberry Pi 3 con transmisión en vivo
Cámara de detección de movimiento Raspberry Pi 3 con transmisión en vivo

Introducción

En este proyecto, aprenderá a construir una cámara de detección de movimiento que podrá usar como cámara trampa, monitor para mascotas / bebés, cámara de seguridad y mucho más.

Este proyecto está organizado en varios pasos:

  • Introducción
  • Configurando tu Pi
  • SSH en tu Pi
  • Enviar por correo electrónico su dirección IP al arrancar
  • Instalación y configuración de Motion
  • Enviar videos por correo electrónico desde Motion al detectarlo
  • Solución de problemas y fuentes

Lo que necesitarás:

  • Un modelo Raspberry Pi 3 b ~~ $ 35
  • Tarjeta Micro SD de 8 gb ~~ $ 10
  • Cámara web USB ~~ $ 20 (este proyecto utilizó una cámara web Logitech HD c270)
  • cable micro usb ~~ $ 5
  • cualquiera:
  • paquete de batería recargable de 5 voltios (batería de respaldo del teléfono), esto hace que su proyecto sea inalámbrico ~~ $ 20
  • o
  • adaptador de pared usb ~~ $ 5
  • Una conexión WiFi

A qué necesitará acceder para la configuración:

  • Un monitor
  • Un mouse y un teclado
  • Una computadora con una ranura para tarjetas SD
  • Un convertidor de tarjeta Micro SD a SD (debe venir con su tarjeta micro SD)

Paso 1: Configuración de su Pi

Configurando tu Pi
Configurando tu Pi

Ahora configuremos tu Pi

Para comenzar, asegúrese de tener todos los elementos necesarios del último paso. Luego, siga los pasos en el sitio web de Raspberry Pi para instalar Raspbian Jessie en su tarjeta Microsd, que se encuentran aquí.

Una vez que tenga Raspbian instalado en su Pi, es hora de configurar algunas funciones básicas.

Wifi

El primer paso para aprovechar al máximo su Pi es conectarlo a Internet. Es posible que ya haya completado este paso ubicando el símbolo de WiFi en la esquina superior derecha de la pantalla principal de su Pi e iniciando sesión allí, o haciendo lo mismo antes de instalar Raspbian en el último paso. Si no puede iniciar sesión en su red WiFi desde la interfaz de escritorio de su Pi, puede seguir las instrucciones aquí para configurar WiFi a través de la línea de comandos.

SSH

Una herramienta muy útil disponible para usted cuando usa su Pi es la opción de emitir comandos a su Pi en lo que se conoce como configuración sin cabeza. Mediante el uso de Secure SHell, o SSH, puede controlar su Pi de forma remota desde una computadora. Con este método, todo lo que necesita para editar su Pi es una fuente de alimentación para mantenerla encendida, ¡no más monitor ni teclado!

Paso 2: SSH en su PI

SSH en su PI
SSH en su PI
SSH en su PI
SSH en su PI

La conexión SSH en su Raspberry Pi es fácil y muy útil, ya que el proceso le permite emitir comandos a su Pi desde cualquier computadora con nada más que una conexión WiFi.

Para SSH en su Pi, debe seguir estos 3 sencillos pasos.

Primero, debe habilitar SSH en su Pi. Para hacer esto, abra una ventana de comando en su Pi y escriba:

sudo raspi-config

Este comando le permite ingresar a un menú de configuración. desde allí, querrá usar las teclas de flecha, tabulación e ingresar para ir primero a las opciones de interfaz, luego para habilitar SSH, así como la cámara, luego salir y reiniciar el pi.

A continuación, deberá encontrar la dirección IP de su Pi. En una terminal de comando, escriba:

sudo ifconfig

Y su dirección IP debe estar en la sección wlan0 que aparece, justo debajo de Link encap: ethernet. En la imagen de demostración anterior, la dirección IP es 192.168.1.10.

Por último, deberá abrir la aplicación de terminal incorporada en una mac o buscar y seguir las instrucciones para una aplicación ssh de terceros para Windows. En la aplicación Terminal, escriba:

ssh pi @ SU DIRECCIÓN IP

Si no ha cambiado la contraseña mientras estaba en Raspi-config, entonces su contraseña para ingresar cuando se le solicite será la contraseña predeterminada: frambuesa.

A partir de ahí, ¡deberías estar listo!

Paso 3: envíe su dirección IP por correo electrónico en el arranque

Envíe por correo electrónico su dirección IP en el arranque
Envíe por correo electrónico su dirección IP en el arranque

En este paso nos centraremos en cómo acceder a su Raspberry Pi, independientemente de la red en la que se encuentre. Dependiendo de la red, la dirección IP de Pi cambia. Y si no tiene una configuración de monitor, deberá ingresar a la Pi para activar el protocolo de detección de movimiento, cambiar las preferencias de movimiento o acceder a cualquier otra cosa en el dispositivo. Para resolver este problema, escribiremos un script en Python que nos envíe por correo electrónico la dirección IP actual de la IP de Pi al iniciar. La secuencia de comandos de Python es la siguiente y se almacenó en un directorio marcado como "fondo".

#start en el directorio de inicio

cd ~

#crear carpeta de fondo

fondo mkdir

#crear secuencia de comandos de Python

sudo nano emailip.py

#escribir en emailip.py

importar socket

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

desde el correo electrónico MIMEMultipart importar MIMEMultipart

desde el correo electrónico. MIMEText importar MIMEText

fromaddr = "SU DIRECCIÓN"

toaddr = "DIRECCIÓN DE RECEPCIÓN"

msg = MIMEMultipart ()

msg ['Desde'] = fromaddr

msg ['Para'] = toaddr

msg ['Asunto'] = "Dirección IP"

cuerpo = xmsg.attach (MIMEText (cuerpo, 'plano'))

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

server.starttls ()

server.login (fromaddr, "SU CONTRASEÑA")

texto = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

#entonces esto lo hace al reiniciar

sudo nano /etc/rc.local

#entrar en /etc/rc.local

tiempo ! / sbin / ifconfig wlan0 | grep -q 'dirección inet: [0-9]';

dormir 3

hecho

_IP = $ (nombre de host -I) || cierto

si ["$ _IP"]; luego

printf "Mi dirección IP es% s / n" "$ _IP"

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

fi

salir 0

#y tu estas listo

Paso 4: Instalación y configuración de Motion

Instalación y configuración de Motion
Instalación y configuración de Motion

#update pi

sudo apt-get update

sudo apt-get upgrade

#descargar

sudo apt-get install motion

# ahora edite este archivo con los siguientes cambios

sudo nano /etc/motion/motion.conf

#para establecer un estándar para este tutorial, cambie

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

demonio en

stream_localhost desactivado

webcontrol_localhost desactivado

ffmpeg_output_movies en

target_dir / var / lib / motion

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

#opciones de transmisión del navegador web local

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

stream_maxrate 100 # Esto permitirá la transmisión en tiempo real, pero requiere más ancho de banda y recursos

velocidad de fotogramas 60 # Esto permitirá capturar 60 fotogramas por segundo # cuanto más alto sea, más lento será el procesamiento del video

ancho 640 # Esto cambia el ancho de la imagen mostrada

altura 480 # Esto cambia la altura de la imagen mostrada

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

# envío de ajustes de video por correo electrónico en… / motion.conf

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

# eliminar el ";" delante de la línea, el punto y coma comenta la salida de la línea

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

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

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

#tecticos

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

#choices descritas en el archivo

imágenes_de_salida localizar_estilo_movimiento

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

#entonces cambia

sudo nano / etc / default / motion

#decir

start_motion_daemon = sí

#por último, comienza el B **** up

sudo service motion start

# puedes cambiar el comando a "detener" o "reiniciar"

Paso 5: Enviar videos por correo electrónico desde Motion on Detection

Enviar videos por correo electrónico desde Motion on Detection
Enviar videos por correo electrónico desde Motion on Detection

Correo electrónico cuando se detecta movimiento:

#comience en casa

dircd ~

#create secuencia de comandos de Python de alerta de movimiento

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

#escribir

importar smtplib

desde fecha y hora importar fecha y hora

desde el correo electrónico MIMEMultipart importar MIMEMultipart

desde el correo electrónico. MIMEText importar MIMEText

fromaddr = "TU DIRECCIÓN"

toaddr = "RECIEVINGADDRESS"

msg = MIMEMultipart ()

msg ['Desde'] = fromaddr

msg ['Para'] = toaddr

msg ['Subject'] = "Movimiento detectado"

body = 'Se ha detectado un movimiento. / nTiempo:% s'% str (datetime.now ())

msg.attach (MIMEText (cuerpo, 'plano'))

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

server.starttls ()

server.login (fromaddr, "SU CONTRASEÑA")

texto = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

Enviar video por correo electrónico del movimiento cuando se guarda el video:

#comience en homedircd ~

#create scripts de python de video en movimientoudo nano /home/pi/background/motionvid.py

importar smtplib

desde el correo electrónico MIMEMultipart importar MIMEMultipart

desde el correo electrónico. MIMEText importar MIMEText

desde el correo electrónico MIMEBase importar MIMEBase

desde codificadores de importación de correo electrónico

fromaddr = "SU CORREO ELECTRÓNICO"

toaddr = "DIRECCIÓN DE CORREO ELECTRÓNICO A LA QUE ENVIÓ"

msg = MIMEMultipart ()

msg ['Desde'] = fromaddr

msg ['Para'] = toaddr

msg ['Subject'] = "Motion Cam activada"

body = "Video de movimiento detectado"

msg.attach (MIMEText (cuerpo, 'plano'))

importar sistema operativo

rootpath = '/ var / lib / motion'

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

filelist = [f para f en filelist si os.path.isfile (f)]

más nuevo = max (lista de archivos, clave = lambda x: os.stat (x).st_mtime)

nombre de archivo = más nuevo

importar sistema operativo

rootpath = '/ var / lib / motion'

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

filelist = [f para f en filelist si os.path.isfile (f)]

más nuevo = max (lista de archivos, clave = lambda x: os.stat (x).st_mtime)

adjunto = abierto (más reciente, "rb")

part = MIMEBase ('aplicación', 'flujo de octetos')

part.set_payload ((archivo adjunto).read ())

encoders.encode_base64 (parte)

part.add_header ('Content-Disposition', "adjunto; nombre de archivo =% s"% nombre de archivo)

msg.attach (parte)

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

server.starttls ()

server.login (fromaddr, "SU CONTRASEÑA")

texto = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

Paso 6: Solución de problemas y fuentes

Solución de problemas y fuentes
Solución de problemas y fuentes

Solución de problemas:

Debido a que este proyecto tiene múltiples etapas, hay varios puntos en los que las cosas pueden salir mal. A continuación se muestran algunos de los posibles errores que podrían ocurrir y cómo solucionarlos.

  • Al configurar su pi para que le envíe un correo electrónico con su dirección IP actual, es crucial editar el archivo rc.local como se mostró anteriormente porque esto permite una pequeña demora antes de que el programa se active después de reiniciar. De lo contrario, el pi aún no estará conectado a wifi y el correo electrónico no se enviará.
  • Al editar el archivo motion.conf, asegúrese de eliminar el punto y coma delante de ciertos parámetros. El punto y coma suprime una acción determinada; de lo contrario, el cambio no surtirá efecto.
  • El archivo motion.conf está muy bien organizado y detallado. Siéntase libre de cambiar la configuración a su gusto, pero comprenda que pueden afectar el éxito del sistema de captura de movimiento.
  • Después de configurar la alerta por correo electrónico y las opciones de video por correo electrónico, es importante tener en cuenta que el correo electrónico del video detectado por movimiento tardará un poco más en enviarse que el correo electrónico de alerta inicial. Esto se debe a que el video concluye un par de segundos después de que ya no se detecta movimiento, y porque el archivo adjunto del correo electrónico podría ser lo suficientemente grande como para requerir un par de minutos para recibirlo. En algunos casos, si el movimiento se mantiene durante un período de tiempo muy largo, puede ser demasiado grande para enviarlo. Debido a esto, siempre es una buena idea verificar la transmisión en vivo después de recibir el correo electrónico de alerta inicial.

¿Por qué Motion ?:

Cuando nos embarcamos por primera vez en este proyecto, consideramos varios recursos diferentes. Primero, consideramos usar la PiCam, que es una unidad de cámara construida específicamente para la raspberry pi. La PiCam es ciertamente un dispositivo capaz y tiene muchas aplicaciones, pero se limita a usar programas que están diseñados específicamente para ella y es relativamente costosa en comparación con las cámaras web multipropósito baratas. Entonces, para que este proyecto sea accesible para una audiencia más amplia, decidimos usar una cámara web USB común. El siguiente problema fue qué software incorporar. Inicialmente consideramos OpenCV, que es un software gratuito que permite muchos tipos diferentes de proyectos de imágenes y visión por computadora. Uno de los problemas aquí es que OpenCV es un archivo masivo que ocupa mucha memoria y mucho tiempo configurado. La configuración también tiene varias etapas, lo que deja aún más margen de error. Descubrimos que para nuestro proyecto específico, Motion era más simple de configurar y poner en funcionamiento, pero mucho más robusto en su ejecución.

Fuentes

Fuentes 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:

Caracol SSH:

Logotipo de correo:

Cámara web Logitech:

Ventana SSH:

Recomendado: