- सामग्री की आवश्यकता
- ध्वनि संवेदक कार्य
- ऑसिलोस्कोप पर ऑडियो फ्रीक्वेंसी को मापना
- सीटी डिटेक्टर Arduino सर्किट आरेख
- Arduino के साथ आवृत्ति को मापने
- सीटी का पता लगाने के लिए अपने Arduino का प्रोग्रामिंग
- Arduino सीटी डिटेक्टर कार्य करना
एक बच्चे के रूप में मैं एक खिलौना संगीत कार पर मोहित हो गया जो आपके हाथों को ताली बजाने पर ट्रिगर हो जाती है, और फिर जैसे-जैसे मैं बड़ा हुआ, मुझे आश्चर्य हुआ कि क्या हम अपने घर में रोशनी और प्रशंसकों को टॉगल करने के लिए उपयोग कर सकते हैं। यह मेरे प्रशंसक और रोशनी को चालू करने के लिए अच्छा होगा कि स्विच बोर्ड पर मेरे आलसी स्वयं चलने के बजाय सिर्फ हाथों से ताली बजाएं। लेकिन अक्सर कई बार यह खराबी हो जाती है क्योंकि यह सर्किट वातावरण में किसी भी जोर से शोर का जवाब देगा, जैसे कि जोर से रेडियो या मेरे पड़ोसी के लॉन घास काटने की मशीन के लिए। हालांकि ताली स्विच बनाना भी एक मजेदार प्रोजेक्ट है।
यह तब था, जब मैं इस व्हिसल डिटेक्टिंग पद्धति में आया था जिसमें सर्किट सीटी के लिए पता लगाएगा। अन्य ध्वनियों के विपरीत एक सीटी में एक विशेष अवधि के लिए एक समान आवृत्ति होगी और इसलिए इसे भाषण या संगीत से अलग किया जा सकता है। तो इस ट्यूटोरियल में हम सीखेंगे कि Arduino के साथ Sound Sensor को बदलकर सीटी साउंड का पता कैसे लगाया जाए और जब एक सीटी का पता लगाया जाए तो हम एक रिले के माध्यम से AC लैंप को टॉगल करेंगे । जिस तरह से हम यह भी सीखेंगे कि माइक्रोफोन द्वारा ध्वनि संकेत कैसे प्राप्त किए जाते हैं और Arduino का उपयोग करके आवृत्ति कैसे मापी जाती है। दिलचस्प लगता है तो चलो Arduino आधारित होम ऑटोमेशन प्रोजेक्ट के साथ शुरू करें ।
सामग्री की आवश्यकता
- Arduino UNO
- ध्वनि सेंसर मॉड्यूल
- रिले मॉड्यूल
- एसी लैंप
- तारों को जोड़ना
- ब्रेड बोर्ड
ध्वनि संवेदक कार्य
इस होम ऑटोमेशन प्रोजेक्ट के लिए हार्डवेयर कनेक्शन और कोड में गोता लगाने से पहले, आइए ध्वनि सेंसर पर एक नज़र डालें। इस मॉड्यूल में प्रयुक्त साउंड सेंसर नीचे दिखाया गया है। बाजार में उपलब्ध अधिकांश ध्वनि सेंसर का कार्य सिद्धांत इसके समान है, हालांकि उपस्थिति थोड़ा बदल सकती है।
जैसा कि हम जानते हैं कि ध्वनि सेंसर में आदिम घटक माइक्रोफोन होता है । एक माइक्रोफोन ट्रांसड्यूसर का प्रकार है जो ध्वनि तरंगों (ध्वनिक ऊर्जा) को विद्युत ऊर्जा में परिवर्तित करता है । मूल रूप से माइक्रोफोन के अंदर डायाफ्राम वातावरण में ध्वनि तरंगों को कंपन करता है जो इसके आउटपुट पिन पर विद्युत संकेत उत्पन्न करता है। लेकिन ये संकेत बहुत कम परिमाण (mV) के होंगे और इसलिए इन्हें सीधे Arduino जैसे किसी माइक्रोकंट्रोलर द्वारा संसाधित नहीं किया जा सकता है। इसके अलावा डिफ़ॉल्ट रूप से ध्वनि संकेत प्रकृति में एनालॉग होते हैं इसलिए माइक्रोफोन से आउटपुट वेरिएबल फ्रिक्वेंसी के साथ साइन वेव होगा, लेकिन माइक्रोकंट्रोलर डिजिटल डिवाइस होते हैं और इसलिए स्क्वायर वेव के साथ बेहतर काम करते हैं।
इन निम्न सिग्नल साइन तरंगों को बढ़ाना और उन्हें वर्ग तरंगों में बदलना मॉड्यूल ऊपर-नीचे LM393 तुलनित्र मॉड्यूल का उपयोग करता है जैसा कि ऊपर दिखाया गया है। माइक्रोफोन से कम वोल्टेज ऑडियो आउटपुट को एम्पलीफायर ट्रांजिस्टर के माध्यम से तुलनित्र के एक पिन को आपूर्ति की जाती है, जबकि एक वोल्टेज वोल्टेज विभक्त सर्किट का उपयोग करके एक अन्य वोल्टेज पर एक संदर्भ वोल्टेज सेट किया जाता है। जब माइक्रोफोन से ऑडियो आउटपुट वोल्टेज प्रीसेट वोल्टेज से अधिक हो जाता है तो तुलनित्र 5V (ऑपरेटिंग वोल्टेज) के साथ उच्च हो जाता है, अन्यथा तुलनित्र 0V पर कम रहता है। इस तरह से कम सिग्नल साइन लहर उच्च वोल्टेज (5V) वर्ग तरंग के लिए कनवर्टर हो सकती है। नीचे दी गई आस्टसीलस्कप स्नैपशॉट वही दिखाती है जहां पीली तरंग कम सिग्नल साइन वेव होती है और ब्लू ऑन आउटपुट स्क्वायर वेव होता है। मॉड्यूल पर पोटेंशियोमीटर को अलग करके संवेदनशीलता को नियंत्रित किया जा सकता है ।
ऑसिलोस्कोप पर ऑडियो फ्रीक्वेंसी को मापना
यह ध्वनि सेंसर मॉड्यूल वायुमंडल में ध्वनि तरंगों को वर्ग तरंगों में परिवर्तित करेगा, जिनकी आवृत्ति ध्वनि तरंगों की आवृत्ति के बराबर होगी। तो वर्ग तरंग की आवृत्ति को मापकर हम वातावरण में ध्वनि संकेतों की आवृत्ति का पता लगा सकते हैं। यह सुनिश्चित करने के लिए कि वे काम कर रहे हैं, क्योंकि मुझे लगता है कि मैं अपने आउटपुट सिग्नल की जांच करने के लिए साउंड सेंसर को अपने दायरे से जुड़ा हुआ हूं, जैसा कि नीचे दिए गए वीडियो में दिखाया गया है।
मैंने आवृत्ति को मापने के लिए अपने दायरे पर माप मोड चालू किया और ज्ञात आवृत्ति के ध्वनि संकेतों को उत्पन्न करने के लिए प्ले स्टोर से एक एंड्रॉइड एप्लिकेशन (फ्रीक्वेंसी साउंड जेनरेटर) का उपयोग किया। जैसा कि आप ऊपर दिए गए GID में देख सकते हैं कि स्कोप एक बहुत ही सभ्य सटीकता के साथ ध्वनि संकेतों को मापने में सक्षम था, गुंजाइश में प्रदर्शित आवृत्ति का मूल्य मेरे फोन पर प्रदर्शित एक के बहुत करीब है। अब, जब हम जानते हैं कि मॉड्यूल काम कर रहा है, तो Arduino के साथ साउंड सेंसर को इंटरफेस करने की अनुमति देता है ।
सीटी डिटेक्टर Arduino सर्किट आरेख
साउंड सेंसर का उपयोग करने वाले Arduino सीटी डिटेक्टर स्विच सर्किट के लिए पूरा सर्किट आरेख नीचे दिखाया गया है। Fritzing सॉफ्टवेयर का उपयोग कर सर्किट तैयार किया गया था।
साउंड सेंसर और रिले मॉड्यूल Arduino के 5V पिन द्वारा संचालित है। साउंड सेंसर का आउटपुट पिन Arduino के डिजिटल पिन 8 से जुड़ा है, यह उस पिन की टाइमर प्रॉपर्टी के कारण है और हम प्रोग्रामिंग सेक्शन में इसके बारे में अधिक चर्चा करेंगे। रिले मॉड्यूल को पिन 13 द्वारा ट्रिगर किया गया है जो UNO बोर्ड पर इन-बिल्ट एलईडी से भी जुड़ा है।
एसी आपूर्ति पक्ष पर तटस्थ तार सीधे रिले मॉड्यूल के कॉमन (सी) पिन से जुड़ा होता है जबकि चरण एसी लोड (लाइट बल्ब) के माध्यम से रिले के सामान्य रूप से ओपन (NO) पिन से जुड़ा होता है। इस तरह से जब रिले को ट्रिगर किया जाता है तो NO पिन C पिन से जुड़ा होगा और इस प्रकार प्रकाश बल्ब चमक जाएगा। इसके अलावा ब्लब बंद हो जाएगा। एक बार कनेक्शन हो जाने के बाद, मेरा हार्डवेयर कुछ इस तरह से दिखता था।
चेतावनी: एसी सर्किट के साथ काम करना खतरनाक हो सकता है, लाइव तारों को संभालने के दौरान सतर्क रहें और शॉर्ट सर्किट से बचें। उन लोगों के लिए एक सर्किट ब्रेकर या वयस्क पर्यवेक्षण की सिफारिश की जाती है जो इलेक्ट्रॉनिक्स के साथ अनुभवी नहीं हैं। आपको चेतावनी दी गई है!!
Arduino के साथ आवृत्ति को मापने
आने वाले वर्ग तरंगों की आवृत्ति को पढ़ने के हमारे दायरे के समान, हमें आवृत्ति की गणना करने के लिए Arduino को प्रोग्राम करना होगा। हम पहले ही सीख चुके हैं कि फ़ंक्शन में पल्स का उपयोग करके हमारे फ़्रीक्वेंसी काउंटर ट्यूटोरियल में यह कैसे करना है। लेकिन इस ट्यूटोरियल में हम सटीक परिणाम प्राप्त करने के लिए फ़्रीक्वरम लाइब्रेरी का उपयोग आवृत्ति को मापने के लिए करेंगे। यह लाइब्रेरी पिन 8 पर आंतरिक टाइमर इंटरप्ट का उपयोग करके यह मापती है कि पल्स कितनी देर तक चालू रहता है। एक बार समय मापने के बाद हम सूत्र F = 1 / T का उपयोग करके आवृत्ति की गणना कर सकते हैं। हालाँकि जब से हम सीधे पुस्तकालय का उपयोग कर रहे हैं तब हमें रजिस्टर विवरण और गणित में नहीं जाना चाहिए कि आवृत्ति कैसे मापी जाती है। लाइब्रेरी को नीचे दिए गए लिंक से डाउनलोड किया जा सकता है:
- फ्रीक्वेंसी मेज़ लाइब्रेरी बाय pjrc
उपरोक्त लिंक एक ज़िप फ़ाइल डाउनलोड करेगा, आप पथ स्केच -> लाइब्रेरी शामिल करें -> Add.ZIP लाइब्रेरी का अनुसरण करके इस ज़िप फ़ाइल को अपने Arduino IDE में जोड़ सकते हैं ।
नोट: लाइब्रेरी का उपयोग करनाUNO पर पिन 9 और 10 पर एनालॉग वर्क को अक्षम कर देगा क्योंकि इस लाइब्रेरी पर टाइमर का कब्जा होगा। यदि अन्य बोर्डों का उपयोग किया जाता है तो भी ये पिन बदल जाएंगे।
सीटी का पता लगाने के लिए अपने Arduino का प्रोग्रामिंग
साथ एक प्रदर्शन वीडियो पूरा कार्यक्रम इस पेज के नीचे पाया जा सकता है। इस हेडिंग में मैं प्रोग्राम को छोटे स्निपेट में तोड़कर समझाऊंगा।
हमेशा की तरह हम आवश्यक पुस्तकालयों को शामिल करके और आवश्यक चर घोषित करके कार्यक्रम शुरू करते हैं। सुनिश्चित करें कि आपने FreqMeasure.h लाइब्रेरी को पहले ही जोड़ दिया है जैसा कि ऊपर की हेडिंग में बताया गया है। चर राज्य एलईडी की स्थिति का प्रतिनिधित्व करता है और चर आवृत्ति और निरंतरता क्रमशः मापा आवृत्ति और इसकी निरंतरता को आउटपुट करने के लिए उपयोग किया जाता है।
#शामिल
शून्य सेटअप फ़ंक्शन के अंदर, हम डिबगिंग के लिए 9600 बॉड दर पर सीरियल मॉनिटर शुरू करते हैं। फिर आवृत्ति को मापने के लिए पिन 8 को इनिशियलाइज़ करने के लिए FreqMeasure.begin () फ़ंक्शन का उपयोग करें । हम यह भी घोषणा करते हैं कि पिन 13 (LED_BUILTIN) आउटपुट है।
शून्य सेटअप () { Serial.begin (9600); FreqMeasure.begin (); // पिन पर डिफ़ॉल्ट पिनकोड द्वारा माप (LED_BUILTIN, OUTPUT); }
अनंत लूप के अंदर, हम फ़ंक्शन FreqMeasure.available () का उपयोग करके पिन 8 पर सुनते रहते हैं । यदि कोई आवक संकेत है तो हम FreqMeasure.read () का उपयोग करके आवृत्ति को मापते हैं। शोर के कारण त्रुटि से बचने के लिए हम 100 नमूनों को मापते हैं और उसका औसत लेते हैं। ऐसा करने का कोड नीचे दिखाया गया है।
if (FreqMeasure.available ()) { // औसत कई रीडिंग एक साथ योग = sum + FreqMeasure.read (); count = count + 1; अगर (गिनती> 100) { आवृत्ति = FreqMeasure.countToFrequency (राशि / गणना); धारावाहिक.प्रदर्शन (आवृत्ति); योग = 0; गिनती = 0; } }
आप अपने सीटी के लिए आवृत्ति के मूल्य की जांच करने के लिए यहां Serial.println () फ़ंक्शन का उपयोग कर सकते हैं । मेरे मामले में प्राप्त मूल्य 1800 हर्ट्ज से 2000 हर्ट्ज तक था। अधिकांश लोगों की सीटी की आवृत्ति इस विशेष श्रेणी में गिर जाएगी। लेकिन यहां तक कि संगीत या आवाज जैसी अन्य आवाज़ें भी इस आवृत्ति के अंतर्गत आ सकती हैं, ताकि उन्हें अलग करने के लिए हम निरंतरता के लिए निगरानी करेंगे। यदि आवृत्ति 3 बार के लिए निरंतर है, तो हम इसे एक सीटी ध्वनि होने की पुष्टि करते हैं। इसलिए, यदि आवृत्ति 1800 से 2000 के बीच है तो हम निरंतरता नामक चर को बढ़ाते हैं।
अगर (आवृत्ति> 1800 && आवृत्ति <2000) {निरंतरता ++; सीरियल.प्रिंट ("निरंतरता ->"); सीरीयल.प्रिंट (निरंतरता); आवृत्ति = 0;}
यदि निरंतरता का मूल्य तीन तक पहुंचता है या अधिक हो जाता है, तो हम एलईडी नामक स्थिति को परिवर्तनशील अवस्था में टॉगल करके बदल देते हैं। यदि राज्य पहले से ही सच है तो हम इसे झूठे और उल्टे वर्से में बदल देते हैं।
if (निरंतरता> = 3 && राज्य == मिथ्या) {राज्य = सत्य; निरंतरता = 0; Serial.println ("लाइट टर्न ऑन"); विलंब (1000);} यदि (निरंतरता> = 3 && राज्य == सत्य) {राज्य = असत्य; निरंतरता = 0; Serial.println ("लाइट टर्न ऑफ"); देरी (1000);}
Arduino सीटी डिटेक्टर कार्य करना
कोड और हार्डवेयर तैयार होने के बाद हम इसका परीक्षण शुरू कर सकते हैं। सुनिश्चित करें कि कनेक्शन सही हैं और मॉड्यूल को शक्ति प्रदान करता है। सीरियल मॉनिटर खोलें और सीटी बजाएं, आप निरंतरता के मूल्य को बढ़ाए जाने और अंत में लैंप को चालू या बंद करने की सूचना दे सकते हैं। मेरे सीरियल मॉनिटर का एक नमूना स्नैप शॉट नीचे दिखाया गया है।
जब सीरियल मॉनीटर कहता है कि पिन पर दिया गया लाइट 13 हाई हो जाएगा और लैंप को चालू करने के लिए रिले को ट्रिगर किया जाएगा। इसी तरह जब धारावाहिक मॉनिटर कहता है कि लाइट बंद हो गई है तो दीपक बंद हो जाएगा । एक बार जब आप काम का परीक्षण कर लेते हैं, तो आप 12V एडॉप्टर का उपयोग करके सेट-अप को शक्ति दे सकते हैं और सीटी का उपयोग करके अपने एसी होम एप्लायंसेस को नियंत्रित करना शुरू कर सकते हैं ।
इस परियोजना का पूरा काम नीचे दिए गए वीडियो पर पाया जा सकता है । आशा है कि आप ट्यूटोरियल को समझ गए हैं और कुछ नया सीखने में मज़ा आया है। यदि आपको चीजों को काम करने में कोई समस्या है, तो उन्हें टिप्पणी अनुभाग में छोड़ दें या अन्य तकनीकी क्वायर के लिए हमारे मंच का उपयोग करें।