Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Saml hardware
- Trin 2: Sørg for, at din Pi er forbundet til internettet
- Trin 3: Konfigurer kameraet
- Trin 4: Installer kolbe
- Trin 5: Opret en formklasse
- Trin 6: Opret en kolbe skabelon
- Trin 7: Gengiv skabelonen
- Trin 8: Opret en kameraoperatørklasse
- Trin 9: Opret postmodulet
- Trin 10: Start serveren
- Trin 11: PRØV DET
Video: Raspberry Pi -sikkerhedskamera: 11 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Dette er en trinvis vejledning i, hvordan du opretter et IoT, bevægelsesaktiveret sikkerhedskamera ved hjælp af en Raspberry Pi. Du lærer, hvordan du opretter en kolbe webserver og formular, der giver brugeren mulighed for at justere kameraets følsomhed og optagetid, manuelt starte/stoppe en optagelse og/eller tage et billede, der gemmes lokalt.
Forbrugsvarer
- Raspberry Pi 3
- Pi kamera
- PIR bevægelsessensor
- SD kort
- Strømkilde
Trin 1: Saml hardware
Mens Pi er slukket, skal du indsætte micro-SD-kortet i Pi. Sæt kameramodulets båndkabel i kameramodulporten på Pi. Tilslut derefter de 3 ben (mærket VCC, OUT og GND) på PRI -bevægelsesdetektoren til Pi's GPIO -ben. Tilslut VCC til 5,5 V strøm, GND til jord, og OUT til pin 11 på Pi.
Trin 2: Sørg for, at din Pi er forbundet til internettet
Tænd nu for Pi ved at slutte den til en strømkilde, og kontroller, at du har forbindelse til internettet ved hjælp af ping -kommandoen. Hvis du ikke ved, hvordan du slutter din Pi til internettet, skal du klikke her.
sudo ping www.google.com
Hvis du har succes, skal du se, at data modtages af google.
Derudover kan du bruge ifconfig til at se din IP -adresse.
sudo ifconfig
Trin 3: Konfigurer kameraet
Brug følgende kommando til at åbne konfigurationsgrænsefladen, og aktiver kameraet i "grænseflademuligheder".
sudo raspi-config
Efter genstart kan du vise status for dit kamera for at sikre, at det er korrekt tilsluttet.
vcgencmd get_camera
Til sidst skal du installere picamera -modulet.
pip installer picamera
Trin 4: Installer kolbe
Installer kolben og kolbe-afslappende modul til Python:
sudo apt-get install python-dev python-pip
python -m pip install kolbe kolbe -afslappende
Dernæst vil vi installere et python -kolbe -modul, der bruges til at oprette formularer.
pip installer kolbe-wtf
Trin 5: Opret en formklasse
Lav et bibliotek kaldet iotProject for at gemme alle dine filer i.
sudo mkdir iotProject
Opret en python -fil med navnet "camControl.py".
sudo nano camControl.py
I denne fil opretter vi vores formularklasse, som giver os mulighed for at oprette en webformular med tekstbokse og en rullemenu, så brugeren kan ændre kameraets indstillinger, manuelt starte/stoppe en optagelse og optage video.
fra flask_wtf import FlaskFormfrom wtforms.validatorer import DataRequired from wtforms import SubmitField from wtforms import validators, IntegerField, BooleanField, SelectField
klasse camFrame (FlaskForm):
videoDuration = IntegerField ('Optagelsestid (i sekunder)')
følsomhed = IntegerField ('Bevægelsesfølsomhed (område 2500-10000) n Jo højere tallet er, jo mindre følsomt er kameraet', validators = [validators. NumberRange (min = 2500, max = 10000, message = 'Value Out of Range')])
options = SelectField ('Valgmuligheder', valg = [('ingen', 'Ingen handling'), ('rec', 'Start optagelse'), ('stop', 'Stop optagelse'), ('billede', 'Tag billede')])
submit = SubmitField ('Send')
Trin 6: Opret en kolbe skabelon
For at oprette brugergrænsefladen skal du designe en kolbe -skabelon, der bruger den formular, du lige har oprettet. Denne fil vil blive skrevet i html og gemt i en mappe kaldet skabeloner, som skal være i det samme bibliotek som din formular.
Inde i din skabelonmappe skal du oprette en fil kaldet index.html. Inden for denne fil skal du replikere koden vist ovenfor.
Trin 7: Gengiv skabelonen
Nu er det tid til at oprette en fil, der gengiver skabelonen. Opret en fil med navnet appCam.py (sørg for, at du ikke længere er i skabelonmappen). Ethvert dynamisk indhold, der bruges i skabelonen, skal bruges som et navngivet argument i opkaldet til render_template ().
import camControl fra kolbe import Flask, render_template, request, Respons from flask_restful import Resource, Api, reqparse
app = kolbe (_ navn_)
app.config ['SECRET_KEY'] = '13542' api = Api (app)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Videoens varighed, når bevægelse registreres') parser.add_argument ('sens', type = int, help = 'Bevægelsesniveau, der kræves for at udløse en optagelse') parser.add_argument ('opt', type = str, help = 'Optag en video manuelt eller tag et billede')
klasseopdatering (ressource):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #skriv til tekstfilen, der taler til kameraet, der kører parallelt 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 ('/', metoder = ['GET', 'POST'])
def index (): "" "Controller startside" "" form = camControl.camFrame () #dette er en form, hvis request.method == 'POST': print (request.form) args = [i for i i anmodning.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 under cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"filnavn": "image.jpg"} return render_template ('index.html', form = form, image = imageDiction)
api.add_resource (opdatering, '/update/')
hvis _name_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
Trin 8: Opret en kameraoperatørklasse
Nu vil vi oprette en fil kaldet camOperator.py. I den vil vi lave en kameraklasse med metoder til betjening af kameraet ved hjælp af de allerede tilgængelige PiCamera -funktioner. Vi vil bruge en forekomst af dette objekt i det næste trin, hvor vi vil kombinere kameraets og bevægelsessensorens funktionalitet.
De metoder, der er defineret i denne klasse, ændrer indstillingerne for "registrering" på sikkerhedskameraet ved hjælp af følsomheds- og varighedsinput, som brugeren angiver, samtidig med at standardværdier for disse variabler etableres, hvis brugerinput ikke er til stede.
importer RPi. GPIO som GPIOimport tid importer picamera fra datetime import datetime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
opdage = 0
klasse kamera Operatør:
def _init _ (selv):
#konstruktør self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "ingen"
def record (self, dur):
#Records for den givne varighed indstillet af controlleren 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 operation (self, dur, sens):
#Hovedbetjening af kameraet, som konstant kontrollerer, om et menneske er i nærheden, hvis et menneske bliver længe nok, begynder vi at optage! global detekter i = GPIO.input (11) hvis i == 0: #Når output fra bevægelsessensor er LOW detekter = 0 time.sleep (0,1) elif i == 1: #Når output fra bevægelsessensor er HIGH print (" bevægelse registreret " +str (detekter)) hvis detekt>> sens*10: self.record (dur) print (" OPTAGET ") detekter = 0 time.sleep (0,1) detekter += 1
Trin 9: Opret postmodulet
Det sidste program, der er nødvendigt til dette projekt, vil blive skrevet i en fil med navnet rec.py. Denne fil fortæller kameraet, hvornår der skal optages, hvor lang tid der skal optages, og om/hvornår der skal tages et billede. Det gør det ved konstant at kontrollere og læse brugerdataene, der er skrevet til tekstfilen fra trin 5. Hvis filen er blevet opdateret, justeres følsomheds- og varighedsværdierne derefter, og derefter, hvis der optages eller optages et billede, gemmer det indholdet til pi, enten i et.h264 eller-j.webp
'' 'Kører parallelt med kolbserveren, læser kontrolvariabler indstillet af serverformularerne. Serverstyringsvariablerne indstilles i en separat fil, når formularerne er indsendt. Rec -modulet læser disse variabler og opdaterer kameraet baseret på dem. '' 'import camOperator fra datetime import datetime import tid
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #here, vi åbner og lukker i skrivemodus for at slette indholdet i filen, inden hovedsløjfen kører
#En kontinuerlig sløjfe, der ser for at se, om mennesker er i nærheden. Hvis de er, så
#kameraet begynder at optage. Denne funktion kører parallelt med kolben #server, der styrer dette kamera. recordingInProcess = False while True: #check/record if (recordingInProcess == False): rc.operation (rc.dur, rc.sens) #ændre kameraets indstillinger baseret på server cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 for indstilling i cameraSettingsFile.readlines (): hvis settingNum == 0: #Duration change rc.dur = int (setting) elif settingNum == 1: #Sensitivity change rc.sens = int (setting) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#udfør en handling
# hvis rc.opt == "ingen": # fortsæt hvis rc.opt == "rec / n" og recordingInProcess == Falsk: print ("Kører postkommando fra controller") #Gener navn til video baseret på aktuelt tidsvideonavn = "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" og recordingInProcess == True: print ("Stopping record command from controller") rc.cam.stop_recording () recordingInProcess = Falsk cameraSettingsFile = åben ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile. skriv ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" og recordingInProcess == Falsk: print ("Snap en pic -kommando fra controlleren") 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. write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Trin 10: Start serveren
SSH ind i pi og start serveren ved hjælp af kommandolinjen vist ovenfor.
Trin 11: PRØV DET
Få adgang til websiden ved hjælp af IP -adressen, og du bør kunne styre kameraet eksternt!
Anbefalede:
Raspberry Pi -æske med køleventilator med CPU -temperaturindikator: 10 trin (med billeder)
Raspberry Pi Box of Cooling FAN med CPU-temperaturindikator: Jeg havde introduceret hindbær pi (herefter RPI) CPU-temperaturindikator kredsløb i det forrige projekt. Kredsløbet viser simpelthen RPI 4 forskellige CPU-temperaturniveauer som følger.- Grøn LED tændt, når CPU -temperaturen er inden for 30 ~
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: 7 trin (med billeder)
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: Jeg planlægger at bruge denne Rapsberry PI i en masse sjove projekter tilbage i min blog. Tjek det gerne ud. Jeg ville tilbage til at bruge min Raspberry PI, men jeg havde ikke et tastatur eller en mus på min nye placering. Det var et stykke tid siden jeg konfigurerede en hindbær
Sådan adskilles en computer med nemme trin og billeder: 13 trin (med billeder)
Sådan adskilles en computer med nemme trin og billeder: Dette er en instruktion om, hvordan du adskiller en pc. De fleste af de grundlæggende komponenter er modulopbyggede og nemme at fjerne. Det er dog vigtigt, at du er organiseret omkring det. Dette hjælper med at forhindre dig i at miste dele og også ved at lave genmonteringen til
Ciclop 3d Scanner My Way Trin for trin: 16 trin (med billeder)
Ciclop 3d Scanner My Way Step by Step: Hej alle sammen, jeg kommer til at indse den berømte Ciclop 3D -scanner.Alle trin, der er godt forklaret på det originale projekt, er ikke til stede.Jeg lavede nogle rettelser for at forenkle processen, først Jeg udskriver basen, og end jeg genstarter printkortet, men fortsæt
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: 7 trin (med billeder)
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: Selv efter 25 års introduktion til forbrugermarkedet er infrarød kommunikation stadig meget relevant i de seneste dage. Uanset om det er dit 55 tommer 4K -fjernsyn eller dit billydsystem, har alt brug for en IR -fjernbetjening for at reagere på vores