PIR मोशन सेंसर ESP32 के साथ MicroPython और Thonny IDE का उपयोग कर रहा है

Pir Mosana Sensara Esp32 Ke Satha Micropython Aura Thonny Ide Ka Upayoga Kara Raha Hai



ESP32 विभिन्न सेंसरों को नियंत्रित करने और पढ़ने के लिए कई बाहरी उपकरणों को इंटरफ़ेस कर सकता है। पीआईआर या मोशन सेंसर उन उदाहरणों में से एक है जिन्हें हम ईएसपी32 के साथ इंटरफेस कर सकते हैं ताकि ईएसपी32 का उपयोग करके पीआईआर सेंसर की एक निश्चित सीमा में गति का पता लगाया जा सके।

इससे पहले कि हम ESP32 को PIR सेंसर के साथ जोड़ना शुरू करें, हमें पता होना चाहिए कि ESP32 में काम को कैसे बाधित करता है और उन्हें कैसे पढ़ना और संभालना है। आइए ESP32 के साथ PIR की कार्यप्रणाली पर विस्तार से चर्चा करें।

यहाँ इस लेख की सामग्री है:







1: व्यवधान क्या हैं



1.1: ESP32 में पिन को बाधित करता है



2: ESP32 - MicroPython में रुकावट को कॉल करना





3: ESP32 के साथ PIR सेंसर को इंटरफ़ेस करना - MicroPython

3.1: पीर मोशन सेंसर (HC-SR501)



3.2: पिनआउट एचसी-एसआर501

3.3: कोड

3.4: आउटपुट

1: व्यवधान क्या हैं

ESP32 प्रोग्रामिंग में होने वाली अधिकांश घटनाएँ क्रमिक रूप से चलती हैं जिसका अर्थ है कोड के लाइन द्वारा लाइन निष्पादन। उन घटनाओं को संभालने और नियंत्रित करने के लिए जिन्हें कोड के अनुक्रमिक निष्पादन के दौरान चलाने की आवश्यकता नहीं है बीच में आता है उपयोग किया जाता है।

उदाहरण के लिए, यदि हम किसी विशेष घटना के होने पर एक निश्चित कार्य को अंजाम देना चाहते हैं, या माइक्रोकंट्रोलर के डिजिटल पिन को ट्रिगर सिग्नल दिया जाता है, तो हम इंटरप्ट का उपयोग करते हैं।

रुकावट के साथ हमें ESP32 इनपुट पिन की डिजिटल स्थिति की लगातार जाँच करने की आवश्यकता नहीं है। जब कोई व्यवधान उत्पन्न होता है तो प्रोसेसर मुख्य प्रोग्राम को रोक देता है, और एक नया कार्य कहा जाता है जिसे ISR के रूप में जाना जाता है ( इंटरप्ट सर्विस रूटीन ). इस आईएसआर फ़ंक्शन उस रुकावट को संभालता है जिसके बाद मुख्य कार्यक्रम में वापस आता है और इसे निष्पादित करना शुरू करता है। ISR के उदाहरणों में से एक PIR मोशन सेंसर है जो एक बार गति का पता चलने पर रुकावट उत्पन्न करता है।

1.1: ESP32 में पिन को बाधित करता है

किसी भी हार्डवेयर मॉड्यूल जैसे टच सेंसर या पुश बटन के कारण बाहरी या हार्डवेयर व्यवधान हो सकता है। टच इंटरप्ट तब होता है जब ESP32 पिन पर टच का पता लगाया जाता है या कुंजी या पुश बटन दबाए जाने पर GPIO इंटरप्ट का भी उपयोग किया जा सकता है।

इस लेख में हम ESP32 के साथ PIR सेंसर का उपयोग करके गति का पता लगाने पर एक रुकावट को ट्रिगर करेंगे।

6 एसपीआई एकीकृत पिनों को छोड़कर लगभग सभी जीपीआईओ पिन जो आमतौर पर 36 ESP32 बोर्ड के पिन संस्करण का उपयोग इंटरप्ट कॉलिंग के उद्देश्य से नहीं किया जा सकता है। इसलिए, ESP32 में उपयोग किए जा सकने वाले पिन निम्नलिखित बाहरी व्यवधान प्राप्त करने के लिए हैं:

2: MicroPython का उपयोग करके ESP32 में रुकावट को कॉल करना

MicroPython कोड का उपयोग करके PIR सेंसर के साथ ESP32 बोर्ड को प्रोग्राम करने के लिए। हमें एक इंटरप्ट फ़ंक्शन को परिभाषित करना होगा। निम्नलिखित कुछ सरल चरण हैं जो ESP32 बोर्ड के लिए व्यवधान को परिभाषित करने में सहायता करते हैं।

चरण 1: इंटरप्ट हैंडलिंग फ़ंक्शन प्रारंभ करें: इंटरप्ट हैंडलिंग फ़ंक्शन को एक आसान तरीके से परिभाषित किया जाना चाहिए ताकि यह तेजी से निष्पादित हो सके और जितनी जल्दी हो सके मुख्य कार्यक्रम पर वापस आ सके। यह एक वैश्विक चर को परिभाषित करके किया जा सकता है ताकि इसे कॉल किए जाने पर कोड के अंदर कहीं भी पहुँचा जा सके।

