Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
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
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
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
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
#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
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:
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: