Πίνακας περιεχομένων:

Κάμερα ανίχνευσης κίνησης Raspberry Pi 3 με ζωντανή ροή: 6 βήματα
Κάμερα ανίχνευσης κίνησης Raspberry Pi 3 με ζωντανή ροή: 6 βήματα

Βίντεο: Κάμερα ανίχνευσης κίνησης Raspberry Pi 3 με ζωντανή ροή: 6 βήματα

Βίντεο: Κάμερα ανίχνευσης κίνησης Raspberry Pi 3 με ζωντανή ροή: 6 βήματα
Βίντεο: Part 1 - Ann Veronica Audiobook by H. G. Wells (Chs 01 -03) 2024, Ιούλιος
Anonim
Κάμερα ανίχνευσης κίνησης Raspberry Pi 3 με ζωντανή ροή
Κάμερα ανίχνευσης κίνησης Raspberry Pi 3 με ζωντανή ροή

Εισαγωγή

Σε αυτό το έργο, θα μάθετε πώς να φτιάχνετε μια κάμερα ανίχνευσης κίνησης που θα μπορείτε να χρησιμοποιήσετε ως παγίδα κάμερας, οθόνη κατοικίδιων ζώων/μωρών, κάμερα ασφαλείας και πολλά άλλα.

Το έργο αυτό οργανώνεται σε διάφορα βήματα:

  • Εισαγωγή
  • Ρύθμιση του Pi σας
  • SSHing στο Pi σας
  • Αποστολή της διεύθυνσης IP σας κατά την εκκίνηση
  • Εγκατάσταση και ρύθμιση του Motion
  • Αποστολή βίντεο από Motion κατά την ανίχνευση
  • Αντιμετώπιση προβλημάτων και πηγές

Τι θα χρειαστείτε:

  • Μοντέλο Raspberry Pi 3 b ~~ 35 $
  • Κάρτα Micro SD 8 GB 10 ~~
  • Κάμερα USB ~~ 20 $ (αυτό το έργο χρησιμοποίησε μια κάμερα Logitech HD Webcam c270)
  • καλώδιο micro usb ~~ 5 $
  • είτε:
  • επαναφορτιζόμενη μπαταρία 5 volt (εφεδρική μπαταρία τηλεφώνου), αυτό καθιστά το έργο σας ασύρματο 20 ~~
  • ή
  • usb προσαρμογέας τοίχου ~~ 5 $
  • Μια σύνδεση WiFi

Σε τι θα χρειαστείτε πρόσβαση για ρύθμιση:

  • Μια οθόνη
  • Ποντίκι και πληκτρολόγιο
  • Υπολογιστής με υποδοχή κάρτας SD
  • Μετατροπέας κάρτας Micro SD σε SD (θα πρέπει να συνοδεύεται από την κάρτα micro SD)

Βήμα 1: Ρύθμιση του Pi σας

Ρύθμιση του Pi σας
Ρύθμιση του Pi σας

Τώρα ας ρυθμίσουμε το Pi σας

Για να ξεκινήσετε, βεβαιωθείτε ότι έχετε όλα τα απαιτούμενα στοιχεία από το τελευταίο βήμα. Στη συνέχεια, ακολουθήστε τα βήματα στον ιστότοπο Raspberry Pi σχετικά με την εγκατάσταση του Raspbian Jessie στην κάρτα Microsd, που βρίσκεται εδώ.

Μόλις εγκαταστήσετε το Raspbian στο Pi σας, ήρθε η ώρα να ρυθμίσετε ορισμένες βασικές λειτουργίες.

WiFi

Το πρώτο βήμα για να αξιοποιήσετε στο έπακρο το Pi σας είναι να το συνδέσετε στο Διαδίκτυο. Μπορεί να έχετε ολοκληρώσει αυτό το βήμα είτε εντοπίζοντας το σύμβολο WiFi στην επάνω δεξιά γωνία της κύριας οθόνης του Pi σας και κάνοντας είσοδο εκεί, είτε κάνοντας το ίδιο πράγμα πριν εγκαταστήσετε το Raspbian στο τελευταίο βήμα. Εάν δεν μπορείτε να συνδεθείτε στο δίκτυο WiFi από την επιφάνεια εργασίας του Pi σας, μπορείτε να ακολουθήσετε τις οδηγίες εδώ για να ρυθμίσετε το WiFi μέσω της γραμμής εντολών.

SSH

Ένα πολύ εύχρηστο εργαλείο που έχετε στη διάθεσή σας όταν χρησιμοποιείτε το Pi σας είναι η επιλογή έκδοσης εντολών στο Pi σας σε αυτό που είναι γνωστό ως εγκατάσταση ακέφαλου. Χρησιμοποιώντας ένα Secure SHell ή SSH, μπορείτε να ελέγξετε το Pi σας από απόσταση από έναν υπολογιστή. Με αυτήν τη μέθοδο, το μόνο που θα χρειαστείτε για να επεξεργαστείτε το Pi σας είναι μια πηγή ενέργειας για να το κρατήσετε αναμμένο, όχι άλλη οθόνη και πληκτρολόγιο!

Βήμα 2: SSHing Into Your PI

SSHing Into Your PI
SSHing Into Your PI
SSHing Into Your PI
SSHing Into Your PI

Το SSHing στο Raspberry Pi σας είναι εύκολο και πολύ χρήσιμο, καθώς η διαδικασία σάς επιτρέπει να εκδίδετε εντολές στο Pi σας από οποιονδήποτε υπολογιστή χωρίς τίποτα περισσότερο από μια σύνδεση WiFi.

Για να κάνετε SSH στο Pi σας, πρέπει να ακολουθήσετε αυτά τα 3 απλά βήματα.

Πρώτον, πρέπει να ενεργοποιήσετε το SSH στο Pi σας. Για να το κάνετε αυτό, ανοίξτε ένα παράθυρο εντολών στο Pi σας και πληκτρολογήστε:

sudo raspi-config

Αυτή η εντολή σάς επιτρέπει να εισαγάγετε ένα μενού διαμόρφωσης. από εκεί θα θέλετε να χρησιμοποιήσετε τα βέλη, την καρτέλα και τα πλήκτρα εισαγωγής για να μεταβείτε πρώτα στις επιλογές διασύνδεσης, στη συνέχεια να ενεργοποιήσετε το SSH, καθώς και την κάμερα, στη συνέχεια να βγείτε και να επανεκκινήσετε το pi.

Στη συνέχεια, θα πρέπει να βρείτε τη διεύθυνση IP του Pi σας. Σε ένα τερματικό εντολών, πληκτρολογήστε:

sudo ifconfig

Και η διεύθυνση IP σας θα πρέπει να βρίσκεται στην ενότητα wlan0 που εμφανίζεται, ακριβώς κάτω από το Link encap: ethernet. Στην παραπάνω επίδειξη, η διεύθυνση IP είναι 192.168.1.10.

Τέλος, θα πρέπει είτε να ανοίξετε την ενσωματωμένη εφαρμογή τερματικού σε mac, είτε να βρείτε και να ακολουθήσετε οδηγίες για μια εφαρμογή ssh τρίτων κατασκευαστών για παράθυρα. Στην εφαρμογή Τερματικό, πληκτρολογήστε:

ssh pi@ΔΙΕΥΘΥΝΣΗ IP ΣΑΣ

Εάν δεν έχετε αλλάξει τον κωδικό πρόσβασης ενώ βρίσκεστε στο Raspi-config, τότε ο κωδικός πρόσβασης που θα εισαγάγετε όταν σας ζητηθεί θα είναι ο προεπιλεγμένος κωδικός πρόσβασης: βατόμουρο.

Από εκεί και πέρα, καλό θα ήταν να φύγεις!

Βήμα 3: Στείλτε email τη διεύθυνση IP σας στην εκκίνηση

Αποστολή της διεύθυνσης IP σας στην εκκίνηση
Αποστολή της διεύθυνσης IP σας στην εκκίνηση

