INHOUDSOPGAWE:
- Voorrade
- Stap 1: Monteer die hardeware
- Stap 2: Maak seker dat u Pi aan die internet gekoppel is
- Stap 3: Stel die kamera op
- Stap 4: Installeer Flask
- Stap 5: Skep 'n vormklas
- Stap 6: Skep 'n flessjabloon
- Stap 7: Gee die sjabloon weer
- Stap 8: Skep 'n kamera -operateursklas
- Stap 9: Skep die rekordmodule
- Stap 10: Begin die bediener
- Stap 11: PROBEER DIT
Video: Raspberry Pi -beveiligingskamera: 11 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Dit is 'n stap -vir -stap instruksie hoe u 'n IoT -bewegingskamera kan maak met 'n Raspberry Pi. U leer hoe om 'n kolfwebbediener en 'n vorm te skep waarmee die gebruiker die sensitiwiteit en opnametyd van die kamera kan aanpas, 'n opname met die hand kan begin/stop en/of 'n foto kan neem wat plaaslik gestoor sal word.
Voorrade
- Framboos Pi 3
- Pi kamera
- PIR bewegingsensor
- SD kaart
- Kragbron
Stap 1: Monteer die hardeware
Terwyl die Pi uitgeskakel is, plaas die mikro-SD-kaart in die Pi. Steek die lintkabel van die kameramodule in die poort van die kameramodule op die Pi. Koppel dan die 3 penne (gemerk VCC, OUT en GND) van die PRI -bewegingsmelder aan die Pi se GPIO -penne. Koppel die VCC aan 5.5V krag, die GND aan die aarde en die OUT aan pen 11 op die Pi.
Stap 2: Maak seker dat u Pi aan die internet gekoppel is
Skakel die Pi nou aan deur dit aan 'n kragbron te koppel en verifieer dat u met die internet gekoppel is met die ping -opdrag. As u nie weet hoe u u Pi aan die internet kan koppel nie, klik dan hier.
sudo ping www.google.com
As u suksesvol is, moet u sien dat data deur Google ontvang word.
Boonop kan u ifconfig gebruik om u IP -adres te sien.
sudo ifconfig
Stap 3: Stel die kamera op
Gebruik die volgende opdrag om die konfigurasie -koppelvlak oop te maak en aktiveer die kamera in die "koppelvlakopsies".
sudo raspi-config
Nadat u weer begin het, kan u die status van u kamera vertoon om te verseker dat dit behoorlik verbind is.
vcgencmd get_camera
Laastens, installeer die picamera -module.
pip installeer picamera
Stap 4: Installeer Flask
Installeer die fles en kolf-rustige module vir Python:
sudo apt-get installeer python-dev python-pip
python -m pip installeer flesfles -rustig
Vervolgens installeer ons 'n luislangflesmodule wat gebruik word om vorms te skep.
pip installeer flask-wtf
Stap 5: Skep 'n vormklas
Maak 'n gids genaamd iotProject om al u lêers in te stoor.
sudo mkdir iotProject
Skep 'n python -lêer met die naam "camControl.py".
sudo nano camControl.py
In hierdie lêer sal ons ons vormklas skep, waarmee ons 'n webvorm met teksblokkies en 'n keuselys kan skep sodat die gebruiker die kamera se instellings kan verander, 'n opname met die hand kan begin/stop en video kan opneem.
vanaf flask_wtf invoer FlaskFormvan wtforms.validators invoer DataVereis van wtforms invoer SubmitField van wtforms invoer validators, IntegerField, BooleanField, SelectField
klas camFrame (FlaskForm):
videoDuration = IntegerField ('Opname tyd (in sekondes)')
sensitiwiteit = IntegerField ('Bewegingsgevoeligheid (reeks 2500-10000) n Hoe hoër die getal, hoe minder sensitief is die kamera', validators = [validators. NumberRange (min = 2500, max = 10000, message = 'Waarde buite bereik')])
options = SelectField ('Options', options = [('none', 'No action'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('pic', 'Take Picture')])
submit = SubmitField ('Submit')
Stap 6: Skep 'n flessjabloon
Om die gebruikerskoppelvlak te skep, moet u 'n Flask -sjabloon ontwerp wat die vorm gebruik wat u pas geskep het. Hierdie lêer word in html geskryf en gestoor in 'n gids genaamd templates, wat in dieselfde gids as u vorm moet wees.
Skep 'n lêer genaamd index.html in u sjabloonmap. In hierdie lêer, herhaal die kode hierbo.
Stap 7: Gee die sjabloon weer
Dit is nou tyd om 'n lêer te skep wat die sjabloon weergee. Skep 'n lêer met die naam appCam.py (maak seker dat u nie meer in die sjabloonmap is nie). Enige dinamiese inhoud wat in die sjabloon gebruik word, moet as 'n genoemde argument in die oproep na render_template () gebruik word.
invoer camControl van fles invoer fles, render_template, versoek, reaksie van flask_restful invoerhulpbron, Api, reqparse
app = Fles (_ naam_)
app.config ['SECRET_KEY'] = '13542' api = Api (app)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Duur van video wanneer beweging opgespoor word') parser.add_argument ('sens', type = int, help = 'Bewegingsvlak benodig om 'n opname te aktiveer') parser.add_argument ('opt', type = str, help = 'Neem 'n video handmatig op of maak 'n beeld')
klasopdatering (hulpbron):
#Stuff vir wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #skryf na die tekslêer wat praat met die kamera wat parallel loop 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 ('/', metodes = ['KRY', 'POST'])
def index (): "" "Controller home page" "" form = camControl.camFrame () #dit is 'n vorm as request.method == 'POST': print (request.form) args = [i vir i in aanvraag.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') #skryf tydens cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"lêernaam": "image.jpg"} gee render_template ('index.html', form = form, image = imageDictionary terug)
api.add_resource (opdatering, '/update/')
as _naam_ == '_hoof_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
Stap 8: Skep 'n kamera -operateursklas
Nou wil ons 'n lêer met die naam camOperator.py skep. Hierin maak ons 'n kameraklas met metodes om die kamera te gebruik, met behulp van die reeds beskikbare PiCamera -funksies. Ons sal in die volgende stap 'n voorbeeld van hierdie voorwerp gebruik, waar ons die funksionaliteit van die kamera en die bewegingsensor sal kombineer.
Die metodes wat in hierdie klas gedefinieer word, verander die "rekord" -instellings op die beveiligingskamera deur gebruik te maak van die sensitiwiteits- en tydsinsette wat die gebruiker verskaf, terwyl standaardwaardes vir hierdie veranderlikes vasgestel word as daar geen gebruikersinvoer is nie.
invoer RPi. GPIO as GPIOimport tyd invoer picamera vanaf datetime invoer datetime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
opspoor = 0
klas kamera Operateur:
def _init _ (self):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "geen"
def -rekord (self, dur):
#Records vir die gegewe tydsduur wat deur die beheerder gestel word 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 operasie (self, dur, sens):
#Die hoofbediening van die kamera wat voortdurend kyk of 'n mens naby is, as 'n mens lank genoeg bly, begin ons opneem! globale opsporing i = GPIO.input (11) as i == 0: #As die uitset van die bewegingsensor LAAG is, detect = 0 time.sleep (0.1) elif i == 1: #Wanneer die uitset van die bewegingsensor HOGE druk is (" beweging opgespoor " +str (detect)) as detect> = sens*10: self.record (dur) print (" RECORDED ") detect = 0 time.sleep (0.1) detect += 1
Stap 9: Skep die rekordmodule
Die laaste program wat vir hierdie projek benodig word, sal in 'n lêer genaamd rec.py geskryf word. Hierdie lêer vertel die kamera wanneer om op te neem, hoe lank om op te neem en of/wanneer om 'n foto te neem. Dit word gedoen deur die gebruikersdata wat in stap 5 na die tekslêer geskryf is, voortdurend te kontroleer en te lees. As die lêer opgedateer is, pas dit die sensitiwiteits- en duurwaardes daarvolgens aan, en as dit 'n opname of 'n foto neem, word die inhoud gestoor die pi, óf in 'n.h264- as-j.webp
'' 'Loop parallel met die kolfbediener en lees kontrolevariabels wat deur die bedienervorme gestel word. Die bedienerbeheerveranderlikes word in 'n aparte lêer opgestel sodra die vorms ingedien is. Die opnamemodule lees hierdie veranderlikes en werk die kamera op grond daarvan op. '' 'invoer camOperator vanaf datatyd invoer datatyd invoer tyd
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #hier, ons maak en sluit in die skryfmodus om die inhoud in die lêer te verwyder voordat die hooflus loop
#'N Deurlopende lus wat kyk of mense naby is. As hulle is, dan
#die kamera begin opneem. Hierdie funksie werk parallel met die fles #server wat hierdie kamera beheer. recordingInProcess = Onwaar terwyl dit waar is: #check/record if (recordingInProcess == False): rc.operation (rc.dur, rc.sens) #verander die instellings van die kamera op grond van die bediener cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 vir instelling in cameraSettingsFile.readlines (): as settingNum == 0: #Durasieverandering rc.dur = int (setting) elif settingNum == 1: #Gevoeligheidsverandering rc.sens = int (setting) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#voer 'n aksie uit
# as rc.opt == "geen": # gaan voort as rc.opt == "rec / n" en recordingInProcess == Onwaar: druk ("Rekordopdrag vanaf beheerder uitvoer") # Genereer naam vir video gebaseer op huidige tyd videonaam = "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" en recordingInProcess == True: print ("Stop opname bevel van kontroleerder") rc.cam.stop_recording () recordingInProcess = Valse cameraSettingsFile = oop ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile. skryf ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" en recordingInProcess == Onwaar: druk ("Snap 'n opdrag van die beheerder") 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. skryf (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("geen / n") rc.opt = "geen / n"
Stap 10: Begin die bediener
SSH in die pi en begin die bediener met behulp van die opdragreël hierbo.
Stap 11: PROBEER DIT
Toegang tot die webblad met behulp van die IP -adres, en u moet die kamera op afstand kan beheer!
Aanbeveel:
Raspberry Pi -boks met koelventilator met CPU -temperatuuraanwyser: 10 stappe (met foto's)
Raspberry Pi Box of Cooling FAN Met CPU Temperature Indicator: Ek het framboos pi (Hierna as RPI) CPU temperatuur aanwyser stroombaan in die vorige projek bekendgestel. Die kring wys eenvoudig RPI 4 verskillende CPU temperatuur vlakke soos volg.- Groen LED aangeskakel wanneer CPU temperatuur is binne 30 ~
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: 7 stappe (met foto's)
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: ek is van plan om hierdie Rapsberry PI te gebruik in 'n klomp prettige projekte in my blog. Kyk gerus daarna. Ek wou weer my Raspberry PI gebruik, maar ek het nie 'n sleutelbord of muis op my nuwe plek gehad nie. Dit was 'n rukkie sedert ek 'n Framboos opgestel het
Wifi -beheerde 12v Led Strip met Raspberry Pi Met Tasker, Ifttt -integrasie: 15 stappe (met foto's)
Wifi -beheerde 12v Led Strip met Raspberry Pi Met Tasker, Ifttt Integration .: In hierdie projek sal ek jou wys hoe om 'n eenvoudige 12v analoge led strip oor wifi te beheer met 'n framboos pi. Vir hierdie projek benodig jy: 1x Raspberry Pi (I gebruik 'n Raspberry Pi 1 Model B+) 1x RGB 12v Le
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer