Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Unganisha vifaa
- Hatua ya 2: Hakikisha kwamba Pi yako imeunganishwa kwenye mtandao
- Hatua ya 3: Sanidi Kamera
- Hatua ya 4: Sakinisha Flask
- Hatua ya 5: Unda Darasa la Fomu
- Hatua ya 6: Unda Kiolezo cha Flask
- Hatua ya 7: Toa Kiolezo
- Hatua ya 8: Unda Darasa la Opereta Kamera
- Hatua ya 9: Unda Moduli ya Rekodi
- Hatua ya 10: Anza Seva
- Hatua ya 11: JARIBU
Video: Kamera ya Usalama wa Raspberry Pi: Hatua 11 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Hii ni hatua kwa hatua inayofundishwa juu ya jinsi ya kuunda IoT, kamera ya usalama iliyoamilishwa kwa mwendo kwa kutumia Raspberry Pi. Utajifunza jinsi ya kuunda seva ya wavuti ya chupa na fomu ambayo inamruhusu mtumiaji kurekebisha uelewa wa kamera na wakati wa kurekodi, anza / simamisha kurekodi mwenyewe, na / au kupiga picha ambayo itahifadhiwa kwa eneo lako.
Vifaa
- Raspberry Pi 3
- Kamera ya Pi
- Sensor ya mwendo wa PIR
- Kadi ya SD
- Chanzo cha nguvu
Hatua ya 1: Unganisha vifaa
Wakati Pi imezimwa, ingiza kadi ndogo ya SD ndani ya Pi. Ingiza kebo ya kebo ya moduli ya kamera kwenye bandari ya moduli ya kamera kwenye Pi. Kisha, unganisha pini 3 (iliyoitwa VCC, OUT, na GND) ya kigundua mwendo wa PRI kwa pini za GPIO za Pi. Unganisha VCC na 5.5V ya nguvu, GND chini, na OUT kubandika 11 kwenye Pi.
Hatua ya 2: Hakikisha kwamba Pi yako imeunganishwa kwenye mtandao
Sasa washa Pi kwa kuiunganisha na chanzo cha nguvu na uhakikishe kuwa umeunganishwa kwenye mtandao ukitumia amri ya ping. Ikiwa haujui jinsi ya kuunganisha Pi yako kwenye wavuti, bonyeza hapa.
sudo ping www.google.com
Ikiwa umefanikiwa, unapaswa kuona kwamba data inapokelewa na google.
Kwa kuongeza, unaweza kutumia ifconfig kuona anwani yako ya IP.
Sudo ifconfig
Hatua ya 3: Sanidi Kamera
Tumia amri ifuatayo kufungua kiolesura cha usanidi, na uwezeshe kamera katika "chaguzi za kuingiliana".
Sudo raspi-config
Baada ya kuwasha upya, unaweza kuonyesha hali ya kamera yako kuhakikisha kuwa imeunganishwa vizuri.
vcgencmd pata_kamera
Mwishowe, weka moduli ya picha.
bomba kufunga picamera
Hatua ya 4: Sakinisha Flask
Sakinisha moduli ya kutuliza chupa na chupa kwa Python:
Sudo apt-get kufunga python-dev python-pip
python -m pip kufunga flask flask-restful
Ifuatayo, tutaweka moduli ya chupa ya chatu inayotumiwa kuunda fomu.
bomba funga chupa-wtf
Hatua ya 5: Unda Darasa la Fomu
Tengeneza saraka inayoitwa iotProject ili kuhifadhi faili zako zote katika.
Sudo mkdir iotProject
Unda faili ya chatu iitwayo "camControl.py".
Sudo nano camControl.py
Katika faili hii tutaunda darasa letu la fomu, ambayo inaruhusu sisi kuunda fomu ya wavuti na masanduku ya maandishi na menyu ya kushuka kwa mtumiaji kuweza kubadilisha mipangilio ya kamera, kuanza / kuacha kurekodi kwa mikono, na kunasa video.
kutoka kwa flask_wtf kuagiza FlaskFormfrom wtforms.validators kuagiza Data Inahitajika kutoka wtforms kuagiza SubmitField kutoka wtforms kuagiza vibali, IntegerField, BooleanField, SelectField
darasa camFrame (FlaskForm):
videoDuration = IntegerField ('Saa ya Kurekodi (kwa sekunde)')
unyeti = IntegerField ('unyeti wa mwendo (masafa 2500-10000) nKuongezeka kwa nambari, kamera ni nyeti zaidi', idhibitisho = [vibali. IdadiRange (min = 2500, max = 10000, ujumbe = 'Thamani Kati ya Kiwango')])
chaguzi = SelectField ('Chaguzi', chaguzi = [('hakuna', 'Hakuna kitendo'), ('rec', 'Anza Kurekodi'), ('stop', 'Stop Recording'), ('pic', 'Piga Picha'])
wasilisha = Tuma shamba ('Wasilisha')
Hatua ya 6: Unda Kiolezo cha Flask
Ili kuunda kiolesura cha mtumiaji, lazima ubuni templeti ya Flask ambayo hutumia fomu ambayo umetengeneza tu. Faili hii itaandikwa katika html, na kuhifadhiwa kwenye folda inayoitwa templeti, ambayo inapaswa kuwa kwenye saraka sawa na fomu yako.
Ndani ya folda yako ya templeti, tengeneza faili inayoitwa index.html. Ndani ya faili hii, nukuu nambari iliyoonyeshwa hapo juu.
Hatua ya 7: Toa Kiolezo
Sasa ni wakati wa kuunda faili ambayo inatoa templeti. Unda faili inayoitwa appCam.py (hakikisha hauko tena kwenye folda ya templeti). Yaliyomo ya nguvu inayotumika kwenye templeti lazima itumiwe kama hoja iliyoitwa katika simu ya render_template ().
kuagiza camControlfrom chupa kuagiza Flask, render_template, ombi, Jibu kutoka Flask_restful import Resource, Api, reparparse
programu = chupa (_ jina_)
app.config ['SECRET_KEY'] = '13542' api = Api (programu)
mshauri = reqparse. RequestParser ()
mjadala.add_argument ('dur', type = int, help = 'Duration of video when movement is detected').add_argument ('opt', type = str, help = 'Rekodi mikono video au nasa picha')
Sasisho la darasa (Rasilimali):
#Vitu vya wtforms def post (self): args = parser.parse_args () # rc.input (args ['dur'], args ['sens'], args ['opt']) # andika kwa faili ya maandishi ambayo inazungumza na kamera inayoendesha kamera sambamba + '\ n') #andika kamera ya hisiaSettingsFile.write (args ['opt'] + '\ n') #andika kamera ya kuchaguaSettingsFile.close () rudisha {'dur': args ['dur'], 'sens': args ['akili'], 'opt': args ['opt']}
@ app.route ('/', methods = ['GET', 'POST'])
def index (): "" "Mdhibiti ukurasa wa nyumbani" "" form = camControl.camFrame () #hii ni fomu ikiwa ombi.method == 'POST': chapa (form.form) args = [i for i in request.form.items ()] # rc.input (int (args [0] [1]), int (args [1] [1]), args [2] [1]) cameraSettingsFile = wazi ("cameraSettings.txt ", 'w') cameraSettingsFile.write (args [0] [1] + '\ n') #andika camera dur cameraSettingsFile.write (args [1] [1] + '\ n') #andika camera cameraSettingsFile.write (args [2] [1] + '\ n') # andika chagua kameraSettingsFile.close () imageDictionary = {"filename": "image.jpg"} Return render_template ('index.html', form = form, image = imageDictionary)
api.add_resource (Sasisha, '/ update /')
ikiwa _name_ == '_main_':
app.run (host = '0.0.0.0', bandari = 80, debug = Kweli, imefungwa = Kweli)
Hatua ya 8: Unda Darasa la Opereta Kamera
Sasa tunataka kuunda faili inayoitwa camOperator.py. Ndani yake tutatengeneza darasa la kamera na njia za kutumia kamera, tukitumia kazi za PiCamera zilizopo tayari. Tutatumia mfano wa kitu hiki katika hatua inayofuata ambapo tutachanganya utendaji wa kamera na sensorer ya mwendo.
Mbinu zilizoainishwa katika darasa hili hubadilisha mipangilio ya "rekodi" kwenye kamera ya usalama kwa kutumia uelewa na pembejeo za muda ambazo mtumiaji hutoa, wakati wa kuweka maadili chaguo-msingi kwa vigeuzi hivi ikiwa pembejeo ya mtumiaji haipo.
kuagiza RPi. GPIO kama GPIOingiza wakati wa kuagiza picha kutoka wakati wa kuingiza wakati wa kuingilia
GPIO.setmode (GPIO. BOARD)
Usanidi wa GPIO (11, GPIO. IN)
gundua = 0
kamera ya darasaOperator:
def _init _ (binafsi):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "hakuna"
rekodi rekodi (binafsi, dur):
#Rekodi za muda uliopewa uliowekwa na mtawala videoName = str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') Self.cam.art_recording ('/ nyumbani / pi / iotProject / video /' + videoName + '.h264') wakati. kulala (dur) self.cam.stop_recording ()
operesheni ya def (binafsi, dur, sens):
Utendaji kuu wa kamera ambayo huangalia kila wakati ikiwa mwanadamu yuko karibu, ikiwa mwanadamu anakaa karibu kwa muda wa kutosha, tunaanza kurekodi! gundua ulimwengu i = GPIO.input (11) ikiwa i == 0: #Wakati pato kutoka kwa sensorer ya mwendo ni chini Gundua = saa 0. mwendo umegunduliwa "+ str (gundua)) ikiwa hugundua> = sens * 10: self.record (dur) chapa (" REKODI ") gundua = saa 0. lala (0.1) gundua + = 1
Hatua ya 9: Unda Moduli ya Rekodi
Programu ya mwisho inayohitajika kwa mradi huu itaandikwa katika faili iliyoitwa rec.py. Faili hii inaambia kamera wakati wa kurekodi, ni muda gani wa kurekodi, na ikiwa / wakati wa kuchukua picha. Inafanya hivyo kwa kuangalia kila wakati na kusoma data ya mtumiaji iliyoandikwa kwa faili ya maandishi kutoka hatua ya 5. Ikiwa faili imesasishwa inabadilisha uelewa na viwango vya muda ipasavyo na kisha, ikiwa kurekodi au picha imechukuliwa, inahifadhi yaliyomo kwenye pi, iwe katika muundo wa faili ya.h264 au.jpg.
Inakimbia sambamba na seva ya chupa, kusoma vigezo vya kudhibiti vilivyowekwa na fomu za seva. Vigezo vya kudhibiti seva vimewekwa katika faili tofauti mara tu fomu zitakapowasilishwa. Moduli ya rec inasoma vigeuzi hivi na inasasisha kamera kulingana na hizo. kuagiza camOperator kutoka wakati wa kuingiza wakati wa kuingiza wakati wa kuingiza
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #hapa, tunafungua na kufunga katika hali ya uandishi ili kufuta yaliyomo ndani ya faili kabla ya kitanzi kuu kuanza
Kitanzi kinachoendelea kinachoangalia ikiwa wanadamu wako karibu. Ikiwa ni hivyo, basi
# kamera inaanza kurekodi. Kazi hii inaendeshwa kwa paralell na chupa ya #sava inayodhibiti kamera hii. recordingInProcess = Uongo wakati ni Kweli: # angalia / rekodi ikiwa (recordingInProcess == False): rc.operation (rc.dur, rc.sens) #badilisha mipangilio ya kamera kulingana na server cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 ya kuweka kwenye cameraSettingsFile.readlines (): ikiwa kuwekaNum == 0: #Duration change rc.dur = int (setting) elif settingNum == 1: #Sensitivity change rc.sens = int (setting (mpangilio wa elifNum == 2: #Ubadilishaji wa shughuli rc.opt = kuweka mipangilioNum + = 1 kameraSettingsFile.close ()
#fanya tendo
# ikiwa rc.opt == "hakuna": # endelea ikiwa rc.opt == "rec / n" na kurekodiInProcess == Uwongo: chapa ("Running record command from controller") #Zalisha jina la video kulingana na videoName ya wakati wa sasa = "snappedVid _" + str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/ home / pi / iotProject / video / '+ videoName +'.h264 ') recordingInProcess = True elif rc.opt == "stop / n" na recordingInProcess == True: chapa ("Kusimamisha rekodi ya amri kutoka kwa mdhibiti") rc.cam.stop_recording () recordingInProcess = Kamera ya UongoSettingsFile = wazi ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.ens) + '\ n') cameraSettingsFile. andika ("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 art_preview () muda.kulala (5) rc.cam.capture ('picha /' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile. andika (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.ens) + '\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Hatua ya 10: Anza Seva
SSH ndani ya pi na anza seva ukitumia laini ya amri iliyoonyeshwa hapo juu.
Hatua ya 11: JARIBU
Fikia ukurasa wa wavuti ukitumia anwani ya IP na unapaswa kudhibiti kamera kwa mbali!
Ilipendekeza:
Kitufe cha Usalama kisichotumia waya kwa Usalama wa PLC: Hatua 6 (na Picha)
Kitufe cha Usalama kisichotumia waya kwa Usalama wa PLC: Mradi huu ni uthibitisho wangu wa dhana ya kutumia IoT na (mwishowe) roboti kuunda safu ya ziada ya usalama kwa vifaa hatari vya utengenezaji. Kitufe hiki kinaweza kutumika kuanza au kuacha michakato mingi, pamoja na udhibiti wa ishara
Mfumo mmoja wa Usalama wa Usalama wa Wanawake: Hatua 3
Mfumo mmoja wa Usalama wa Wanawake wa Kugusa: Moja ya kengele ya kugusa Mfumo wa usalama wa Wanawake ukitumia mtawala mdogo wa 8051Katika Usalama wa Wanawake Ulimwenguni Leo ni Suala Muhimu Zaidi Katika Nchi. Leo Wanawake Wanasumbuliwa Na Kusumbuka Na Wakati Mwingine Wakati Msaada Wa Haraka Unahitajika. Hakuna Lugha Inayohitajika
Jinsi ya kutengeneza Mfumo wa Usalama wa Mwendo wa Usalama wa PIR: Hatua 3
Jinsi ya kutengeneza Mfumo wa Usalama wa Mwendo wa Usalama wa PIR: Katika video hii tutafanya mfumo wa usalama ambao hugundua mwendo na unazungumza. Katika mradi huu sensorer ya PIR hugundua mwendo na moduli ya MP3 ya DFPlayer Mini hucheza sauti iliyofafanuliwa hapo awali
Usalama wa Usalama wa Python / Programu ya Kusimbua: 3 Hatua
Usalama wa Usalama wa Python / Programu ya Usimbuaji: Katika Maagizo haya nitakuonyesha jinsi na chatu rahisi, unaweza kuweka faili zako salama ukitumia kiwango cha tasnia cha AES. Mahitaji: - Python 3.7 - PyAesCrypt maktaba- maktaba ya hashlib Ikiwa hauna maktaba haya, wewe inaweza kusanikisha kwa urahisi na
Mfumo mmoja wa USALAMA WA USALAMA WA kugusa One: Hatua 5
Mfumo wa USALAMA WA WANAWAKE Mguso mmoja: Katika Usalama wa Wanawake Ulimwenguni Leo ni Suala Muhimu Zaidi Katika Nchi. Leo Wanawake Wanasumbuliwa Na Kusumbuka Na Wakati Mwingine Wakati Msaada Wa Haraka Unahitajika. Hakuna Mahali Mahitajika Kama Wanawake Ili Watu waweze Kusaidia, umuhimu wake kwamba sisi