Բովանդակություն:
- Քայլ 1: PIR շարժման ցուցիչ
- Քայլ 2: PIR շարժման տվիչի կարգավորում
- Քայլ 3: Raspberry Pi Camera մոդուլ և կարգավորում
- Քայլ 4. Միացրեք PIR շարժման ցուցիչն ու տեսախցիկի մոդուլը
- Քայլ 5: Կարգավորեք Ֆլասկի համար
- Քայլ 6: Արդյունք
Video: Raspberry Pi Human Detector + Camera + Flask: 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Այս ձեռնարկում ես կանցնեմ իմ Raspberry Pi IoT նախագծի քայլերով ՝ օգտագործելով PIR շարժման տվիչ, Raspberry Camera մոդուլ ՝ պարզ անվտանգության IoT սարք կառուցելու համար և Ֆլասկով մուտք գործելով հայտնաբերման մատյան:
Քայլ 1: PIR շարժման ցուցիչ
PIR- ը նշանակում է «Պասիվ ինֆրակարմիր», և այս շարժման ցուցիչը շարժումներ է կատարում ՝ դիտելով ինֆրակարմիր տեսքը և հավաքելով ինֆրակարմիր փոփոխությունները: Հետևաբար, երբ տերևը և մարդը անցնում են սենսորով, այն միայն հայտնաբերում է մարդուն, քանի որ մենք ՝ որպես մարդիկ, ջերմություն ենք արտադրում և այդպիսով արձակում ինֆրակարմիր ճառագայթ: Հետևաբար, շարժման տվիչը լավ ընտրություն է մարդու շարժումները հայտնաբերելու համար:
Քայլ 2: PIR շարժման տվիչի կարգավորում
Գոյություն ունի երեք կապում PIR շարժման տվիչի համար `Power, Output և Ground: Պիների տակ կարող եք տեսնել պիտակները ՝ VCC հոսանքի համար, ելք ելքի համար և GND ՝ գետնին: Երբ սենսորը հայտնաբերում է շարժումները, Ելքի քորոցը բարձր ազդանշան կհանի Raspberry Pi- ի քորոցին, որի հետ դուք միացնում եք սենսորը: Power pin- ի համար ցանկանում եք համոզվել, որ այն հոսանքի համար միանում է Raspberry Pi- ի 5V պինին: Իմ նախագծի համար ես ընտրում եմ Output- ի կապը Pin11- ի վրա Pi- ին միացնելը:
Ամեն ինչ միացնելուց հետո կարող եք տեքստ գրել ձեր սենսորին ՝ գործարկելով ստորև բերված սցենարները.
ներմուծել RPi. GPIO- ն որպես GPIOimport time GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Կարդալ ելքը PIR շարժման տվիչից Pin 11 -ում իսկ True: i = GPIO.input (11) եթե i == 0: #Երբ շարժման սենսորից ելքը LOW տպագիր է «Չի հայտնաբերվում», i time.sleep (0.1) elif i == 1: #Երբ շարժման տվիչից ելքը Բարձր տպագիր է » Շարժումը հայտնաբերված է », i time.sleep (0.1)
Գործարկեք սցենարը ձեր Pi- ի վրա և ձեր ձեռքերը կամ ձեր ընկերոջը դրեք սենսորի դիմաց `ստուգելու համար, թե արդյոք սենսորը արագացնում է շարժումը:
Քայլ 3: Raspberry Pi Camera մոդուլ և կարգավորում
Մարդը ջերմության պատճառով ինֆրակարմիր ճառագայթներ է արձակում, ինչպես նաև ջերմաստիճան ունեցող առարկաները: Հետևաբար, կենդանիները կամ տաք առարկաները կարող են նաև շարժման սենսոր խթանել: Մեզ անհրաժեշտ է միջոց ՝ ստուգելու, թե արդյոք հայտնաբերումը վավեր է: Իրականացման բազմաթիվ եղանակներ կան, բայց իմ նախագծում ես ընտրում եմ Raspberry Pi ֆոտոխցիկի մոդուլը լուսանկարելու համար, երբ շարժման տվիչը շարժումներ է կատարում:
Տեսախցիկի մոդուլն օգտագործելու համար նախ պետք է համոզվեք, որ կապումներն ամրացված են Pi- ի տեսախցիկի անցքին: Տիպ
sudo raspi-config
ձեր Pi- ում ՝ կազմաձևման միջերեսը բացելու և տեսախցիկը միացնելու համար «միջերեսային ընտրանքներում»: Վերագործարկվելուց հետո կարող եք ստուգել, արդյոք Pi- ն իրականում միացված է տեսախցիկին `մուտքագրելով
vcgencmd get_camera
և այն ցույց կտա ձեզ կարգավիճակը: Վերջին քայլը picamera մոդուլի տեղադրումն է ՝ մուտքագրելով
pip տեղադրել picamera
Բոլոր կարգավորումներից հետո կարող եք ստուգել ձեր տեսախցիկը ՝ գործարկելով ստորև բերված սցենարները.
picamera ներմուծումից PiCamera
ժամանակից ներմուծել քնի տեսախցիկ = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()
Նկարը կպահվի որպես «image.jpg» գրացուցակում, նույնը, ինչ ձեր տեսախցիկի սցենարը: Ուշադրություն դարձրեք, դուք ցանկանում եք համոզվել, որ «քուն (2)» -ն այնտեղ է, և թիվը 2 -ից մեծ է, ուստի տեսախցիկը բավականաչափ ժամանակ ունի լուսավորության վիճակը կարգավորելու համար:
Քայլ 4. Միացրեք PIR շարժման ցուցիչն ու տեսախցիկի մոդուլը
Իմ նախագծի գաղափարն այն է, որ շարժման տվիչը և տեսախցիկը դեմքով նույն ուղղությամբ են: Ամեն անգամ, երբ շարժման սենսորը շարժումներ է կատարում, տեսախցիկը նկարում է, որպեսզի մենք կարողանանք ստուգել, թե ինչն է առաջացնում շարժումները հետագայում:
Սցենարը.
ներմուծել RPi. GPIO- ն որպես GPIO- ից տվյալների ժամից ներմուծել տվյալների ժամանակը ներմուծման ժամանակը picamera- ից ներմուծել PiCamera
GPIO.cleanup ()
GPIO.setwarnings (Կեղծ) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Կարդացեք ելք PIR շարժման տվիչի հաղորդագրությունից = 'start' counter = 0 log_f = open ('static/log.txt', 'w') log_f.close ()
տեսախցիկ = PiCamera ()
pic_name = 0
camera.start_preview ()
ժամանակ. քուն (2)
իսկ ճշմարիտ:
i = GPIO.input (11) եթե i == 0: #Երբ շարժման սենսորից ելքը ցածր է, եթե հաշվիչ> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' ա ') հաղորդագրություն = հաղորդագրություն' '; ավարտը ' + end +' / n 'տպել (հաղորդագրություն) log_f.write (հաղորդագրություն) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (վերջնական) հաշվիչ = 0 տպել «Ոչ ներխուժողներ», i time.sleep (0.1) elif i == 1: #Երբ շարժման սենսորից ելքը բարձր է, եթե հաշվիչ == 0: ընթացիկ = str (datetime.now ()) հաղորդագրություն = «Մարդը հայտնաբերված է. ' +' Սկսվում է ' + ընթացիկ հաշվիչից = հաշվիչից + 1 տպագիր« Հայտնաբերվել է ներխուժողը », i time.sleep (0.1) camera.stop_preview ()
«Log.txt» - ի և պատկերների գրացուցակները «ստատիկ» են, ինչը անհրաժեշտ է Flask- ի աշխատանքի համար:
Քայլ 5: Կարգավորեք Ֆլասկի համար
Flask- ը միկրո վեբ շրջանակ է, որը գրված է Python- ում և հիմնված է Werkzeug գործիքակազմի և Jinja2 ձևանմուշի շարժիչի վրա: Հեշտ է իրականացնել և պահպանել: Flask- ի համար ավելի լավ ձեռնարկի համար ես խորհուրդ եմ տալիս այս հղումը ՝ Flask Mega Tutorial
Իմ նախագծի հիմնական սցենարը ՝ «route.py»:
appfolder ներմուծման ծրագրից Ֆլասկա տափաշիշից ներմուծում render_template, վերահղում ներմուծման օպերացիոն համակարգ
APP_ROOT = os.path.dirname (os.path.abspath (_ ֆայլ_)) # վերաբերում է Application_top- ին
APP_STATIC = os.path.join (APP_ROOT, «ստատիկ»)
@appFlask.route ('/', մեթոդներ = ['GET', 'POST'])
def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = տեղեկամատյանների տեղեկամատյանների համար. final_logs.append (log. strip ()) name = str (len (final_logs) -1)+'. jpg' return render_template ('view.html', logs = final_logs, filename = name)
HTML ֆայլը ՝ «view.html», գտնվում է վերևի սանդղակում (քանի որ երբ ես այստեղ պատճենում եմ HTML կոդերը, այն իրականում վերածվում է HTML FORMAT …)
Եվ նախագծի կառուցվածքը պետք է նման լինի ստորև նշվածին (բայց, իհարկե, դրանցից շատ ֆայլեր կան).
iotproject / appfolder / route.py կաղապարներ / view.html static / log.txt 0-j.webp
Քայլ 6: Արդյունք
Այս իրականացման համար, ամեն ինչ ճիշտ կարգավորելուց հետո, դուք պետք է կարողանաք մուտք գործել ձեր Raspberry Pi ՝ մուտքագրելով դրա IP հասցեն դիտարկիչում, և արդյունքը պետք է նման լինի նկարի վերևի սանդղակին այս քայլին: