Taula de continguts:

Càmera de detecció de moviment Raspberry Pi 3 amb alimentació en directe: 6 passos
Càmera de detecció de moviment Raspberry Pi 3 amb alimentació en directe: 6 passos

Vídeo: Càmera de detecció de moviment Raspberry Pi 3 amb alimentació en directe: 6 passos

Vídeo: Càmera de detecció de moviment Raspberry Pi 3 amb alimentació en directe: 6 passos
Vídeo: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Desembre
Anonim
Càmera de detecció de moviment Raspberry Pi 3 amb alimentació en directe
Càmera de detecció de moviment Raspberry Pi 3 amb alimentació en directe

Introducció

En aquest projecte, aprendreu a construir una càmera de detecció de moviment que podreu utilitzar com a trampa de càmera, monitor de mascotes / nadons, càmera de seguretat i molt més.

Aquest projecte s’organitza en diversos passos:

  • Introducció
  • Configuració del vostre Pi
  • SSHing al vostre Pi
  • Enviar la vostra adreça IP per correu electrònic a l’arrencada
  • Instal·lació i configuració de Motion
  • Enviament de vídeos per correu electrònic des de Motion on detection
  • Resolució de problemes i fonts

Què necessiteu:

  • Un model Raspberry Pi 3 b ~~ 35 dòlars
  • Targeta micro SD de 8 GB ~ ~ 10 dòlars
  • Càmera web USB ~~ 20 $ (aquest projecte utilitzava una càmera web Logitech HD c270)
  • cable micro usb ~~ 5 dòlars
  • o bé:
  • paquet de bateria recarregable de 5 volts (bateria de còpia de seguretat del telèfon), això fa que el vostre projecte sigui sense fil ~~ 20 dòlars
  • o bé
  • adaptador de paret usb ~~ 5 dòlars
  • Una connexió WiFi

A què haureu d’accedir per configurar-lo:

  • Un monitor
  • Un ratolí i un teclat
  • Un ordinador amb ranura per a targetes SD
  • Un convertidor de targeta Micro SD a SD (hauria de venir amb la vostra targeta micro SD)

Pas 1: configureu el vostre Pi

Configuració del vostre Pi
Configuració del vostre Pi

Ara configurem el vostre Pi

Per començar, assegureu-vos que teniu tots els elements necessaris de l'últim pas. A continuació, seguiu els passos del lloc web de Raspberry Pi per instal·lar Raspbian Jessie a la vostra targeta Microsd, que es troba aquí.

Un cop tingueu Raspbian instal·lat al vostre Pi, és hora de configurar algunes funcions bàsiques.

WiFi

El primer pas per treure el màxim partit al vostre Pi és connectar-lo a Internet. És possible que hàgiu completat aquest pas ja sigui localitzant el símbol WiFi a l'extrem superior dret de la pantalla principal del Pi i iniciant-hi la sessió, o bé fent el mateix abans d'instal·lar Raspbian a l'últim pas. Si no podeu iniciar la sessió a la vostra xarxa WiFi des de la interfície d'escriptori del vostre Pi, podeu seguir les instruccions aquí per configurar el WiFi a través de la línia d'ordres.

SSH

Una eina molt útil que teniu a l’abast quan utilitzeu el Pi és l’opció d’emetre ordres al Pi en el que es coneix com a configuració sense cap. Mitjançant l’ús d’un Shell segur o SSH, podeu controlar el Pi de manera remota des d’un ordinador. Amb aquest mètode, tot el que necessiteu per editar el vostre Pi és una font d’alimentació per mantenir-lo encès, sense més monitor i teclat.

Pas 2: SSHing al vostre PI

SSHing al vostre PI
SSHing al vostre PI
SSHing al vostre PI
SSHing al vostre PI

SSHing al vostre Raspberry Pi és fàcil i molt útil, ja que el procés us permet emetre ordres al vostre Pi des de qualsevol equip amb res més que una connexió WiFi.

Per connectar SSH al vostre Pi, heu de seguir aquests 3 senzills passos.

En primer lloc, heu d’habilitar SSH al vostre Pi. Per fer-ho, obriu una finestra d'ordres al vostre Pi i escriviu:

sudo raspi-config

Aquesta ordre us permet entrar al menú de configuració. des d’allà voldreu utilitzar les tecles de fletxa, pestanya i entrada per entrar primer a les opcions d’interfície, després per habilitar SSH, així com la càmera, i després sortir i reiniciar el pi.

A continuació, haureu de trobar l'adreça IP del vostre Pi. En un terminal d’ordres, escriviu:

sudo ifconfig