Σε αυτό το βήμα θα εστιάσουμε στον τρόπο πρόσβασης στο Raspberry Pi, ανεξάρτητα από το δίκτυο στο οποίο βρίσκεστε. Ανάλογα με το δίκτυο, η διεύθυνση IP του Pi αλλάζει. Και αν δεν έχετε ρύθμιση οθόνης, θα πρέπει να μπείτε στο Pi για να ενεργοποιήσετε το πρωτόκολλο ανίχνευσης κίνησης, να αλλάξετε τις προτιμήσεις κίνησης ή να αποκτήσετε πρόσβαση σε οτιδήποτε άλλο στη συσκευή. Για να λύσουμε αυτό το πρόβλημα, θα γράψουμε ένα σενάριο python που θα μας στέλνει email την τρέχουσα διεύθυνση IP του Pi κατά την εκκίνηση. Το σενάριο python έχει ως εξής και αποθηκεύτηκε σε έναν κατάλογο με την ένδειξη "background".

#ξεκινήστε στον αρχικό κατάλογο

cd

#δημιουργία φακέλου φόντου

mkdir φόντο

#create python script

sudo nano emailip.py

#εγγραφή στο emailip.py

υποδοχή εισαγωγής

s = socket.socket (υποδοχή. AF_INET, πρίζα. SOCK_DGRAM)

s.connect (("8.8.8.8", 80))

εκτύπωση (s.getsockname () [0]) x = s.getsockname () [0] s.close ()

εισαγωγή smtplib

από email. MIMEMultipart εισαγωγή MIMEMultipart

από email. MIMEText εισαγωγή MIMEText

fromaddr = "Η ΔΙΕΥΘΥΝΣΗ ΣΑΣ"

toaddr = "ΛΗECΗ ΔΙΕΥΘΥΝΣΗΣ"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "Διεύθυνση IP"

body = xmsg.attach (MIMEText (σώμα, «απλό»))

διακομιστής = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, "YOUR PASSWORD")

κείμενο = msg.as_string ()

server.sendmail (fromaddr, toaddr, κείμενο)

server.quit ()

#τότε το κάνει κατά την επανεκκίνηση

sudo nano /etc/rc.local

#εισάγετε στο /etc/rc.local

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

κοιμηθείτε 3

Έγινε

_IP = $ (όνομα κεντρικού υπολογιστή -I) || αληθής

εάν ["$ _IP"]; τότε

printf "Η διεύθυνση IP μου είναι %s / n" "$ _IP"

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

fi

έξοδος 0

#και τελειώσατε

Βήμα 4: Εγκατάσταση και ρύθμιση κίνησης

Εγκατάσταση και ρύθμιση κίνησης
Εγκατάσταση και ρύθμιση κίνησης

#ενημέρωση pi

sudo apt-get ενημέρωση

sudo apt-get αναβάθμιση

#Κατεβάστε

sudo apt-get κίνηση εγκατάστασης

#τώρα επεξεργαστείτε αυτό το αρχείο με τις ακόλουθες αλλαγές

sudo nano /etc/motion/motion.conf

#για να ορίσετε ένα πρότυπο για αυτό το σεμινάριο, αλλάξτε

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

δαίμονας επάνω

Το stream_localhost είναι απενεργοποιημένο

webcontrol_localhost απενεργοποιημένο

ffmpeg_output_movies on

target_dir/var/lib/motion

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

#τοπικές επιλογές ροής προγράμματος περιήγησης ιστού

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

stream_maxrate 100 #Αυτό θα επιτρέψει τη ροή σε πραγματικό χρόνο, αλλά απαιτεί περισσότερο εύρος ζώνης και πόρους

ρυθμός καρέ 60 #Αυτό θα επιτρέψει τη λήψη 60 καρέ ανά δευτερόλεπτο #όσο υψηλότερο γίνεται, τόσο πιο αργή είναι η επεξεργασία βίντεο

πλάτος 640 #Αυτό αλλάζει το πλάτος της εικόνας που εμφανίζεται

ύψος 480 #Αυτό αλλάζει το ύψος της εμφανιζόμενης εικόνας

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

#emailing ρυθμίσεις βίντεο στο…/motion.conf

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

#διαγράψτε το ";" μπροστά από τη γραμμή, το ερωτηματικό σχολιάζει τη γραμμή έξω

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

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

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

#astectics

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

