Სარჩევი:
- ნაბიჯი 1: PIR მოძრაობის სენსორი
- ნაბიჯი 2: PIR მოძრაობის სენსორის დაყენება
- ნაბიჯი 3: Raspberry Pi კამერის მოდული და დაყენება
- ნაბიჯი 4: შეუთავსეთ PIR მოძრაობის სენსორი და კამერის მოდული
- ნაბიჯი 5: კონფიგურაცია Flask– ისთვის
- ნაბიჯი 6: შედეგი
ვიდეო: Raspberry Pi ადამიანის დეტექტორი + კამერა + კოლბა: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ამ გაკვეთილში მე გავდივარ ნაბიჯებს ჩემი Raspberry Pi IoT პროექტისთვის - PIR Motion Sensor– ის, Raspberry Camera მოდულის გამოყენებით უსაფრთხოების მარტივი IoT მოწყობილობის შესაქმნელად და Flask– ით გამოვლენის ჟურნალზე წვდომა.
ნაბიჯი 1: PIR მოძრაობის სენსორი
PIR ნიშნავს "პასიური ინფრაწითელი" და ეს მოძრაობის სენსორი იძენს მოძრაობებს ინფრაწითელი ხედის ყურებისას და ინფრაწითელი ცვლილებების აღებით. ამრიგად, ფოთლისა და ადამიანის მიერ სენსორის გავლით, ის მხოლოდ ადამიანს ამოიცნობს, რადგან ჩვენ, როგორც ადამიანები, ვქმნით სითბოს და ამით გამოვყოფთ ინფრაწითელ სხივს. ამრიგად, მოძრაობის სენსორი კარგი არჩევანია ადამიანის მოძრაობების გამოსავლენად.
ნაბიჯი 2: PIR მოძრაობის სენსორის დაყენება
არსებობს სამი PIN მოძრაობის სენსორისთვის, Power, Output და Ground. ქინძისთავების ქვეშ შეგიძლიათ იხილოთ ეტიკეტები, VCC დენისთვის, გამომავალი გამომავალი და GND მიწისთვის. როდესაც სენსორი ამოიცნობს მოძრაობებს, გამომავალი პინი გამოუშვებს მაღალი სიგნალს Raspberry Pi პინზე, რომელთანაც თქვენ აკავშირებთ სენსორს. Power pin– ისთვის, თქვენ უნდა დარწმუნდეთ, რომ ის ენერგიის მისაღებად უკავშირდება Raspberry Pi– ს 5V პინს. ჩემი პროექტისთვის, მე ვირჩევ დაკავშირებას Output pin– თან Pin11– ზე Pi– ზე.
ყველაფრის შეერთების შემდეგ, შეგიძლიათ გააგზავნოთ ტექსტური შეტყობინება თქვენს სენსორზე, ქვემოთ მოყვანილი სკრიპტების გამოყენებით:
იმპორტი RPi. GPIO როგორც GPIO იმპორტი დრო 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 ბეჭდვა "არ არის გამოვლენილი", მე time.sleep (0.1) elif i == 1: #როდესაც მოძრაობის სენსორიდან გამომავალი არის მაღალი ბეჭდვა " მოძრაობა აღმოჩენილია ", i time.sleep (0.1)
გაუშვით სკრიპტი თქვენს Pi- ზე და დაადეთ ხელები ან თქვენი მეგობარი სენსორის წინ, რათა შეამოწმოთ აიღებს თუ არა სენსორი მოძრაობას.
ნაბიჯი 3: Raspberry Pi კამერის მოდული და დაყენება
ადამიანი სითბოს გამო ასხივებს ინფრაწითელ სხივს და ასევე ტემპერატურის მქონე საგნებს. ამრიგად, ცხოველებმა ან ცხელმა საგნებმა შეიძლება გამოიწვიოს მოძრაობის სენსორიც. ჩვენ გვჭირდება გზა იმის შესამოწმებლად, არის თუ არა გამოვლენა მართებული. განხორციელების მრავალი გზა არსებობს, მაგრამ ჩემს პროექტში მე ვირჩევ Raspberry Pi კამერის მოდულის გამოყენებას სურათების გადასაღებად, როდესაც მოძრაობის სენსორი იწყებს მოძრაობებს.
კამერის მოდულის გამოსაყენებლად, პირველ რიგში გსურთ დარწმუნდეთ, რომ ქინძისთავები ჩართულია Pi- ს კამერის სლოტში. ტიპი
sudo raspi-config
თქვენს Pi- ზე კონფიგურაციის ინტერფეისის გასახსნელად და ჩართეთ კამერა "ინტერფეისის პარამეტრებში". გადატვირთვის შემდეგ, შეგიძლიათ შეამოწმოთ არის თუ არა Pi ნამდვილად დაკავშირებული კამერას აკრეფით
vcgencmd get_camera
და ის გაჩვენებთ სტატუსს. ბოლო ნაბიჯი არის picamera მოდულის დაყენება აკრეფით
პიპ ინსტალაცია 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 საწყისი datetime იმპორტი datetime იმპორტი დრო picamera იმპორტი PiCamera
GPIO.cleanup ()
GPIO.setwarnings (ყალბი) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #წაიკითხეთ გამომავალი PIR მოძრაობის სენსორის შეტყობინება = 'დაწყების' მრიცხველი = 0 log_f = ღია ('სტატიკური/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', ' a ') შეტყობინება = შეტყობინება +'; დასრულდება " + დასასრულს +" / n 'ბეჭდვა (შეტყობინება) log_f.write (შეტყობინება) log_f.close () საბოლოო =' სტატიკური/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (საბოლოო) მრიცხველი = 0 ამობეჭდვა "შეჭრის გარეშე", მე 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– ისთვის
Flask არის მიკრო ვებ ჩარჩო, დაწერილი პითონში და დაფუძნებულია Werkzeug ინსტრუმენტთა ნაკრებსა და Jinja2 შაბლონზე. მისი განხორციელება და შენარჩუნება ადვილია. Flask– ის უკეთესი გაკვეთილისთვის გირჩევთ ამ ბმულს: Flask Mega Tutorial
ჩემი პროექტის მთავარი სცენარი, 'lines.py':
appfolder იმპორტი appFlaskfromb flask import render_template, redirect import os
APP_ROOT = os.path.dirname (os.path.abspath (_ ფაილი_)) # ეხება განაცხადის_თავას
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 = log 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 მისამართის აკრეფით და შედეგი უნდა გამოიყურებოდეს როგორც სურათი ამ ზედა საფეხურზე.