Სარჩევი:

Raspberry Pi ადამიანის დეტექტორი + კამერა + კოლბა: 6 ნაბიჯი
Raspberry Pi ადამიანის დეტექტორი + კამერა + კოლბა: 6 ნაბიჯი

ვიდეო: Raspberry Pi ადამიანის დეტექტორი + კამერა + კოლბა: 6 ნაბიჯი

ვიდეო: Raspberry Pi ადამიანის დეტექტორი + კამერა + კოლბა: 6 ნაბიჯი
ვიდეო: BigTreeTech - Manta - M8P - Basics 2024, ივლისი
Anonim
Raspberry Pi ადამიანის დეტექტორი + კამერა + კოლბა
Raspberry Pi ადამიანის დეტექტორი + კამერა + კოლბა

ამ გაკვეთილში მე გავდივარ ნაბიჯებს ჩემი Raspberry Pi IoT პროექტისთვის - PIR Motion Sensor– ის, Raspberry Camera მოდულის გამოყენებით უსაფრთხოების მარტივი IoT მოწყობილობის შესაქმნელად და Flask– ით გამოვლენის ჟურნალზე წვდომა.

ნაბიჯი 1: PIR მოძრაობის სენსორი

PIR მოძრაობის სენსორი
PIR მოძრაობის სენსორი

PIR ნიშნავს "პასიური ინფრაწითელი" და ეს მოძრაობის სენსორი იძენს მოძრაობებს ინფრაწითელი ხედის ყურებისას და ინფრაწითელი ცვლილებების აღებით. ამრიგად, ფოთლისა და ადამიანის მიერ სენსორის გავლით, ის მხოლოდ ადამიანს ამოიცნობს, რადგან ჩვენ, როგორც ადამიანები, ვქმნით სითბოს და ამით გამოვყოფთ ინფრაწითელ სხივს. ამრიგად, მოძრაობის სენსორი კარგი არჩევანია ადამიანის მოძრაობების გამოსავლენად.

ნაბიჯი 2: PIR მოძრაობის სენსორის დაყენება

PIR მოძრაობის სენსორის დაყენება
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 კამერის მოდული და დაყენება
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– ის დაყენება
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 მისამართის აკრეფით და შედეგი უნდა გამოიყურებოდეს როგორც სურათი ამ ზედა საფეხურზე.