Sommario:

Fotocamera di rilevamento del movimento Raspberry Pi 3 con live feed: 6 passaggi
Fotocamera di rilevamento del movimento Raspberry Pi 3 con live feed: 6 passaggi

Video: Fotocamera di rilevamento del movimento Raspberry Pi 3 con live feed: 6 passaggi

Video: Fotocamera di rilevamento del movimento Raspberry Pi 3 con live feed: 6 passaggi
Video: Object Identification & Animal Recognition With Raspberry Pi + OpenCV + Python 2024, Dicembre
Anonim
Fotocamera di rilevamento del movimento Raspberry Pi 3 con feed in tempo reale
Fotocamera di rilevamento del movimento Raspberry Pi 3 con feed in tempo reale

introduzione

In questo progetto imparerai come costruire una telecamera di rilevamento del movimento che potrai utilizzare come trappola fotografica, monitor per animali domestici/bambini, telecamera di sicurezza e molto altro.

Questo progetto è organizzato in più fasi:

  • introduzione
  • Configurare il tuo Pi
  • SSHing nel tuo Pi
  • Invio tramite email del tuo indirizzo IP all'avvio
  • Installazione e configurazione di Motion
  • Invio di video tramite e-mail dal movimento al rilevamento
  • Risoluzione dei problemi e fonti

Di cosa avrai bisogno:

  • Un modello Raspberry Pi 3 b ~~$35
  • Scheda Micro SD da 8 GB ~~$10
  • Webcam USB ~~$20 (questo progetto utilizzava una webcam Logitech HD c270)
  • cavo micro usb ~~$5
  • o:
  • pacco batteria ricaricabile da 5 volt (batteria di backup del telefono), questo rende il tuo progetto wireless ~~ $ 20
  • o
  • adattatore da parete usb ~~$5
  • Una connessione WiFi

A cosa avrai bisogno di accedere per la configurazione:

  • un monitor
  • Un mouse e una tastiera
  • Un computer con uno slot per schede SD
  • Un convertitore da Micro SD a scheda SD (dovrebbe essere fornito con la tua scheda micro SD)

Passaggio 1: configurazione del tuo Pi

Configurare il tuo Pi
Configurare il tuo Pi

Ora impostiamo il tuo Pi

Per iniziare, assicurati di avere tutti gli elementi richiesti dall'ultimo passaggio. Quindi, segui i passaggi sul sito Web Raspberry Pi sull'installazione di Raspbian Jessie sulla tua scheda Microsd, che trovi qui.

Una volta installato Raspbian sul tuo Pi, è il momento di configurare alcune funzionalità di base.

Wifi

Il primo passo per ottenere il massimo dal tuo Pi è connetterlo a Internet. Potresti aver già completato questo passaggio individuando il simbolo WiFi nell'angolo in alto a destra della schermata principale del tuo Pi e accedendo lì, o facendo la stessa cosa prima di installare Raspbian nell'ultimo passaggio. Se non riesci ad accedere alla tua rete WiFi dall'interfaccia desktop del tuo Pi, puoi seguire le istruzioni qui per configurare il WiFi tramite la riga di comando.

SSH

Uno strumento molto utile a tua disposizione quando usi il tuo Pi è l'opzione per inviare comandi al tuo Pi in quella che è nota come configurazione senza testa. Usando un Secure SHell, o SSH, puoi controllare il tuo Pi in remoto da un computer. Con questo metodo, tutto ciò di cui avrai bisogno per modificare il tuo Pi è una fonte di alimentazione per tenerlo acceso, niente più monitor e tastiera!

Passaggio 2: SSHing nel tuo PI

SSHing nel tuo PI
SSHing nel tuo PI
SSHing nel tuo PI
SSHing nel tuo PI

SSH nel tuo Raspberry Pi è facile e molto utile, poiché il processo ti consente di inviare comandi al tuo Pi da qualsiasi computer con nient'altro che una connessione WiFi.

Per SSH nel tuo Pi, devi seguire questi 3 semplici passaggi.

Innanzitutto, devi abilitare SSH sul tuo Pi. Per fare ciò, apri una finestra di comando nel tuo Pi e digita:

sudo raspi-config

Questo comando permette di entrare in un menu di configurazione. da lì dovrai usare i tasti freccia, tab e invio per andare prima nelle opzioni di interfaccia, quindi per abilitare SSH, così come la fotocamera, quindi uscire e riavviare il pi.

Successivamente, dovrai trovare l'indirizzo IP del tuo Pi. In un terminale di comando, digita:

sudo ifconfig

E il tuo indirizzo IP dovrebbe essere nella sezione wlan0 che appare, proprio sotto Link encap:ethernet. Nell'immagine demo sopra, l'indirizzo IP è 192.168.1.10.

Infine, dovrai aprire l'app terminale integrata su un Mac o trovare e seguire le istruzioni per un'app ssh di terze parti per Windows. Nell'app Terminale, digita:

ssh pi@IL TUO INDIRIZZO IP

Se non hai cambiato la password mentre sei in Raspi-config, la password da inserire quando richiesto sarà la password predefinita: raspberry.

Da lì, dovresti essere a posto!

Passaggio 3: invia il tuo indirizzo IP tramite e-mail all'avvio

Invia il tuo indirizzo IP tramite e-mail all'avvio
Invia il tuo indirizzo IP tramite e-mail all'avvio

In questo passaggio ci concentreremo su come accedere al tuo Raspberry Pi, indipendentemente dalla rete su cui ti trovi. A seconda della rete, l'indirizzo IP del Pi cambia. E se non si dispone di una configurazione del monitor, è necessario accedere al Pi per attivare il protocollo di rilevamento del movimento, modificare le preferenze di movimento o accedere a qualsiasi altra cosa sul dispositivo. Per risolvere questo problema, scriveremo uno script python che ci invierà tramite e-mail l'indirizzo IP corrente del Pi all'avvio. Lo script Python è il seguente ed è stato memorizzato in una directory contrassegnata come "sfondo".

#start nella home directory

cd ~

#crea cartella di sfondo

sfondo mkdir

#crea script Python

sudo nano emailip.py

#scrivi in emailip.py

presa di importazione

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

import smtplib

da email. MIMEMultipart import MIMEMultipart

da email. MIMEtext import MIMEtext

fromaddr = "IL TUO INDIRIZZO"

toaddr = "INDIRIZZO DI RICEZIONE"

msg = MIMEMultipart()

msg['From'] = fromaddr

msg['To'] = toaddr

msg['Subject'] = "Indirizzo IP"

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

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

server.starttls()

server.login(fromaddr, "LA TUA PASSWORD")

testo = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

server.quit()

#allora lo fa al riavvio

sudo nano /etc/rc.local

#entra in /etc/rc.local

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

dormi 3

fatto

_IP=$(nome host -I) || vero

if ["$_IP"]; poi

printf "Il mio indirizzo IP è %s\n" "$_IP"

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

fi

esci 0

#e hai finito

Passaggio 4: installazione e configurazione di Motion

Installazione e configurazione di Motion
Installazione e configurazione di Motion

#aggiorna più

sudo apt-get update

sudo apt-get upgrade

#Scarica

sudo apt-get install motion

#ora modifica questo file con le seguenti modifiche

sudo nano /etc/motion/motion.conf

#per stabilire uno standard per questo tutorial, cambia

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

demone acceso

stream_localhost disattivato

webcontrol_localhost disattivato

ffmpeg_output_movies su

target_dir /var/lib/motion

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

#opzioni di streaming del browser web locale

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

stream_maxrate 100 #Ciò consentirà lo streaming in tempo reale ma richiede più larghezza di banda e risorse

framerate 60 #Ciò consentirà di acquisire 60 fotogrammi al secondo #più alto diventa, più lenta è l'elaborazione video

larghezza 640 #Questo cambia la larghezza dell'immagine visualizzata

altezza 480 #Questo cambia l'altezza dell'immagine visualizzata

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

#invio di impostazioni video tramite e-mail in …/motion.conf

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

#elimina il "; " davanti alla riga, il punto e virgola commenta la riga fuori

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

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

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

#estetica

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

#scelte descritte nel file

output_pictures locate_motion_style

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

#poi cambia

sudo nano /etc/default/motion

#dire

start_motion_daemon=sì

#ultimo, avvia la merda

sudo service motion start

#puoi cambiare il comando in "stop" o "restart"

Passaggio 5: invio di video tramite e-mail da Motion on Detection

Invio di video tramite e-mail da Motion on Detection
Invio di video tramite e-mail da Motion on Detection

Email quando viene rilevato un movimento:

#inizia da casa

dircd ~

#crea script Python di avviso di movimento

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

#Scrivi

import smtplib

da datetime import datetime

da email. MIMEMultipart import MIMEMultipart

da email. MIMEtext import MIMEtext

fromaddr = "IL TUO INDIRIZZO"

toaddr = "INDIRIZZO DI RICEZIONE"

msg = MIMEMultipart()

msg['From'] = fromaddr

msg['To'] = toaddr

msg['Subject'] = "Movimento rilevato"

body = 'È stato rilevato un movimento.\nTime: %s' % str(datetime.now())

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

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

server.starttls()

server.login(fromaddr, "LA TUA PASSWORD")

testo = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

server.quit()

Invia per e-mail il video del movimento quando il video viene salvato:

#inizia dahomedircd ~

#creare script python video in movimentosudo nano /home/pi/background/motionvid.py

import smtplib

da email. MIMEMultipart import MIMEMultipart

da email. MIMEtext import MIMEtext

da email. MIMEBase import MIMEBase

da codificatori di importazione di posta elettronica

fromaddr = "LA TUA EMAIL"

toaddr = "INDIRIZZO EMAIL A CUI INVIARE"

msg = MIMEMultipart()

msg['From'] = fromaddr

msg['To'] = toaddr

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

body = "Video del movimento rilevato"

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

importare il sistema operativo

rootpath = '/var/lib/motion'

filelist = [os.path.join(rootpath, f) for f in os.listdir(rootpath)]

filelist = [f per f in filelist if os.path.isfile(f)]

più recente = max(elenco file, chiave = lambda x: os.stat(x).st_mtime)

nome file = più recente

importare il sistema operativo

rootpath = '/var/lib/motion'

filelist = [os.path.join(rootpath, f) for f in os.listdir(rootpath)]

filelist = [f per f in filelist if os.path.isfile(f)]

più recente = max(elenco file, chiave = lambda x: os.stat(x).st_mtime)

allegato = open(più recente, "rb")

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

part.set_payload((allegato).read())

encoders.encode_base64 (parte)

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

msg.attach (parte)

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

server.starttls()

server.login(fromaddr, "LA TUA PASSWORD")

testo = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

server.quit()

Passaggio 6: risoluzione dei problemi e fonti

Risoluzione dei problemi e fonti
Risoluzione dei problemi e fonti

Risoluzione dei problemi:

Poiché questo progetto ha più fasi, ci sono diversi punti in cui le cose possono andare storte. Di seguito sono riportati alcuni dei possibili errori che potrebbero verificarsi e come risolverli.

  • Quando configuri il tuo pi per inviarti un'e-mail con il suo indirizzo IP corrente, è fondamentale modificare il file rc.local come mostrato in precedenza perché ciò consente un leggero ritardo prima che il programma si attivi dopo il riavvio. Altrimenti il pi non sarà ancora connesso al wifi e l'email non verrà inviata.
  • Quando si modifica il file motion.conf assicurarsi di eliminare i punti e virgola davanti a determinati parametri. Il punto e virgola sopprime una determinata azione, altrimenti la modifica non avrà effetto.
  • Il file motion.conf è molto ben organizzato e dettagliato. Sentiti libero di modificare le impostazioni a tuo piacimento, ma tieni presente che possono influire sul successo del sistema di acquisizione del movimento.
  • Dopo aver impostato l'avviso e-mail e le opzioni video e-mail, è importante notare che l'e-mail del video rilevato dal movimento impiegherà un po' più di tempo rispetto all'e-mail di avviso iniziale. Questo perché il video si conclude un paio di secondi dopo che il movimento non viene più rilevato e perché l'allegato e-mail potrebbe essere abbastanza grande da richiedere un paio di minuti per essere ricevuto. In alcuni casi, se il movimento viene sostenuto per un periodo di tempo molto lungo, potrebbe essere troppo grande per essere inviato. Per questo motivo è sempre una buona idea controllare il livestream dopo aver ricevuto l'e-mail di avviso iniziale.

Perché il movimento?:

Quando abbiamo iniziato questo progetto per la prima volta, abbiamo preso in considerazione diverse risorse. Per prima cosa abbiamo preso in considerazione l'utilizzo di PiCam, che è un'unità fotocamera costruita appositamente per il Raspberry Pi. La PiCam è sicuramente un dispositivo capace e ha molte applicazioni, ma è limitata all'utilizzo di programmi progettati appositamente per essa ed è relativamente costosa rispetto alle webcam multiuso economiche. Quindi, per rendere questo progetto accessibile a un pubblico più ampio, abbiamo deciso di utilizzare una comune webcam USB. Il problema successivo era quale software incorporare. Inizialmente abbiamo considerato OpenCV, un software gratuito che consente molti tipi diversi di progetti di visione artificiale e imaging. Uno dei problemi qui è che OpenCV è un file enorme che occupa molta memoria e una configurazione molto lunga. L'installazione ha anche più fasi, lasciando ancora più spazio agli errori. Abbiamo scoperto che per il nostro progetto specifico, Motion era più semplice da configurare e far funzionare, ma molto più robusto nella sua esecuzione.

Fonti

Fonti del codice:

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

Crediti fotografici:

Lumaca SSH:

Logo della posta:

Webcam Logitech:

Finestra SSH:

Consigliato: