Բովանդակություն:
- Պարագաներ
- Քայլ 1: Հավաքեք սարքավորումները
- Քայլ 2: Համոզվեք, որ ձեր Pi- ն միացված է ինտերնետին
- Քայլ 3: Կարգավորեք տեսախցիկը
- Քայլ 4: Տեղադրեք Flask
- Քայլ 5: Ստեղծեք ձևի դաս
- Քայլ 6: Ստեղծեք շշերի ձևանմուշ
- Քայլ 7: Կաղապարը մատուցիր
- Քայլ 8: Ստեղծեք տեսախցիկի օպերատորի դաս
- Քայլ 9: Ստեղծեք ձայնագրման մոդուլ
- Քայլ 10: Սկսեք սերվերը
- Քայլ 11: ՓՈՐՁԵՔ
Video: Raspberry Pi անվտանգության տեսախցիկ ՝ 11 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Սա քայլ առ քայլ հրահանգելի է, թե ինչպես կարելի է ստեղծել IoT, շարժումով ակտիվացված անվտանգության տեսախցիկ ՝ օգտագործելով Raspberry Pi- ն: Դուք կսովորեք, թե ինչպես ստեղծել ֆոլսկի վեբ սերվեր և ձև, որը թույլ կտա օգտվողին կարգավորել տեսախցիկի զգայունությունն ու ձայնագրման ժամանակը, ձեռքով սկսել/դադարեցնել ձայնագրությունը և/կամ լուսանկարել, որը կպահվի տեղում:
Պարագաներ
- Ազնվամորի Պի 3
- Pi տեսախցիկ
- PIR շարժման ցուցիչ
- SD քարտ
- Սնուցման աղբյուր
Քայլ 1: Հավաքեք սարքավորումները
Մինչ Pi- ն անջատված է, տեղադրեք micro-SD քարտը Pi- ի մեջ: Տեղադրեք ֆոտոխցիկի մոդուլի ժապավենը Pi- ի խցիկի մոդուլի պորտի մեջ: Այնուհետև, PRI շարժման դետեկտորի 3 կապում (պիտակավորված VCC, OUT և GND) միացրեք Pi- ի GPIO կապումներին: Միացրեք VCC- ն 5.5 Վ հզորության, GND- ը `գետնին, իսկ OUT- ը` Pi- ի 11 -ի կապակցիչին:
Քայլ 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 տեղադրեք python-dev python-pip
python -m pip install flask flask -restful
Հաջորդը, մենք կտեղադրենք python flask մոդուլ, որն օգտագործվում է ձևեր ստեղծելու համար:
pip տեղադրել flask-wtf
Քայլ 5: Ստեղծեք ձևի դաս
Ստեղծեք տեղեկատու iotProject անունով ՝ ձեր բոլոր ֆայլերը պահելու համար:
sudo mkdir iot Նախագիծ
Ստեղծեք «camControl.py» անունով պիթոնի ֆայլ:
sudo nano camControl.py
Այս ֆայլում մենք կստեղծենք մեր ձևի դասը, որը թույլ է տալիս մեզ ստեղծել վեբ ձև տեքստային տուփերով և բացվող ընտրացանկով, որպեսզի օգտվողը կարողանա փոխել տեսախցիկի կարգավորումները, ձեռքով սկսել/դադարեցնել ձայնագրությունը և նկարահանել տեսանյութ:
flask_wtf ներմուծումից FlaskFormfrom wtforms.validators- ից ներմուծում են տվյալները Պահանջվում է wtforms ներմուծումից SubmitField wtforms- ից ներմուծման վավերացուցիչներ, IntegerField, BooleanField, SelectField
class camFrame (FlaskForm):
videoDuration = IntegerField («Գրանցման ժամանակը (վայրկյաններով)»)
զգայունություն = IntegerField ('Շարժման զգայունություն (միջակայք 2500-10000) n Որքան մեծ է թիվը, այնքան զգայուն է տեսախցիկը', վավերացուցիչներ = [validators. NumberRange (min = 2500, max = 10000, հաղորդագրություն = 'Արժեքը սահմաններից դուրս')])
ընտրանքներ = SelectField («Ընտրանքներ», ընտրություններ = [(«ոչ», «Ոչ մի գործողություն»), («rec», «Սկսել ձայնագրումը»), («դադարեցնել», «դադարեցնել ձայնագրությունը»), ('նկար', 'Լուսանկարել')])
ներկայացնել = SubmitField ('Ներկայացնել')
Քայլ 6: Ստեղծեք շշերի ձևանմուշ
Օգտվողի միջերես ստեղծելու համար դուք պետք է ձևավորեք Ֆլասկի ձևանմուշ, որն օգտագործում է ձեր ստեղծած ձևը: Այս ֆայլը կգրվի html- ով և կպահվի ձևանմուշ կոչվող թղթապանակում, որը պետք է լինի ձեր ձևի նույն գրացուցակում:
Ձեր ձևանմուշների թղթապանակի ներսում ստեղծեք ֆայլ, որը կոչվում է index.html: Այս ֆայլի ներսում կրկնօրինակեք վերը նշված ծածկագիրը:
Քայլ 7: Կաղապարը մատուցիր
Այժմ ժամանակն է ստեղծել ֆայլ, որը մատուցում է ձևանմուշը: Ստեղծեք appCam.py անունով ֆայլ (համոզվեք, որ այլևս կաղապարների թղթապանակում չեք): Կաղապարում օգտագործվող ցանկացած դինամիկ բովանդակություն պետք է օգտագործվի որպես անվանված արգումենտ render_template () կոչում:
ներմուծել camControlfromb- ից ներմուծել շիշ, մատուցել_մոդել, հարցում, արձագանք flask_restful import Resource- ից, Api, reqparse
հավելված = Ֆլասկ (_ անուն _)
app.config ['SECRET_KEY'] = '13542' api = Api (հավելված)
վերլուծիչ = 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']) #գրել տեքստային ֆայլին, որը խոսում է զուգահեռ cameraSettingsFile = բաց տեսախցիկի հետ + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@app.route ('/', մեթոդներ = ['GET', 'POST'])
def index ()..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') #գրել dur cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #գրել opt cameraSettingsFile.close () imageDictionary = {"filename": "image.jpg"} վերադարձնել render_template ('index.html', form = form, image = imageDictionary)
api.add_resource (Թարմացնել, '/թարմացնել/')
եթե _name_ == '_ հիմնական_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
Քայլ 8: Ստեղծեք տեսախցիկի օպերատորի դաս
Այժմ մենք ցանկանում ենք ստեղծել մի ֆայլ, որը կոչվում է camOperator.py: Դրանում մենք կդարձնենք տեսախցիկի դասարան `տեսախցիկը գործելու մեթոդներով` օգտագործելով արդեն հասանելի PiCamera գործառույթները: Հաջորդ քայլում մենք կօգտագործենք այս օբյեկտի օրինակ, որտեղ մենք կհամատեղենք տեսախցիկի և շարժման տվիչի ֆունկցիոնալությունը:
Այս դասում սահմանված մեթոդները փոխում են անվտանգության տեսախցիկի «ձայնագրման» կարգավորումները ՝ օգտվողի տրամադրած զգայունության և տևողության մուտքերի միջոցով ՝ միաժամանակ սահմանելով այս փոփոխականների կանխադրված արժեքները, եթե օգտագործողի մուտքը չկա:
ներմուծել RPi. GPIO- ն որպես GPIOimport time ներմուծել picamera datetime- ից data importetetetime
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: #Երբ շարժման սենսորից ելքը OWԱՐ է հայտնաբերում = 0 անգամ: քուն (0.1) elif i == 1: #Երբ շարժման տվիչից ելքը Բարձր տպագիր է (" շարժումը հայտնաբերված է " +str (հայտնաբերել)) եթե հայտնաբերել> = sens*10: self.record (dur) print (" RECORDED ") detect = 0 time.sleep (0.1) detective += 1
Քայլ 9: Ստեղծեք ձայնագրման մոդուլ
Այս ծրագրի համար անհրաժեշտ վերջին ծրագիրը գրված կլինի rec.py անունով ֆայլում: Այս ֆայլը տեսախցիկին պատմում է, թե երբ պետք է նկարահանել, որքան ժամանակ ձայնագրել և եթե/երբ նկարել: Դա անում է ՝ անընդհատ ստուգելով և կարդալով տեքստային ֆայլում գրված օգտվողի տվյալները 5 -րդ քայլից: pi- ն ՝.h264 կամ-j.webp
'' 'Գործում է կոլբայի սերվերին զուգահեռ `կարդալով սերվերի ձևերով սահմանված հսկողության փոփոխականները: Սերվերի կառավարման փոփոխականները ձևերը ներկայացնելուց հետո տեղադրվում են առանձին ֆայլում: Rec մոդուլը կարդում է այս փոփոխականները և դրանց հիման վրա թարմացնում տեսախցիկը: '' 'camOperator ներմուծել datetime ներմուծման datetime ներմուծման ժամանակ
rc = camOperator.cameraOperator ()
cameraSettingsFile = բաց ("cameraSettings.txt", 'w') cameraSettingsFile.close () #այստեղ, մենք բացում և փակում ենք գրելու ռեժիմում, որպեսզի ֆայլը պարունակող բովանդակությունը ջնջվի մինչև հիմնական օղակի գործարկումը
#Շարունակական հանգույց, որը հետևում է ՝ արդյոք մարդիկ մոտակայքում են: Եթե նրանք են, ապա
#տեսախցիկը սկսում է ձայնագրվել: Այս գործառույթը միաժամանակ աշխատում է #խցիկի սերվերի միջոցով, որը վերահսկում է այս տեսախցիկը: recordingInProcess = False while True: #check/record if (recordingInProcess == False): rc.operation (rc.dur, rc.sens) #փոխել տեսախցիկի կարգավորումները ՝ հիմնված սերվերի cameraSettingsFile = բաց ("cameraSettings.txt", 'r') settingNum = 0 cameraSettingsFile.readlines (). if settingNum == 0: #Duration change rc.dur = int (setting) elif settingNum == 1: #ensգայունության փոփոխություն rc.sens = int (պարամետր) elif settingNum == 2: #Գործողության փոփոխություն rc.opt = կարգավորումը settingNum += 1 ֆոտոխցիկ
#կատարել գործողություն
# if rc.opt == "none": # շարունակել, եթե rc.opt == "rec / n" և recordingInProcess == Սխալ. տպել («Գործարկվում է վերահսկիչից ձայնագրության հրամանը») # Ստեղծել տեսանյութի անուն ՝ ներկայիս ժամանակի տեսանյութի անունով = "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 ("Stop control record from controller") rc.cam.stop_recording () recordingInProcess = Կեղծ cameraSettingsFile = բաց ("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 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 տեսանյութ, երբ շարժում է նկատվում: Միևնույն ժամանակ նրա
PLC անվտանգության համար անլար անվտանգության կոճակ. 6 քայլ (նկարներով)
PLC- ի անվտանգության համար անլար անվտանգության կոճակ. Այս նախագիծը IoT և (ի վերջո) ռոբոտաշինության օգտագործման հայեցակարգի իմ ապացույցն է `վտանգավոր արտադրական օբյեկտների անվտանգության լրացուցիչ շերտ ստեղծելու համար: Այս կոճակը կարող է օգտագործվել բազմաթիվ գործընթացներ սկսելու կամ դադարեցնելու համար, ներառյալ ազդանշանի վերահսկումը
DIY պրոֆեսիոնալ բաց կոդով գիշերային տեսողության անվտանգության տեսախցիկ ՝ 10 քայլ (նկարներով)
DIY պրոֆեսիոնալ բաց կոդով գիշերային տեսողության անվտանգության տեսախցիկ. Այս նոր ձեռնարկում մենք միասին պատրաստելու ենք մեր Raspberry Pi բաց կոդով տեսահսկման տեսախցիկը: Այո, մենք այստեղ խոսում ենք բացօթյա հսկողության իրական տեսախցիկի մասին, որը կարող է գիշերային տեսողություն և շարժում հայտնաբերել, բոլորը կապված են մեր Jeed- ի հետ
WoodThing IOT անվտանգության տեսախցիկ ՝ 8 քայլ (նկարներով)
WoodThing IOT անվտանգության տեսախցիկ. Սա հզոր IP տեսախցիկ է, որը հիմնված է Raspberry PI- ի վրա: Այն աշխատում է motionEyeOS- ով, այնպես որ կարող է օգտագործվել մի քանի հեռավոր IP տեսախցիկներ կառավարելու համար, ինչպես նաև թույլ է տալիս կցել մինչև չորս լրացուցիչ ցածրարժեք USB վեբ տեսախցիկներ: Առանձնահատկություններ ՝ USB- ով աշխատող, շարժման զգացողություն
VHS Library Pi անվտանգության տեսախցիկ ՝ 3 քայլ (նկարներով)
VHS Library Pi անվտանգության տեսախցիկ. Սա հին VHS վիդեո գրադարանի պատյան է, որն այժմ կատարյալ տուն է ապահովում Raspberry Pi անվտանգության տեսախցիկի համար: Գործը պարունակում է Pi Zero և տեսախցիկը դուրս է նայում կեղծ գրքի ողնաշարի միջով: Դա իսկապես պարզ կառուցվածք է ՝ հին աշխարհի տեսքով