यहाँ PIR सेंसर के मामले में हम GPIO पिन का उपयोग a के रूप में करेंगे वैश्विक चर। इंटरप्ट फ़ंक्शन एक तर्क के रूप में एक पिन लेगा और जीपीआईओ पिन का वर्णन करेगा जो इंटरप्ट फ़ंक्शन होने का कारण बनता है।

डीईएफ़ हैंडल_इंटरप्ट ( नत्थी करना ) :

चरण 2: एक रुकावट के लिए GPIO पिन सेट करें: जीपीआईओ पिन का मूल्य प्राप्त करने के लिए हमें एक वस्तु बनाने की आवश्यकता है जो इसका उपयोग करके इनपुट लेगी पिन.इन हमारे पिन वर्ग के अंदर दूसरे तर्क के रूप में। हम इसका नाम किसी अन्य के साथ बदल सकते हैं।

नत्थी करना = नत्थी करना ( 13 , नत्थी करना। में )

चरण 3: आईआरक्यू () विधि का उपयोग करके पीआईआर सेंसर के लिए जीपीआईओ पिन में बाधा डालें:

नीचे दिए गए आदेश का उपयोग करके, हम पहले परिभाषित पिन पर बाधा डाल सकते हैं।

पुल। आईआरक्यू ( चालू कर देना = नत्थी करना। IRQ_RISING , हैंडलर = हैंडल_इंटरप्ट )

आईआरक्यू () विधि का उपयोग इंटरप्ट को पिन से जोड़ने के लिए किया जाता है। आईआरक्यू () दो अलग-अलग तर्क स्वीकार करता है:

  • चालू कर देना
  • हैंडलर

चालू कर देना: यह तर्क ट्रिगर के तरीके की व्याख्या करता है। निम्नलिखित तीन मोड हैं:

  • Pin.IRQ_FALLING: जब कोई पिन हाई से लो में जाता है, तो एक रुकावट शुरू हो जाती है।
  • Pin.IRQ_RISING: पिन के लो से हाई में ट्रांज़िशन होने पर, एक इंटरप्ट शुरू हो जाता है।
  • Pin.IRQ_FALLING|Pin.IRQ_RISING: जब भी कोई पिन अपनी स्थिति बदलता है तो रुकावट को ट्रिगर करें। या तो पिन हाई या लो पर जाता है।

हैंडलर: व्यवधान उत्पन्न होने के बाद इस फ़ंक्शन को कॉल किया जाएगा।

3: ESP32 के साथ PIR सेंसर को इंटरफ़ेस करना

जैसा कि अब हमने MicroPython का उपयोग करके ESP32 के साथ व्यवधान की अवधारणाओं को कवर किया है, अब हम ESP32 के साथ PIR सेंसर को इंटरफ़ेस करेंगे। यहां हम प्रयोग करेंगे पिन.IRQ_RISING PIR सेंसर के लिए MicroPython कोड में मोड क्योंकि हम हर बार एक एलईडी ट्रिगर करना चाहते हैं जब PIR सेंसर कुछ हलचल का पता लगाता है। यह एलईडी एक निर्धारित समय के लिए चालू रहेगी और फिर बंद हो जाएगी।

निम्नलिखित घटकों की आवश्यकता होगी:

  • ESP32 विकास बोर्ड
  • पीर गति संवेदक (HC-SR501)
  • 220 ओहम रोकनेवाला
  • जम्पर तार
  • ब्रेड बोर्ड
  • एलईडी

ढांच के रूप में ESP32 के साथ पीर सेंसर के लिए:

PIR सेंसर के साथ ESP32 का पिन कॉन्फ़िगरेशन है:

  तालिका विवरण स्वचालित रूप से जेनरेट किया गया

3.1: पीर मोशन सेंसर (HC-SR501)

पीआईआर एक संक्षिप्त रूप है निष्क्रिय इन्फ्रारेड सेंसर . दो पाइरोइलेक्ट्रिक सेंसर एक साथ उपयोग किए जाते हैं जो इसके आस-पास गर्मी की मात्रा का पता लगाएंगे। ये दोनों पायरोइलेक्ट्रिक सेंसर एक के बाद एक पड़े रहते हैं और जब कोई वस्तु उनकी सीमा के अंदर आती है तो ऊष्मा ऊर्जा में परिवर्तन या इन दोनों सेंसर के बीच सिग्नल अंतर के कारण PIR सेंसर आउटपुट कम हो जाता है। एक बार पीआईआर आउट पिन कम हो जाने पर, हम निष्पादित करने के लिए एक विशिष्ट निर्देश सेट कर सकते हैं (एलईडी ब्लिंक)।

  आरेख विवरण स्वचालित रूप से जनरेट किया गया

पीर सेंसर की विशेषताएं निम्नलिखित हैं:

  • परियोजना के स्थान के आधार पर संवेदनशीलता निर्धारित की जा सकती है (जैसे सेंसिंग माउस या लीफ मूवमेंट)
  • PIR सेंसर को इस बात के लिए सेट किया जा सकता है कि यह कितनी देर तक किसी वस्तु का पता लगाता है
  • व्यापक रूप से गृह सुरक्षा अलार्म और अन्य थर्मल आधारित आंदोलन पहचान अनुप्रयोगों में उपयोग किया जाता है।

3.2: पिनआउट एचसी-एसआर501

PIR HC-SR501 तीन पिन के साथ आता है। उनमें से दो Vcc और GND के लिए पावर पिन हैं और एक ट्रिगर सिग्नल के लिए आउटपुट पिन है।

निम्नलिखित पीर सेंसर पिन का विवरण है:

नत्थी करना नाम विवरण
1 वीसीसी सेंसर के लिए इनपुट पिन ESP32 विन पिन से कनेक्ट करें
दो बाहर सेंसर आउटपुट
3 जीएनडी सेंसर जीएनडी

3.3: कोड

अब ESP32 प्रोग्राम करने के लिए दिए गए कोड को Thonny IDE एडिटर या किसी अन्य MicroPython IDE में लिखें और ESP32 पर अपलोड करें।

मशीन आयात पिन से
से समय आयात नींद
गति = असत्य
डीईएफ़ हैंडल_इंटरप्ट ( नत्थी करना ) :
वैश्विक गति
गति = सत्य
ग्लोबल इंटरप्ट_पिन
इंटरप्ट_पिन = नत्थी करना
एलईडी = नत्थी करना ( 4 , नत्थी करना। बाहर )
पुल = नत्थी करना ( 13 , नत्थी करना। में )
पुल। आईआरक्यू ( चालू कर देना = नत्थी करना। IRQ_RISING , हैंडलर = हैंडल_इंटरप्ट )
जबकि सत्य :
यदि गति :
प्रिंट ( 'गति का पता चला' )
एलईडी। मूल्य ( 1 )
सोना ( 5 )
एलईडी। मूल्य ( 0 )
प्रिंट ( 'गति रुकी' )
गति = असत्य

सबसे पहले, हमने आयात किया नत्थी करना मशीन मॉड्यूल से वर्ग और सोना देरी जोड़ने की विधि। इसके बाद नाम के साथ एक वेरिएबल बनाया जाता है गति। यह चर पता लगाएगा कि गति का पता चला है या नहीं।

फिर हमने एक फंक्शन बनाया हैंडल_इंटरप्ट। हर बार पीआईआर सेंसर गति का पता लगाता है, यह फ़ंक्शन सक्रिय हो जाएगा। यह एक इनपुट पैरामीटर के रूप में एक पिन लेता है और उस पिन को इंगित करता है जिसके कारण व्यवधान उत्पन्न होता है।

सरल शब्दों में हर बार पीआईआर गति का पता लगाता है, हैंडल_इंटरप्ट मोशन वेरिएबल को ट्रू पर सेट करेगा और उस पिन को स्टोर करेगा जो रुकावट का कारण बनता है। एक बात याद रखना हमेशा घोषित कर रहा है गति चर वैश्विक के रूप में क्योंकि यह पूरे कोड में आवश्यक है।

आगे बढ़ते हुए हमने दो पिन ऑब्जेक्ट बनाए, एक LED पिन को स्टोर करने के लिए और दूसरा GPIO पिन 13 पर PIR सेंसर आउटपुट लेगा। आगे हमने ट्रिगर पिन को घोषित किया उभरता हुआ तरीका।

में फंदा कोड का हिस्सा, यह गति चर के मान की जांच करेगा एक बार यह सच हो जाता है कि ESP32 के पिन 4 पर एलईडी चालू हो जाएगा। अगर गति बंद हो जाती है तो एलईडी 5 सेकंड के बाद बंद हो जाएगी।

3.4: आउटपुट

आउटपुट सेक्शन में हम देख सकते हैं कि वस्तु पीआईआर सेंसर की सीमा से बाहर है, इसलिए एलईडी चालू है बंद .

अब पीआईआर सेंसर एलईडी द्वारा पता लगाई गई गति चालू हो जाएगी पर के लिये 5 सेकंड उसके बाद यदि कोई गति नहीं पाई जाती है तो वह बनी रहेगी बंद जब तक अगला ट्रिगर प्राप्त नहीं हो जाता।

निम्नलिखित आउटपुट द्वारा दिखाया गया है खोल/टर्मिनल थोंनी आईडीई में।

  ग्राफिकल यूजर इंटरफेस, टेक्स्ट, एप्लिकेशन विवरण स्वचालित रूप से जेनरेट किया गया

निष्कर्ष

ESP32 के साथ एक PIR सेंसर विभिन्न चीजों की गति का पता लगाने में मदद कर सकता है। ESP32 के साथ MicroPython में इंटरप्ट फ़ंक्शन का उपयोग करके हम कुछ विशिष्ट GPIO पिन पर प्रतिक्रिया को ट्रिगर कर सकते हैं। जब परिवर्तन का पता चलता है तो इंटरप्ट फ़ंक्शन चालू हो जाएगा और एक एलईडी चालू हो जाएगी।