#επιλογές που περιγράφονται στο αρχείο

εξόδους_εικονίσεων

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

#τότε αλλαγή

sudo nano/etc/default/motion

#να πω

start_motion_daemon = ναι

#τελευταία, ξεκινήστε το B **** επάνω

εκκίνηση κίνησης υπηρεσίας sudo

#μπορείτε να αλλάξετε την εντολή σε "διακοπή" ή "επανεκκίνηση"

Βήμα 5: Αποστολή βίντεο από κίνηση σε ανίχνευση

Αποστολή βίντεο από κίνηση σε ανίχνευση
Αποστολή βίντεο από κίνηση σε ανίχνευση

Email όταν εντοπιστεί κίνηση:

#ξεκινήστε στο σπίτι

dircd

#create motion python script

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

#γράφω

εισαγωγή smtplib

από datetime εισαγωγή datetime

από email. MIMEMultipart εισαγωγή MIMEMultipart

από email. MIMEText εισαγωγή MIMEText

fromaddr = "YURADDRESS"

toaddr = "RECIEVINGADDRESS"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "Εντοπίστηκε κίνηση"

body = 'Εντοπίστηκε κίνηση. / nΧρόνος: % s' % str (datetime.now ())

msg.attach (MIMEText (σώμα, «απλό»))

διακομιστής = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, "YOURPASSWORD")

κείμενο = msg.as_string ()

server.sendmail (fromaddr, toaddr, κείμενο)

server.quit ()

Email Βίντεο κίνησης όταν αποθηκεύεται το βίντεο:

#start at homedircd

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

εισαγωγή smtplib

από email. MIMEMultipart εισαγωγή MIMEMultipart

από email. MIMEText εισαγωγή MIMEText

από email. MIMEBase εισαγωγή MIMEBase

από κωδικοποιητές εισαγωγής email

fromaddr = "ΤΟ EMAIL ΣΑΣ"

toaddr = "E -mail ΔΙΕΥΘΥΝΣΗ ΠΟΥ ΣΤΕΙΛΑΤΕ"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

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

body = "Εντοπίστηκε βίντεο κίνησης"

msg.attach (MIMEText (σώμα, «απλό»))

εισαγωγή os

rootpath = '/var/lib/motion'

filelist = [os.path.join (rootpath, f) for f στο os.listdir (rootpath)]

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

νεότερο = max (λίστα αρχείων, κλειδί = λάμδα x: os.stat (x).st_mtime)

όνομα αρχείου = νεότερο

εισαγωγή os

rootpath = '/var/lib/motion'

filelist = [os.path.join (rootpath, f) for f στο os.listdir (rootpath)]

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

νεότερο = max (λίστα αρχείων, κλειδί = λάμδα x: os.stat (x).st_mtime)

συνημμένο = ανοιχτό (νεότερο, "rb")

μέρος = MIMEBase ('εφαρμογή', 'octet-stream')

part.set_payload ((συνημμένο).read ())

encoders.encode_base64 (μέρος)

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

msg.attach (part)

διακομιστής = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, "YOUR PASSWORD")

κείμενο = msg.as_string ()

server.sendmail (fromaddr, toaddr, κείμενο)

server.quit ()

Βήμα 6: Αντιμετώπιση προβλημάτων και πηγές

Αντιμετώπιση προβλημάτων και πηγές
Αντιμετώπιση προβλημάτων και πηγές

Αντιμετώπιση προβλημάτων:

Επειδή αυτό το έργο έχει πολλά στάδια, υπάρχουν πολλά σημεία στα οποία τα πράγματα μπορεί να πάνε στραβά. Παρακάτω είναι μερικά από τα πιθανά σφάλματα που μπορεί να προκύψουν και πώς να τα διορθώσετε.

  • Κατά τη ρύθμιση του pi σας για να σας στείλει email την τρέχουσα διεύθυνση IP του, είναι ζωτικής σημασίας να επεξεργαστείτε το αρχείο rc.local όπως φαίνεται νωρίτερα, διότι αυτό επιτρέπει μια μικρή καθυστέρηση πριν ενεργοποιηθεί το πρόγραμμα μετά την επανεκκίνηση. Διαφορετικά, το pi δεν θα είναι ακόμη συνδεδεμένο σε wifi και το email δεν θα σταλεί.
  • Κατά την επεξεργασία του αρχείου motion.conf φροντίστε να διαγράψετε τα ερωτηματικά μπροστά από ορισμένες παραμέτρους. Το ερωτηματικό καταστέλλει μια δεδομένη ενέργεια, οπότε διαφορετικά η αλλαγή δεν θα τεθεί σε ισχύ.
  • Το αρχείο motion.conf είναι πολύ καλά οργανωμένο και λεπτομερές. Μη διστάσετε να αλλάξετε τις ρυθμίσεις σύμφωνα με τις προτιμήσεις σας, αλλά κατανοήστε ότι μπορεί να επηρεάσουν την επιτυχία του συστήματος λήψης κίνησης.
  • Αφού ρυθμίσετε τις επιλογές ειδοποίησης ηλεκτρονικού ταχυδρομείου και βίντεο βίντεο, είναι σημαντικό να σημειώσετε ότι το μήνυμα ηλεκτρονικού ταχυδρομείου του βίντεο που εντοπίστηκε κίνηση θα διαρκέσει λίγο περισσότερο από το να σταλεί από το αρχικό μήνυμα ηλεκτρονικού ταχυδρομείου ειδοποίησης. Αυτό συμβαίνει επειδή το βίντεο ολοκληρώνεται μερικά δευτερόλεπτα αφού η κίνηση δεν ανιχνεύεται πλέον και επειδή το συνημμένο μήνυμα ηλεκτρονικού ταχυδρομείου μπορεί να είναι αρκετά μεγάλο ώστε να απαιτεί μερικά λεπτά για τη λήψη. Σε ορισμένες περιπτώσεις, εάν η κίνηση διατηρείται για πολύ μεγάλο χρονικό διάστημα, μπορεί να είναι πολύ μεγάλη για αποστολή. Εξαιτίας αυτού, είναι πάντα καλή ιδέα να ελέγχετε τη ζωντανή ροή μετά τη λήψη του αρχικού email ειδοποίησης.

Γιατί Motion;:

Όταν ξεκινήσαμε για πρώτη φορά αυτό το έργο, εξετάσαμε αρκετούς διαφορετικούς πόρους. Πρώτα σκεφτήκαμε να χρησιμοποιήσουμε το PiCam, το οποίο είναι μια μονάδα κάμερας που δημιουργήθηκε ειδικά για το raspberry pi. Το PiCam είναι σίγουρα μια ικανή συσκευή και έχει πολλές εφαρμογές, αλλά περιορίζεται στη χρήση προγραμμάτων που έχουν σχεδιαστεί ειδικά για αυτό και είναι σχετικά ακριβό σε σύγκριση με τις φτηνές κάμερες πολλαπλών χρήσεων. Έτσι, για να καταστήσουμε αυτό το έργο προσβάσιμο σε μεγαλύτερο κοινό, αποφασίσαμε να χρησιμοποιήσουμε μια κοινή κάμερα USB. Το επόμενο ζήτημα ήταν ποιο λογισμικό να ενσωματώσει. Αρχικά σκεφτήκαμε το OpenCV που είναι δωρεάν λογισμικό που επιτρέπει πολλά διαφορετικά είδη έργων Computer Vision και απεικόνισης. Από τα ζητήματα εδώ είναι ότι το OpenCV είναι ένα τεράστιο αρχείο που καταλαμβάνει πολλή μνήμη και δημιουργείται πολύ καιρό. Η εγκατάσταση έχει επίσης πολλά στάδια, αφήνοντας ακόμη περισσότερο χώρο για σφάλματα. Διαπιστώσαμε ότι για το συγκεκριμένο έργο μας, το Motion ήταν πιο απλό στη ρύθμιση και την εργασία, αλλά πολύ πιο ισχυρό στην εκτέλεσή του.

Πηγές

Πηγές κώδικα:

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

Συντελεστές φωτογραφίας:

SSH Snail:

Λογότυπο αλληλογραφίας:

Κάμερα Logitech:

Παράθυρο SSH:

Συνιστάται: