Cuprins:

Cameră de detectare a mișcării Raspberry Pi 3 cu flux live: 6 pași
Cameră de detectare a mișcării Raspberry Pi 3 cu flux live: 6 pași

Video: Cameră de detectare a mișcării Raspberry Pi 3 cu flux live: 6 pași

Video: Cameră de detectare a mișcării Raspberry Pi 3 cu flux live: 6 pași
Video: How To Run TensorFlow Lite on Raspberry Pi for Object Detection 2024, Noiembrie
Anonim
Cameră de detectare a mișcării Raspberry Pi 3 cu flux live
Cameră de detectare a mișcării Raspberry Pi 3 cu flux live

Introducere

În acest proiect, veți învăța cum să construiți o cameră de detectare a mișcării pe care o veți putea folosi ca o capcană pentru cameră, un monitor pentru animale de companie / bebeluș, o cameră de securitate și multe altele.

Acest proiect este organizat în mai mulți pași:

  • Introducere
  • Configurarea dispozitivului Pi
  • SSHing în Pi
  • Trimiterea prin e-mail a adresei IP la pornire
  • Instalarea și configurarea Motion
  • Trimiterea prin e-mail a videoclipurilor din Motion on detectare
  • Depanare și surse

De ce veți avea nevoie:

  • Un model Raspberry Pi 3 b ~~ 35 $
  • Card Micro SD de 8 GB ~ ~ 10 USD
  • Cameră web USB ~~ 20 $ (acest proiect a folosit o cameră Web Logitech HD c270)
  • cablu micro usb ~~ 5 $
  • fie:
  • acumulator reîncărcabil de 5 volți (baterie de rezervă pentru telefon), acest lucru face ca proiectul dvs. să fie fără fir ~~ 20 $
  • sau
  • adaptor de perete usb ~~ 5 $
  • O conexiune WiFi

La ce veți avea nevoie de acces pentru configurare:

  • Un monitor
  • Un mouse și o tastatură
  • Un computer cu un slot pentru card SD
  • Un convertor Micro SD în card SD (ar trebui să vină cu cardul dvs. micro SD)

Pasul 1: Configurarea Pi

Configurarea Pi
Configurarea Pi

Acum să configurăm Pi-ul

Pentru început, asigurați-vă că aveți toate elementele necesare din ultimul pas. Apoi, urmați pașii de pe site-ul web Raspberry Pi pentru instalarea Raspbian Jessie pe cardul dvs. Microsd, găsit aici.

Odată ce ați instalat Raspbian pe Pi, este timpul să configurați câteva funcții de bază.

Wifi

Primul pas pentru a profita la maximum de Pi este să îl conectați la internet. Este posibil să fi finalizat deja acest pas fie localizând simbolul WiFi în colțul din dreapta sus al ecranului principal al Pi-ului și conectându-vă acolo, fie făcând același lucru înainte de a instala Raspbian în ultimul pas. Dacă nu vă puteți conecta la rețeaua WiFi din interfața desktop Pi, puteți urma instrucțiunile de aici pentru a configura WiFi prin linia de comandă.

SSH

Un instrument foarte la îndemână disponibil pentru dvs. atunci când utilizați Pi-ul este opțiunea de a emite comenzi către Pi-ul dvs. în ceea ce este cunoscut sub numele de configurare fără cap. Utilizând un Secure SHell sau SSH, puteți controla Pi-ul de la distanță de pe un computer. Cu această metodă, tot ce veți avea nevoie pentru a vă edita Pi este o sursă de alimentare pentru ao menține aprinsă, nu mai aveți monitor și tastatură!

Pasul 2: SSHing în PI

SSHing în PI
SSHing în PI
SSHing în PI
SSHing în PI

SSHing în Raspberry Pi este ușor și foarte util, deoarece procesul vă permite să emiteți comenzi către Pi de pe orice computer cu nimic mai mult decât o conexiune WiFi.

Pentru a SSH în Pi, trebuie să urmați acești 3 pași simpli.

Mai întâi, trebuie să activați SSH pe Pi. Pentru a face acest lucru, deschideți o fereastră de comandă în Pi și introduceți:

sudo raspi-config

Această comandă vă permite să accesați un meniu de configurare. de acolo veți dori să utilizați tastele săgeată, filă și introducere pentru a intra mai întâi în opțiunile de interfață, apoi pentru a activa SSH, precum și camera, apoi ieșiți și reporniți pi.

Apoi, va trebui să găsiți adresa IP a Pi. Într-un terminal de comandă, tastați:

sudo ifconfig

Și adresa dvs. IP ar trebui să fie în secțiunea wlan0 care apare, chiar sub Link encap: Ethernet. În imaginea demonstrativă de mai sus, adresa IP este 192.168.1.10.

În cele din urmă, va trebui fie să deschideți aplicația terminal încorporată pe un Mac, fie să găsiți și să urmați instrucțiunile pentru o aplicație ssh terță parte pentru Windows. În aplicația Terminal, tastați:

ssh pi @ ADRESA DVS. IP

Dacă nu ați schimbat parola în timp ce utilizați Raspi-config, atunci parola pentru a introduce când vi se solicită va fi parola implicită: zmeură.

De acolo, ar trebui să fii bun să pleci!

Pasul 3: Trimiteți prin e-mail adresa IP la pornire

Trimiteți adresa dvs. de e-mail la pornire
Trimiteți adresa dvs. de e-mail la pornire

În acest pas ne vom concentra asupra modului de accesare a Raspberry Pi, indiferent de rețeaua în care vă aflați. În funcție de rețea, adresa IP a Pi se schimbă. Și dacă nu aveți o configurare a monitorului, ar trebui să intrați în Pi pentru a declanșa protocolul de detectare a mișcării, pentru a modifica preferințele de mișcare sau pentru a accesa orice altceva de pe dispozitiv. Pentru a rezolva această problemă, vom scrie un script python care ne trimite prin e-mail adresa IP curentă a PI la pornire. Scriptul python este după cum urmează și a fost stocat într-un director marcat „fundal”.

#start în directorul de start

cd ~

#create folder de fundal

fundal mkdir

#create script python

sudo nano emailip.py

#write în emailip.py

soclu de import

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

din e-mail. MIMEMultipart import MIMEMultipart

din e-mail. MIMEText import MIMEText

fromaddr = "ADRESA DUMNEAVOASTRĂ"

toaddr = "ADRESĂ DE PRIMARE"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "Adresă IP"

body = xmsg.attach (MIMEText (corp, „simplu”))

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

server.starttls ()

server.login (fromaddr, "PAROLA DUMNEAVOASTRĂ")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

#atunci acest lucru o face la repornire

sudo nano /etc/rc.local

#enter în /etc/rc.local

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

dormi 3

Terminat

_IP = $ (hostname -I) || Adevărat

dacă ["$ _IP"]; atunci

printf "Adresa mea IP este% s / n" "$ _IP"

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

fi

ieșire 0

#și ai terminat

Pasul 4: Instalarea și configurarea mișcării

Instalarea și configurarea mișcării
Instalarea și configurarea mișcării

#update pi

sudo apt-get update

sudo apt-get upgrade

#Descarca

sudo apt-get install motion

# acum editați acest fișier cu următoarele modificări

sudo nano /etc/motion/motion.conf

#pentru a stabili un standard pentru acest tutorial, schimbați

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

daemon on

stream_localhost oprit

webcontrol_localhost dezactivat

ffmpeg_output_movies activat

target_dir / var / lib / motion

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

#local opțiuni de streaming ale browserului web

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

stream_maxrate 100 # Acest lucru va permite streaming în timp real, dar necesită mai multă lățime de bandă și resurse

framerate 60 # Acest lucru va permite capturarea a 60 de cadre pe secundă # cu cât crește acest lucru, cu atât procesarea video este mai lentă

lățimea 640 # Aceasta modifică lățimea imaginii afișate

înălțime 480 # Aceasta modifică înălțimea imaginii afișate

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

#emailing video settings in … / motion.conf

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

# ștergeți „;” în fața liniei, punctul și virgula comentează linia

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

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

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

#astectica

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

#choices descrise în fișier

imagini_output localizare_stil_motivitate

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

#atunci schimbare

sudo nano / etc / default / motion

#a zice

start_motion_daemon = da

#ultime, porniți B **** sus

sudo service motion start

# puteți schimba comanda pentru a „opri” sau „reporniți”

Pasul 5: Trimiterea prin e-mail a videoclipurilor din mișcare la detectare

Trimiterea prin e-mail a videoclipurilor din mișcare la detectare
Trimiterea prin e-mail a videoclipurilor din mișcare la detectare

Trimiteți un e-mail la detectarea mișcării:

#începeți acasă

dircd ~

#create script python de alertă de mișcare

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

#scrie

import smtplib

din datetime import datetime

din e-mail. MIMEMultipart import MIMEMultipart

din e-mail. MIMEText import MIMEText

fromaddr = "ADRESA TA"

toaddr = "RECIEVINGADDRESS"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "Mișcare detectată"

body = 'A fost detectată o mișcare. / nTimp:% s'% str (datetime.now ())

msg.attach (MIMEText (corp, „simplu”))

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

server.starttls ()

server.login (fromaddr, "YOURPASSWORD")

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

E-mail Video de mișcare atunci când videoclipul este salvat:

#start at homedircd ~

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

import smtplib

din e-mail. MIMEMultipart import MIMEMultipart

din e-mail. MIMEText import MIMEText

din e-mail. MIMEBase import MIMEBase

de la codificatoare de import de e-mail

fromaddr = "E-MAILUL DUMNEAVOASTRĂ"

toaddr = "ADRESA E-MAIL LA CARE TRIMITEȚI"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

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

body = "Video cu mișcare detectată"

msg.attach (MIMEText (corp, „simplu”))

import os

rootpath = '/ var / lib / motion'

filelist = [os.path.join (rootpath, f) pentru f în os.listdir (rootpath)]

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

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

filename = cel mai nou

import os

rootpath = '/ var / lib / motion'

filelist = [os.path.join (rootpath, f) pentru f în os.listdir (rootpath)]

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

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

atașament = deschis (cel mai nou, "rb")

parte = MIMEBase („aplicație”, „octet-stream”)

part.set_payload ((atașament).read ())

encoders.encode_base64 (parte)

part.add_header ('Content-Disposition', "atașament; nume de fișier =% s"% nume de fișier)

msg.attach (parte)

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

server.starttls ()

server.login (fromaddr, „PAROLA DUMNEAVOASTRĂ”)

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

Pasul 6: Depanare și surse

Depanare și surse
Depanare și surse

Depanare:

Deoarece acest proiect are mai multe etape, există mai multe puncte în care lucrurile pot merge prost. Mai jos sunt câteva dintre posibilele erori care ar putea apărea și cum să le remediați.

  • Când vă configurați pi-ul pentru a vă trimite adresa IP curentă, este crucial să editați fișierul rc.local așa cum se arată mai devreme, deoarece acest lucru permite o ușoară întârziere înainte ca programul să se activeze după repornire. În caz contrar, pi nu va fi încă conectat la wifi, iar e-mailul nu va fi trimis.
  • Când editați fișierul motion.conf, asigurați-vă că ștergeți punctele și virgulele în fața anumitor parametri. Punctul și virgula suprimă o acțiune dată, astfel încât altfel schimbarea nu va intra în vigoare.
  • Fișierul motion.conf este foarte bine organizat și detaliat. Simțiți-vă liber să modificați setările după dorința dvs., dar înțelegeți că acestea pot afecta succesul sistemului de captare a mișcării.
  • După configurarea opțiunilor de alertă prin e-mail și video prin e-mail, este important să rețineți că e-mailul videoclipului detectat de mișcare va dura puțin mai mult decât pentru a trimite decât e-mailul de alertă inițial. Acest lucru se datorează faptului că videoclipul se încheie la câteva secunde după ce mișcarea nu mai este detectată și deoarece atașamentul de e-mail ar putea fi suficient de mare încât să necesite câteva minute pentru a primi. În unele cazuri, dacă mișcarea este susținută pentru o perioadă foarte lungă de timp, poate fi prea mare pentru a fi trimisă deloc. Din acest motiv, este întotdeauna o idee bună să verificați fluxul live după ce ați primit e-mailul de alertă inițial.

De ce mișcare ?:

Când ne-am angajat pentru prima dată în acest proiect, am luat în considerare mai multe resurse diferite. Mai întâi ne-am gândit să folosim PiCam, care este o unitate de cameră construită special pentru zmeura pi. PiCam este cu siguranță un dispozitiv capabil și are multe aplicații, dar este limitat la utilizarea de programe special concepute pentru acesta și este relativ scump în comparație cu camerele web polivalente ieftine. Deci, pentru a face acest proiect accesibil pentru un public mai mare, am decis să folosim o cameră web USB comună. Următorul număr a fost ce software să încorporeze. Am considerat inițial OpenCV, un software gratuit care permite multe tipuri diferite de proiecte de viziune computerizată și imagistică. Una dintre problemele de aici este că OpenCV este un fișier masiv care ocupă multă memorie și este configurat mult timp. Configurarea are, de asemenea, mai multe etape, lăsând și mai mult spațiu pentru erori. Am constatat că, pentru proiectul nostru specific, Motion a fost mai simplu de configurat și a funcționa, dar mult mai robust în execuția sa.

Surse

Surse de cod:

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

Credite foto:

SSH Snail:

Logo poștal:

Cameră web Logitech:

Fereastra SSH:

Recomandat: