विषयसूची:
- चरण 1: पीर मोशन सेंसर
- चरण 2: पीर मोशन सेंसर सेटअप
- चरण 3: रास्पबेरी पाई कैमरा मॉड्यूल और सेटअप
- चरण 4: पीर मोशन सेंसर और कैमरा मॉड्यूल को मिलाएं
- चरण 5: फ्लास्क के लिए सेटअप
- चरण 6: परिणाम
वीडियो: रास्पबेरी पाई मानव डिटेक्टर + कैमरा + फ्लास्क: 6 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
इस ट्यूटोरियल में, मैं अपने रास्पबेरी पाई IoT प्रोजेक्ट के चरणों के माध्यम से चलूंगा - एक साधारण सुरक्षा IoT डिवाइस बनाने के लिए PIR मोशन सेंसर, रास्पबेरी कैमरा मॉड्यूल का उपयोग करना, और फ्लास्क के साथ डिटेक्शन लॉग को एक्सेस करना।
चरण 1: पीर मोशन सेंसर
PIR का अर्थ "निष्क्रिय इन्फ्रारेड" है और यह मोशन सेंसर इन्फ्रारेड दृश्य को देखकर और इन्फ्रारेड परिवर्तनों को उठाकर गतियों को उठाता है। इसलिए, एक पत्ती और एक मानव सेंसर से गुजरते हुए, यह केवल मानव का पता लगाता है क्योंकि हम मनुष्य के रूप में गर्मी उत्पन्न करते हैं और इस प्रकार अवरक्त किरण का उत्सर्जन करते हैं। इसलिए, मानव आंदोलनों का पता लगाने के लिए मोशन सेंसर एक अच्छा विकल्प है।
चरण 2: पीर मोशन सेंसर सेटअप
पीर मोशन सेंसर, पावर, आउटपुट और ग्राउंड के लिए तीन पिन हैं। पिन के नीचे आप लेबल देख सकते हैं, पावर के लिए वीसीसी, आउटपुट के लिए आउट और ग्राउंड के लिए जीएनडी। जब सेंसर आंदोलनों का पता लगाता है, तो आउटपुट पिन रास्पबेरी पाई पिन को एक उच्च सिग्नल आउटपुट करेगा जिसे आप सेंसर से जोड़ते हैं। पावर पिन के लिए, आप यह सुनिश्चित करना चाहते हैं कि यह पावर के लिए रास्पबेरी पाई पर 5V पिन से कनेक्ट हो। अपने प्रोजेक्ट के लिए, मैं Pi पर आउटपुट पिन को Pin11 से कनेक्ट करना चुनता हूं।
सब कुछ जोड़ने के बाद, आप नीचे दिए गए की तरह स्क्रिप्ट चलाकर अपने सेंसर को टेक्स्ट कर सकते हैं:
RPIO. GPIO को GPIO के रूप में आयात करेंआयात समय GPIO.cleanup() GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #PIR मोशन सेंसर से पिन 11 पर आउटपुट पढ़ें जबकि सही: i =GPIO.input(11) अगर i==0: # जब मोशन सेंसर से आउटपुट लो प्रिंट "नो डिटेक्शन" है, तो मैं टाइम। स्लीप (0.1) elif i==1: #जब मोशन सेंसर से आउटपुट हाई प्रिंट है " आंदोलन का पता चला", मैं समय सोता हूं (0.1)
स्क्रिप्ट को अपने पाई पर चलाएँ, और अपने हाथों या अपने दोस्त को सेंसर के सामने रख कर देखें कि सेंसर गति पकड़ता है या नहीं।
चरण 3: रास्पबेरी पाई कैमरा मॉड्यूल और सेटअप
मानव गर्मी के कारण अवरक्त किरण का उत्सर्जन करता है, और इसी तरह तापमान वाली वस्तुएं भी। इसलिए, जानवर या गर्म वस्तुएं मोशन सेंसर को भी ट्रिगर कर सकती हैं। हमें यह जांचने का एक तरीका चाहिए कि पता लगाना वैध है या नहीं। लागू करने के कई तरीके हैं, लेकिन मेरी परियोजना में, मैं रास्पबेरी पाई कैमरा मॉड्यूल का उपयोग करना चुनता हूं जब गति संवेदक आंदोलनों को उठाता है।
कैमरा मॉड्यूल का उपयोग करने के लिए, आप पहले यह सुनिश्चित करना चाहते हैं कि पिन Pi पर कैमरा स्लॉट में प्लग किए गए हैं। प्रकार
सुडो रास्पि-कॉन्फ़िगरेशन
कॉन्फ़िगरेशन इंटरफ़ेस खोलने के लिए अपने पीआई पर, और कैमरे को 'इंटरफेसिंग विकल्प' में सक्षम करें। रिबूट करने के बाद, आप टाइप करके जांच सकते हैं कि क्या Pi वास्तव में कैमरे से जुड़ा है
vcgencmd get_camera
और यह आपको स्टेटस दिखाएगा। अंतिम चरण टाइप करके पिकैमरा मॉड्यूल स्थापित करना है
पिप पिकामेरा स्थापित करें
सभी सेटअप के बाद, आप नीचे की तरह स्क्रिप्ट चलाकर अपने कैमरे का परीक्षण कर सकते हैं:
Picamera से PiCamera आयात करें
समय से नींद कैमरा आयात करें = PiCamera () कैमरा। start_preview () नींद (2) कैमरा। कैप्चर ('छवि। जेपीजी') कैमरा। स्टॉप_प्रेव्यू ()
चित्र निर्देशिका में 'image.jpg' के रूप में संग्रहीत किया जाएगा जैसा कि आपकी कैमरा स्क्रिप्ट में से एक है। ध्यान दें, आप यह सुनिश्चित करना चाहते हैं कि 'स्लीप (2)' है और संख्या 2 से अधिक है इसलिए कैमरे के पास प्रकाश की स्थिति को समायोजित करने के लिए पर्याप्त समय है।
चरण 4: पीर मोशन सेंसर और कैमरा मॉड्यूल को मिलाएं
मेरे प्रोजेक्ट का विचार यह है कि मोशन सेंसर और कैमरा एक ही दिशा में सामना करेंगे। जब भी गति संवेदक गति पकड़ता है, कैमरा एक तस्वीर लेगा ताकि हम जांच सकें कि बाद में गति का कारण क्या है।
लिपी:
RPi. GPIO को GPIO के रूप में आयात करें डेटाटाइम से डेटाटाइम आयात करें पिकैमरा से आयात समय आयात करें PiCamera
जीपीआईओ.क्लीनअप ()
GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #PIR मोशन सेंसर संदेश से आउटपुट पढ़ें = 'स्टार्ट' काउंटर = 0 log_f = open('static/log.txt', 'डब्ल्यू') log_f.close ()
कैमरा = पाइकैमरा ()
pic_name = 0
कैमरा.स्टार्ट_प्रीव्यू ()
समय सो जाओ(2)
जबकि सच:
i=GPIO.input(11) अगर i==0: # जब मोशन सेंसर से आउटपुट कम हो तो काउंटर > 0: end = str(datetime.now ()) log_f = open('static/log.txt', ' ए') संदेश = संदेश + '; '+ अंत +' \n' प्रिंट (संदेश) पर समाप्त करें log_f.write(message) log_f.close() final = 'static/' + str(pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture(अंतिम) काउंटर = 0 प्रिंट "कोई घुसपैठिए नहीं", मैं समय। नींद (0.1) elif i == 1: # जब गति संवेदक से आउटपुट उच्च होता है यदि काउंटर == 0: वर्तमान = str (datetime.now ()) संदेश = 'मानव का पता चला:' + 'शुरू' + वर्तमान काउंटर = काउंटर + 1 प्रिंट "घुसपैठिए का पता चला", मैं समय सोता हूं (0.1) कैमरा.स्टॉप_प्रव्यू ()
'log.txt' और छवियों के लिए निर्देशिका 'स्थिर' हैं, जो फ्लास्क के काम करने के लिए आवश्यक है।
चरण 5: फ्लास्क के लिए सेटअप
फ्लास्क एक माइक्रो वेब फ्रेमवर्क है जिसे पायथन में लिखा गया है और यह Werkzeug टूलकिट और Jinja2 टेम्प्लेट इंजन पर आधारित है। इसे लागू करना और बनाए रखना आसान है। फ्लास्क के लिए बेहतर ट्यूटोरियल के लिए, मैं इस लिंक की अनुशंसा करता हूं: फ्लास्क मेगा ट्यूटोरियल
मेरे प्रोजेक्ट की मुख्य स्क्रिप्ट, 'routes.py':
एपफोल्डर से आयात एपफ्लास्कफ्लास्क आयात रेंडर_टेम्प्लेट से, आयात को पुनर्निर्देशित करें
APP_ROOT = os.path.dirname(os.path.abspath(_file_)) # application_top को संदर्भित करता है
APP_STATIC = os.path.join (APP_ROOT, 'स्थिर')
@appFlask.route('/', Methods=['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. स्ट्रिप ()) नाम = स्ट्र (लेन (फाइनल_लॉग्स) -1) + '.जेपीजी' रिटर्न रेंडर_टेम्प्लेट ('व्यू.एचटीएमएल', लॉग्स = फाइनल_लॉग्स, फाइलनाम = नाम)
HTML फ़ाइल 'view.html' शीर्ष बार पर है (क्योंकि जब मैं यहाँ HTML कोड कॉपी करता हूँ, तो यह वास्तव में HTML FORMAT में बदल जाता है…)
और परियोजना की संरचना नीचे कुछ दिखनी चाहिए (लेकिन निश्चित रूप से इनसे अधिक फाइलें हैं):
iotproject\ appfolder\ मार्गों.पीई टेम्पलेट्स\ view.html स्थिर\ log.txt 0-j.webp
चरण 6: परिणाम
इस कार्यान्वयन के लिए, सब कुछ सही ढंग से स्थापित होने के बाद, आपको ब्राउज़र पर अपना आईपी पता टाइप करके अपने रास्पबेरी पाई तक पहुंचने में सक्षम होना चाहिए, और परिणाम इस चरण में शीर्ष बार पर चित्र जैसा दिखना चाहिए।