Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Συναρμολογήστε το υλικό
- Βήμα 2: Βεβαιωθείτε ότι το Pi σας είναι συνδεδεμένο στο Διαδίκτυο
- Βήμα 3: Ρύθμιση της κάμερας
- Βήμα 4: Εγκατάσταση Flask
- Βήμα 5: Δημιουργήστε μια κλάση φόρμας
- Βήμα 6: Δημιουργήστε ένα πρότυπο φιάλης
- Βήμα 7: Αποδώστε το Πρότυπο
- Βήμα 8: Δημιουργήστε μια κατηγορία χειριστή κάμερας
- Βήμα 9: Δημιουργήστε την ενότητα εγγραφής
- Βήμα 10: Εκκινήστε τον διακομιστή
- Βήμα 11: ΔΟΚΙΜΑΣΤΕ ΤΟ
Βίντεο: Κάμερα ασφαλείας Raspberry Pi: 11 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Αυτό είναι βήμα προς βήμα οδηγίες για το πώς μπορείτε να δημιουργήσετε μια κάμερα ασφαλείας IoT, ενεργοποιημένη με κίνηση χρησιμοποιώντας ένα Raspberry Pi. Θα μάθετε πώς να δημιουργείτε έναν διακομιστή και φόρμα ιστού φιάλης που επιτρέπει στον χρήστη να προσαρμόσει την ευαισθησία και τον χρόνο εγγραφής της κάμερας, να ξεκινήσει/διακόψει χειροκίνητα μια εγγραφή ή/και να τραβήξει μια φωτογραφία που θα αποθηκευτεί τοπικά.
Προμήθειες
- Raspberry Pi 3
- Κάμερα Pi
- Αισθητήρας κίνησης PIR
- κάρτα SD
- Πηγή ενέργειας
Βήμα 1: Συναρμολογήστε το υλικό
Ενώ το Pi είναι απενεργοποιημένο, τοποθετήστε την κάρτα micro-SD στο Pi. Τοποθετήστε το καλώδιο κορδέλας της μονάδας κάμερας στη θύρα της μονάδας κάμερας στο Pi. Στη συνέχεια, συνδέστε τις 3 ακίδες (με σήμανση VCC, OUT και GND) του ανιχνευτή κίνησης PRI στις ακίδες GPIO του Pi. Συνδέστε το VCC σε 5,5V ισχύος, το GND στη γείωση και το OUT στο pin 11 στο Pi.
Βήμα 2: Βεβαιωθείτε ότι το Pi σας είναι συνδεδεμένο στο Διαδίκτυο
Τώρα, ενεργοποιήστε το Pi συνδέοντάς το σε μια πηγή ενέργειας και βεβαιωθείτε ότι είστε συνδεδεμένοι στο διαδίκτυο χρησιμοποιώντας την εντολή ping. Εάν δεν γνωρίζετε πώς να συνδέσετε το Pi σας στο διαδίκτυο, κάντε κλικ εδώ.
sudo ping www.google.com
Εάν είστε επιτυχημένοι, θα πρέπει να δείτε ότι τα δεδομένα λαμβάνονται από το Google.
Επιπλέον, μπορείτε να χρησιμοποιήσετε το ifconfig για να δείτε τη διεύθυνση IP σας.
sudo ifconfig
Βήμα 3: Ρύθμιση της κάμερας
Χρησιμοποιήστε την ακόλουθη εντολή για να ανοίξετε τη διεπαφή διαμόρφωσης και ενεργοποιήστε την κάμερα στις "επιλογές διασύνδεσης".
sudo raspi-config
Μετά την επανεκκίνηση, μπορείτε να εμφανίσετε την κατάσταση της κάμεράς σας για να βεβαιωθείτε ότι είναι σωστά συνδεδεμένη.
vcgencmd get_camera
Τέλος, εγκαταστήστε τη μονάδα picamera.
pip εγκατάσταση picamera
Βήμα 4: Εγκατάσταση Flask
Εγκαταστήστε τη μονάδα φιάλης και ηρεμίας φιάλης για την Python:
sudo apt-get install python-dev python-pip
python -m pip install φιάλη φιάλη -ξεκούραστη
Στη συνέχεια, θα εγκαταστήσουμε μια μονάδα φιάλης python που χρησιμοποιείται για τη δημιουργία φορμών.
pip εγκατάσταση φιάλης-wtf
Βήμα 5: Δημιουργήστε μια κλάση φόρμας
Δημιουργήστε έναν κατάλογο που ονομάζεται iotProject για να αποθηκεύσετε όλα τα αρχεία σας.
sudo mkdir iotProject
Δημιουργήστε ένα αρχείο python με το όνομα "camControl.py".
sudo nano camControl.py
Σε αυτό το αρχείο θα δημιουργήσουμε την κατηγορία φόρμας, η οποία μας επιτρέπει να δημιουργήσουμε μια φόρμα ιστού με πλαίσια κειμένου και ένα αναπτυσσόμενο μενού για να μπορεί ο χρήστης να αλλάξει τις ρυθμίσεις της κάμερας, να ξεκινήσει/σταματήσει χειροκίνητα μια εγγραφή και να τραβήξει βίντεο.
από flask_wtf import FlaskFormfrom wtforms.validators import dataΑπαραίτητα από wtforms import SubmitField from wtforms validators import, IntegerField, BooleanField, SelectField
class camFrame (FlaskForm):
videoDuration = IntegerField («Χρόνος εγγραφής (σε δευτερόλεπτα)»)
ευαισθησία = IntegerField («Ευαισθησία κίνησης (εύρος 2500-10000) nΌσο μεγαλύτερος είναι ο αριθμός, τόσο λιγότερο ευαίσθητη είναι η κάμερα», επικυρωτές = [validators. NumberRange (min = 2500, max = 10000, μήνυμα = 'Value Out of Range')])
επιλογές = SelectField («Επιλογές», επιλογές = [(«καμία», «Καμία ενέργεια»), («rec», «Έναρξη εγγραφής»), («διακοπή», «Διακοπή εγγραφής»), ('pic', 'Take Picture')])
υποβολή = SubmitField ("Υποβολή")
Βήμα 6: Δημιουργήστε ένα πρότυπο φιάλης
Για να δημιουργήσετε τη διεπαφή χρήστη, πρέπει να σχεδιάσετε ένα πρότυπο Flask το οποίο χρησιμοποιεί τη φόρμα που μόλις δημιουργήσατε. Αυτό το αρχείο θα γραφτεί σε html και θα αποθηκευτεί σε ένα φάκελο που ονομάζεται πρότυπα, ο οποίος θα πρέπει να βρίσκεται στον ίδιο κατάλογο με τη φόρμα σας.
Μέσα στο φάκελο των προτύπων σας, δημιουργήστε ένα αρχείο που ονομάζεται index.html. Μέσα σε αυτό το αρχείο, αντιγράψτε τον κώδικα που εμφανίζεται παραπάνω.
Βήμα 7: Αποδώστε το Πρότυπο
Τώρα ήρθε η ώρα να δημιουργήσετε ένα αρχείο που αποδίδει το πρότυπο. Δημιουργήστε ένα αρχείο με το όνομα appCam.py (βεβαιωθείτε ότι δεν είστε πλέον στο φάκελο προτύπων). Οποιοδήποτε δυναμικό περιεχόμενο που χρησιμοποιείται στο πρότυπο πρέπει να χρησιμοποιείται ως ονομαστικό όρισμα στην κλήση προς render_template ().
εισαγωγή camControl από φιάλη εισαγωγής Φιάλη, render_template, αίτημα, Απάντηση από flask_restful Import Resource, Api, reqparse
app = Φιάλη (_ όνομα_)
app.config ['SECRET_KEY'] = '13542' api = Api (εφαρμογή)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Διάρκεια βίντεο όταν ανιχνεύεται κίνηση') parser.add_argument ('sens', type = int, help = 'Απαιτείται επίπεδο κίνησης για να ενεργοποιηθεί ηχογράφηση').add_argument ('opt', type = str, help = 'Μη αυτόματη εγγραφή βίντεο ή λήψη εικόνας')
Ενημέρωση κλάσης (πόρος):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #write to the text text that συνομιλεί με την κάμερα που λειτουργεί παράλληλα cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (args ['dur'] + '\ n') #write dur cameraSettingsFile.write (args ['sens'] + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@app.route ('/', Methods = ['GET', 'POST'])
def index (): "" "Αρχική σελίδα ελεγκτή" "" form = camControl.camFrame () #αυτή είναι μια φόρμα if request.method == 'POST': print (request.form) args = [i for i in request.form.items ()] #rc.input (int (args [0] [1]), int (args [1] [1]), args [2] [1]) cameraSettingsFile = open ("cameraSettings.txt ", 'w') cameraSettingsFile.write (args [0] [1] + '\ n') #write dur cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"filename": "image.jpg"} επιστροφή render_template ('index.html', form = form, image = imageDictionary)
api.add_resource (Ενημέρωση, '/update/')
αν _name_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
Βήμα 8: Δημιουργήστε μια κατηγορία χειριστή κάμερας
Τώρα θέλουμε να δημιουργήσουμε ένα αρχείο που ονομάζεται camOperator.py. Σε αυτό θα φτιάξουμε μια κατηγορία κάμερας με μεθόδους λειτουργίας της κάμερας, χρησιμοποιώντας τις ήδη διαθέσιμες λειτουργίες PiCamera. Θα χρησιμοποιήσουμε μια παρουσία αυτού του αντικειμένου στο επόμενο βήμα όπου θα συνδυάσουμε τη λειτουργικότητα της κάμερας και του αισθητήρα κίνησης.
Οι μέθοδοι που ορίζονται σε αυτήν την κατηγορία αλλάζουν τις ρυθμίσεις "εγγραφής" στην κάμερα ασφαλείας χρησιμοποιώντας τις εισόδους ευαισθησίας και διάρκειας που παρέχει ο χρήστης, ενώ καθορίζουν τις προεπιλεγμένες τιμές για αυτές τις μεταβλητές εάν δεν υπάρχει εισαγωγή χρήστη.
εισαγωγή RPi. GPIO ως GPIOimport time import picamera from datetime import dataetetime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
ανίχνευση = 0
κάμερα κατηγορίας Λειτουργός:
def _init _ (self):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "κανένα"
def record (self, dur):
#Εγγραφές για τη δεδομένη διάρκεια που έχει οριστεί από τον ελεγκτή videoName = str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') Self.cam.start_recording ('/home/pi/iotProject/videos/' + videoName + '.h264') time.sleep (dur) self.cam.stop_recording ()
def λειτουργία (self, dur, sens):
#Κύρια λειτουργία της κάμερας η οποία ελέγχει συνεχώς για να δει αν ένας άνθρωπος είναι κοντά, αν ένας άνθρωπος μείνει αρκετά καιρό γύρω, ξεκινάμε την εγγραφή! καθολική ανίχνευση i = GPIO.input (11) αν i == 0: #Όταν η έξοδος από τον αισθητήρα κίνησης είναι LOW detection = 0 time.sleep (0.1) elif i == 1: #Όταν η έξοδος από τον αισθητήρα κίνησης είναι Υψηλή εκτύπωση (" ανίχνευση κίνησης " +str (ανίχνευση)) αν ανιχνεύσει> = sens*10: self.record (dur) print (" RECORDED ") detect = 0 time.sleep (0.1) detector += 1
Βήμα 9: Δημιουργήστε την ενότητα εγγραφής
Το τελευταίο πρόγραμμα που απαιτείται για αυτό το έργο θα γραφτεί σε ένα αρχείο με το όνομα rec.py. Αυτό το αρχείο ενημερώνει την κάμερα πότε πρέπει να εγγράψει, πόσο χρόνο να εγγράψει και αν/πότε να τραβήξει μια φωτογραφία. Το κάνει αυτό ελέγχοντας και διαβάζοντας συνεχώς τα δεδομένα χρήστη που έχουν γραφτεί στο αρχείο κειμένου από το βήμα 5. Εάν το αρχείο έχει ενημερωθεί, προσαρμόζει ανάλογα τις τιμές ευαισθησίας και διάρκειας και στη συνέχεια, εάν τραβήξει μια εγγραφή ή εικόνα, αποθηκεύει το περιεχόμενο σε το pi, είτε σε μορφή αρχείου.h264 είτε.jpg.
'' 'Λειτουργεί παράλληλα με το διακομιστή φιάλης, διαβάζοντας μεταβλητές ελέγχου που ορίζονται από τις φόρμες του διακομιστή. Οι μεταβλητές ελέγχου διακομιστή ορίζονται σε ξεχωριστό αρχείο μόλις υποβληθούν οι φόρμες. Η μονάδα rec διαβάζει αυτές τις μεταβλητές και ενημερώνει την κάμερα με βάση αυτές. '' 'εισαγωγή camOperator από ώρα εισαγωγής ημερομηνίας ώρας εισαγωγής χρόνου
rc = camOperator.cameraOperator ()
cameraSettingsFile = ανοιχτό ("cameraSettings.txt", 'w') cameraSettingsFile.close () #εδώ, ανοίγουμε και κλείνουμε σε λειτουργία εγγραφής για να διαγράψουμε τα περιεχόμενα μέσα στο αρχείο πριν τρέξει ο κύριος βρόχος
#Ένας συνεχής βρόχος που παρακολουθεί για να δει αν οι άνθρωποι είναι κοντά. Αν είναι, τότε
#η κάμερα ξεκινά την εγγραφή. Αυτή η λειτουργία εκτελείται παράλληλα με τον διακομιστή #φιάλης που ελέγχει αυτήν την κάμερα. recordingInProcess = False while True: #check/record if (recordingInProcess == False): rc.operation (rc.dur, rc.sens) #change the settings of the camera based on the server cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 για ρύθμιση στην κάμεραSettingsFile.readlines (): if settingNum == 0: #Duration change rc.dur = int (setting) elif settingNum == 1: #Αλλαγή ευαισθησίας rc.sens = int (ρύθμιση) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#εκτελέστε μια ενέργεια
# if rc.opt == "none": # continue if rc.opt == "rec / n" and recordingInProcess == False: print ("Εκτέλεση εντολής εγγραφής από τον ελεγκτή") #Generate name for video based on the current time timeName = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject /videos/' + videoName +'.h264 ') recordingInProcess = True elif rc.opt == "stop / n" and recordingInProcess == True: print ("Stopping record command from controller") rc.cam.stop_recording () recordingInProcess = False cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile εγγραφή ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" and recordingInProcess == False: print ("Snap a pic command from the controller") pictureName = "snappedPic_ "+str (datetime.now ()) pictureName = pictureName.replace (':', ') pictureName = pictureName.replace ('. ',') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('pictures/' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile. εγγραφή (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Βήμα 10: Εκκινήστε τον διακομιστή
SSH στο pi και ξεκινήστε τον διακομιστή χρησιμοποιώντας τη γραμμή εντολών που φαίνεται παραπάνω.
Βήμα 11: ΔΟΚΙΜΑΣΤΕ ΤΟ
Αποκτήστε πρόσβαση στην ιστοσελίδα χρησιμοποιώντας τη διεύθυνση IP και θα πρέπει να μπορείτε να ελέγχετε την κάμερα από απόσταση!
Συνιστάται:
Κάμερα ασφαλείας Raven Pi: 7 βήματα (με εικόνες)
Κάμερα ασφαλείας Raven Pi: Αυτό το πλαστικό κοράκι απολαμβάνει μια νέα ζωή μετά από μια πρακτική αλλά ανατριχιαστική κάμερα ασφαλείας, το Raven Pi. Έχει ένα Raspberry Pi στην κοιλιά του και μια κάμερα Pi ενσωματωμένη στο λαιμό του, τραβώντας βίντεο HD κάθε φορά που ανιχνεύεται κίνηση. Την ίδια στιγμή είναι
Η ευκολότερη κάμερα web ως κάμερα ασφαλείας - Ανίχνευση κίνησης και εικόνες με email: 4 βήματα
Η ευκολότερη κάμερα ως κάμερα ασφαλείας - Ανίχνευση κίνησης και εικόνες μέσω ηλεκτρονικού ταχυδρομείου: Δεν χρειάζεται πλέον να κατεβάζετε ή να διαμορφώνετε λογισμικό για να λαμβάνετε εικόνες που εντοπίζονται από την κάμερα στο email σας - απλά χρησιμοποιήστε το πρόγραμμα περιήγησής σας. Χρησιμοποιήστε ένα ενημερωμένο πρόγραμμα περιήγησης Firefox, Chrome, Edge ή Opera σε Windows, Mac ή Android για να τραβήξετε την εικόνα
WoodThing IOT Κάμερα ασφαλείας: 8 βήματα (με εικόνες)
WoodThing IOT Security Camera: Αυτή είναι μια ισχυρή κάμερα IP βασισμένη στο Raspberry PI. Τρέχει το motionEyeOS, έτσι μπορεί να χρησιμοποιηθεί για τη διαχείριση πολλαπλών απομακρυσμένων IP καμερών καθώς επίσης και για να μπορείτε να συνδέσετε έως και τέσσερις πρόσθετες κάμερες USB χαμηλού κόστους. Χαρακτηριστικά: Τροφοδοτείται από USB, ανίχνευση κίνησης με
Upcycled κάμερα εφεδρική κάμερα: 7 βήματα (με εικόνες)
Upcycled Camcorder Backup Camera: Είμαι βέβαιος ότι οι περισσότεροι από εσάς που διαβάζετε αυτό έχετε ένα συρτάρι ή ένα ντουλάπι κάπου γεμάτο από κάποτε αγαπημένη τεχνολογία που μόλις έχει γίνει πολύ παλιά και ξεπερασμένη. Σίγουρα έχω το μερίδιό μου στην παλιά τεχνολογία και είναι λυπηρό να βλέπω τέτοιες δυνατότητες να χάνονται. Λοιπόν, σε αυτόν τον οδηγό, είμαι
VHS Library Pi Κάμερα ασφαλείας: 3 βήματα (με εικόνες)
Κάμερα ασφαλείας VHS Library Pi: Αυτή είναι μια παλιά θήκη Βιβλιοθήκης βίντεο VHS που παρέχει τώρα ένα τέλειο σπίτι για μια κάμερα ασφαλείας Raspberry Pi. Η θήκη περιέχει ένα Pi Zero και η κάμερα κοιτάζει προς τα έξω τη ράχη του πλαστού βιβλίου. Είναι μια πολύ απλή κατασκευή με παλιά εμφάνιση