I la vostra adreça IP hauria d’estar a la secció wlan0 que apareix, just a sota de Link encap: Ethernet. A la imatge de demostració superior, l’adreça IP és 192.168.1.10.

Per últim, haureu d’obrir l’aplicació de terminal integrada en un Mac o trobar i seguir les instruccions d’una aplicació ssh de tercers per a Windows. A l’aplicació Terminal, escriviu:

ssh pi @ LA VOSTRA ADREÇA IP

Si no heu canviat la contrasenya mentre esteu a Raspi-config, la contrasenya que cal introduir quan se us demani serà la contrasenya per defecte: raspberry.

A partir d’aquí hauríeu d’anar bé!

Pas 3: envieu per correu electrònic la vostra adreça IP a l'arrencada

Envieu per correu electrònic la vostra adreça IP a l’arrencada
Envieu per correu electrònic la vostra adreça IP a l’arrencada

En aquest pas ens centrarem en com accedir al vostre Raspberry Pi, independentment de la xarxa en què esteu. Depenent de la xarxa, l’adreça IP del Pi canvia. I si no teniu una configuració del monitor, haureu d’entrar al Pi per activar el protocol de detecció de moviment, canviar les preferències de moviment o accedir a qualsevol altra cosa del dispositiu. Per solucionar aquest problema, escriurem un script Python que ens enviï per correu electrònic l’adreça IP actual del Pi en iniciar-se. L'escriptura python és la següent i es va emmagatzemar en un directori marcat com a "fons".

#start al directori inicial

cd ~

#create carpeta de fons

fons mkdir

#create script Python

sudo nano emailip.py

#write a emailip.py

sòcol d'importació

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

des del correu electrònic. MIMEMultipart import MIMEMultipart

des del correu electrònic. MIMEText import MIMEText

fromaddr = "LA VOSTRA ADREÇA"

toaddr = "ADREÇA DE RECEPCIÓ"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "Adreça IP"

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

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

server.starttls ()

server.login (fromaddr, "LA VOSTRA CONTRASENYA")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

# després ho fa en reiniciar

sudo nano /etc/rc.local

#entrar a /etc/rc.local

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

dormir 3

fet

_IP = $ (nom d’amfitrió -I) || cert

si ["$ _IP"]; llavors

printf "La meva adreça IP és% s / n" "$ _IP"

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

fi

sortida 0

#i ja està

Pas 4: Instal·lació i configuració del moviment

Instal·lació i configuració del moviment
Instal·lació i configuració del moviment

#actualització pi

sudo apt-get update

sudo apt-get upgrade

#descarregar

sudo apt-get install motion

#ara editeu aquest fitxer amb els canvis següents

sudo nano /etc/motion/motion.conf

# per establir un estàndard per a aquest tutorial, canvieu

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

dimoni encès

stream_localhost desactivat

webcontrol_localhost desactivat

ffmpeg_output_movies activat

target_dir / var / lib / motion

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

Opcions de transmissió del navegador web #local

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

stream_maxrate 100 # Això permetrà la transmissió en temps real, però requereix més amplada de banda i recursos

velocitat de fotograma 60 # Això permetrà capturar 60 fotogrames per segon # com més alt sigui, més lent serà el processament de vídeo

width 640 #Això canvia l'amplada de la imatge que es mostra

altura 480 # Això canvia l'alçada de la imatge que es mostra

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

#emailing video settings a … / motion.conf

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

#esborreu el ";" davant de la línia, el punt i coma comenta la línia

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

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

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

#astètica

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

#eleccions descrites al fitxer

imatges_de sortida localitza_estil_moció

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

# llavors canvia

sudo nano / etc / default / motion

#dir

start_motion_daemon = sí

#last, comenceu el B ****

Inici del moviment sudo service

# podeu canviar l'ordre per "aturar" o "reiniciar"

Pas 5: enviar vídeos per correu electrònic des de la detecció de moviment

Enviar vídeos per correu electrònic des de la detecció de moviment
Enviar vídeos per correu electrònic des de la detecció de moviment

Envia un correu electrònic quan es detecta moviment:

#començar a casa

dircd ~

#create script Python d'alerta de moviment

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

#escriure

importar smtplib

des de la data i hora d'importació de la data

des del correu electrònic. MIMEMultipart import MIMEMultipart

des del correu electrònic. MIMEText import MIMEText

fromaddr = "LA VOSTRA ADRESA"

toaddr = "RECEVINGADDRESS"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "Moviment detectat"

body = 'S'ha detectat un moviment. / nHora:% s'% str (datetime.now ())

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

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

server.starttls ()

server.login (fromaddr, "YOURPASSWORD")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

Envia per correu electrònic el vídeo del moviment quan es desa el vídeo:

#start at homedircd ~

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

importar smtplib

des del correu electrònic. MIMEMultipart import MIMEMultipart

des del correu electrònic. MIMEText import MIMEText

des del correu electrònic. MIMEBase importa MIMEBase

dels codificadors d’importació de correu electrònic

fromaddr = "EL TEU CORREU ELECTRILNIC"

toaddr = "ADREÇA DE CORREU ELECTR TONIC AL QUE ENVieu"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

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

body = "Video de moviment detectat"

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

import os

rootpath = '/ var / lib / motion'

llista de fitxers = [os.path.join (rootpath, f) per a f a os.listdir (rootpath)]

llista de fitxers = [f per a llista de fitxers si os.path.isfile (f)]

més recent = màxim (llista de fitxers, clau = lambda x: os.stat (x).st_mtime)

nom de fitxer = més nou

import os

rootpath = '/ var / lib / motion'

llista de fitxers = [os.path.join (rootpath, f) per a f a os.listdir (rootpath)]

llista de fitxers = [f per a llista de fitxers si os.path.isfile (f)]

més recent = màxim (llista de fitxers, clau = lambda x: os.stat (x).st_mtime)

fitxer adjunt = obert (el més recent, "rb")

part = MIMEBase ('application', 'octet-stream')

part.set_payload ((fitxer adjunt).read ())

encoders.encode_base64 (part)

part.add_header ('Contingut-Disposició', "fitxer adjunt; nom de fitxer =% s"% nom de fitxer)

msg.attach (part)

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

server.starttls ()

server.login (fromaddr, "LA VOSTRA CONTRASENYA")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

Pas 6: resolució de problemes i fonts

Resolució de problemes i fonts
Resolució de problemes i fonts

Resolució de problemes:

Com que aquest projecte té diverses etapes, hi ha diversos punts en què les coses poden sortir malament. A continuació es mostren alguns dels possibles errors que es poden produir i com solucionar-los.

  • Quan configureu el pi per enviar-vos per correu electrònic la seva adreça IP actual, és crucial editar el fitxer rc.local tal com es mostra anteriorment, ja que permet un petit retard abans que el programa s'activi després de reiniciar-lo. En cas contrari, el pi encara no estarà connectat a wifi i el correu electrònic no s’enviarà.
  • Quan editeu el fitxer motion.conf, assegureu-vos de suprimir els punts i coma davant de certs paràmetres. El punt i coma suprimeix una acció determinada, de manera que, en cas contrari, el canvi no entrarà en vigor.
  • El fitxer motion.conf està molt ben organitzat i detallat. No dubteu a canviar la configuració al vostre gust, però enteneu que poden afectar l’èxit del sistema de captura de moviment.
  • Després de configurar les opcions d’alerta de correu electrònic i vídeo per correu electrònic, és important tenir en compte que el correu electrònic del vídeo detectat per moviment haurà de trigar una mica més que l’enviament que el correu electrònic d’alerta inicial. Això es deu al fet que el vídeo conclou un parell de segons després que el moviment ja no es detecti i perquè el fitxer adjunt del correu electrònic podria ser prou gran com per requerir un parell de minuts per rebre-ho. En alguns casos, si el moviment es manté durant un temps molt llarg, pot ser massa gran per enviar-lo. Per això, sempre és una bona idea comprovar la transmissió en directe després de rebre el missatge d’alerta inicial.

Per què Motion ?:

Quan vam iniciar aquest projecte per primera vegada, vam considerar diversos recursos. Primer ens vam plantejar d’utilitzar la PiCam, que és una unitat de càmera construïda específicament per al raspberry pi. El PiCam és sens dubte un dispositiu capaç i té moltes aplicacions, però es limita a utilitzar programes específicament dissenyats per a això i és relativament car en comparació amb les càmeres web polivalents barates. Per tant, per fer aquest projecte accessible a un públic més nombrós, vam decidir utilitzar una càmera web USB comuna. El següent número va ser quin programari incorporar. Inicialment vam considerar OpenCV, que era un programari lliure que permet realitzar diferents tipus de projectes de visió per computador i d’imatges. Un dels problemes aquí és que OpenCV és un fitxer enorme que ocupa molta memòria i es configura molt de temps. La configuració també té diverses etapes, deixant encara més marge per als errors. Hem trobat que per al nostre projecte específic, Motion era més senzill de configurar i treballar, però era molt més robust en la seva execució.

Fonts

Fonts del codi:

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èdits fotogràfics:

Caracol SSH:

Logotip del correu:

Càmera web de Logitech:

Finestra SSH:

Recomanat: