- एफएम रेडियो जनरल वर्किंग
- अवयव आवश्यक
- RDA5807 रिसीवर
- ऑडियो एंप्लिफायर
- Arduino FM रिसीवर सर्किट डायग्राम
- Arduino FM रेडियो कोड स्पष्टीकरण
- Arduino FM रेडियो का कार्य करना
आज लगभग हर कोई अपने मोबाइल फोन का उपयोग संगीत, समाचार, पॉडकास्ट, आदि सुनने के लिए करता है, लेकिन बहुत समय पहले हम सभी नवीनतम समाचार और गाने प्राप्त करने के लिए स्थानीय एफएम रेडियो पर निर्भर थे, धीरे-धीरे ये रेडियो लोकप्रियता खो रहे हैं, लेकिन आपात स्थिति में जब इंटरनेट नीचे है, उपयोगकर्ताओं को जानकारी प्रसारित करने के लिए रेडियो एक महत्वपूर्ण भूमिका रखता है। रेडियो सिग्नल हमेशा हवा में मौजूद होते हैं (जो स्टेशनों द्वारा प्रसारित होते हैं), और हमें उन रेडियो सिग्नलों को पकड़ने और उन्हें ऑडियो सिग्नलों में स्थानांतरित करने के लिए एक एफएम रिसीवर सर्किट की आवश्यकता होती है । हमारे पिछले ट्यूटोरियल में, हमने कुछ अन्य एफएम ट्रांसमीटर और रिसीवर भी बनाए हैं जो नीचे सूचीबद्ध हैं।
- रास्पबेरी पाई एफएम ट्रांसमीटर
- रास्पबेरी पाई एफएम रिसीवर रेडियो
- एफएम ट्रांसमीटर सर्किट
- इंडक्टर के बिना एफएम ट्रांसमीटर सर्किट
इस ट्यूटोरियल में हम एक Arduino FM रिसीवर का निर्माण करने जा रहे हैं, और इसे हमारे प्रोजेक्ट शस्त्रागार में जोड़ देंगे। हम Arduino के साथ RDA5807 FM रिसीवर आईसी का उपयोग करेंगे और इसे प्रोग्राम करेंगे, किसी भी एफएम रेडियो स्टेशन को चलाएं जिसे उपयोगकर्ता द्वारा एक पोटेंशियोमीटर के साथ ट्यून किया जा सके। हम अपने Arduino FM Radio के आउटपुट वॉल्यूम को नियंत्रित करने के लिए सर्किट के साथ एक ऑडियो एम्पलीफायर का भी उपयोग करेंगे, दिलचस्प सही लगता है? तो चलो शुरू करते है।
एफएम रेडियो जनरल वर्किंग
रेडियो स्टेशन विद्युत संकेतों को रेडियो संकेतों में परिवर्तित करते हैं, और इन संकेतों को ऐन्टेना के माध्यम से प्रेषित होने से पहले संशोधित किया जाना है। दो विधियाँ हैं जिनमें एक संकेत को AM और FM नाम से संशोधित किया जा सकता है। जैसा कि नाम से पता चलता है, आयाम मॉड्यूलेशन (AM) सिग्नल को संचारित करने से पहले आयाम को नियंत्रित करता है, जबकि आवृत्ति मॉड्यूलेशन (FM) में, एंटीना के माध्यम से संचारित करने से पहले सिग्नल की आवृत्ति को संशोधित किया जाता है। रेडियो स्टेशनों पर, वे सिग्नल को मॉड्यूलेट करने और फिर डेटा संचारित करने के लिए आवृत्ति मॉड्यूलेशन का उपयोग करते हैं। अब, हम सभी को बनाने की जरूरत है एक रिसीवर है जिसे कुछ निश्चित आवृत्तियों के साथ जोड़ा जा सकता है, और उन संकेतों को प्राप्त कर सकते हैं, और बाद में इन विद्युत संकेतों को ऑडियो सिग्नल में परिवर्तित कर सकते हैं। हम इसका उपयोग करने जा रहे हैंइस परियोजना में RDA5807 FM रिसीवर मॉड्यूल, जो हमारे सर्किट को सरल बनाता है ।
अवयव आवश्यक
- अरुडिनो नैनो
- RDA5807 रिसीवर
- ऑडियो एंप्लिफायर
- तारों को जोड़ना
- बर्तन - 100 कि
- परफ़ेक्ट बोर्ड
RDA5807 रिसीवर
RDA5807 एक एकल-चिप एफएम स्टीरियो रेडियो ट्यूनर मॉड्यूल है जो पूरी तरह से एकीकृत सिंथेसाइज़र के साथ है। मॉड्यूल 50 - 115MHz, वॉल्यूम कंट्रोल और म्यूट, प्रोग्रामेबल डी-जोर (50 / 75us) के विश्वव्यापी आवृत्ति बैंड का समर्थन करता है, सिग्नल शक्ति संकेतक और SNR, 32.768KHz क्रिस्टल थरथरानवाला, डिजिटल ऑटो लाभ नियंत्रण, आदि प्राप्त करता है। अंजीर दिखाता है। RDA5807M ट्यूनर का ब्लॉक डायग्राम ।
इसमें डिजिटल लो-आईएफ आर्किटेक्चर है और एक कम शोर एम्पलीफायर (LNA) को एकीकृत करता है, जो एफएम प्रसारण बैंड (50 से 115 मेगाहर्ट्ज), एक प्रोग्रामेबल कंट्रोल कंट्रोल (पीजीए), एक उच्च-रिज़ॉल्यूशन एनालॉग-टू-डिजिटल कनवर्टर, का समर्थन करता है। एक उच्च निष्ठा डिजिटल से एनालॉग कन्वर्टर्स (DACs)। सीमक ओवरलोडिंग को रोकता है और आसन्न चैनलों द्वारा निर्मित इंटरमॉड्यूलेशन उत्पादों की संख्या को सीमित करता है। PGA मिक्सर आउटपुट सिग्नल को बढ़ाता है और फिर ADCs के साथ डिजिटाइज़ किया जाता है। DSP कोर चैनल चयन, FM डिमॉड्यूलेशन, स्टीरियो MPX डिकोडर और आउटपुट ऑडियो सिग्नल का प्रबंधन करता है। RDA5807 pinout आईसी के लिए आरेख नीचे दी गई है।
मॉड्यूल 1.8 - 3.3V की बिजली आपूर्ति पर काम करता है । जब चयनित इंटरफ़ेस पर आराम और नियंत्रण करने के लिए आते हैं, तो VIO पावर अप होने पर मॉड्यूल खुद को रीसेट करता है, और 02H पते के 0 से 1 तक बिट 1 के ट्रिगर द्वारा सॉफ्ट रीसेट का भी समर्थन करता है। मॉड्यूल MCU के साथ संचार करने के लिए I2C संचार का उपयोग करता है, और इंटरफ़ेस प्रारंभ स्थिति, एक कमांड बाइट और डेटा बाइट्स के साथ शुरू होता है। RDA5807 में 13 16-बिट रजिस्टर हैं, प्रत्येक एक विशेष कार्य करता है। रजिस्टर पते 00H से शुरू होते हैं, जो कि चिप आईडी को आवंटित किया जाता है और 0FH के साथ समाप्त होता है। सभी 13 रजिस्टरों में, कुछ बिट्स आरक्षित हैं जबकि कुछ आर / डब्ल्यू हैं। प्रत्येक रजिस्टर उन्हें दिए गए बिट्स के आधार पर अलग-अलग मात्रा, बदलते चैनल आदि जैसे कार्य करता है।
जब हम पिन से बंद होते हैं तो हम इसे सर्किट से सीधे कनेक्ट नहीं कर सकते। इसलिए, मैंने एक परफेक्ट बोर्ड और कुछ पुरुष पिनों का इस्तेमाल किया और नीचे दिए गए चित्र में मॉड्यूल के प्रत्येक पिन को प्रत्येक पुरुष पिन में मिलाया।
ऑडियो एंप्लिफायर
एक ऑडियो एम्पलीफायर एक इलेक्ट्रॉनिक उपकरण है, जो निम्न-शक्ति वाले इलेक्ट्रॉनिक ऑडियो संकेतों को एक स्तर तक बढ़ाता है जहां यह लाउडस्पीकर या हेडफ़ोन चलाने के लिए पर्याप्त है। हमने LM386 का उपयोग करके एक सरल ऑडियो एम्पलीफायर बनाया है, उसी के लिए सर्किट नीचे दिखाया गया है और आप इस सर्किट के बारे में अधिक जानने के लिए लिंक की भी जांच कर सकते हैं, अन्य ऑडियो एम्पलीफायर सर्किट की भी जांच कर सकते हैं।
Arduino FM रिसीवर सर्किट डायग्राम
हमने एफएम बैंड को ट्यून करने और ऑडियो एम्पलीफायर की मात्रा को नियंत्रित करने के लिए दो पोटेंशियोमीटर का उपयोग किया । वॉल्यूम बदलने के लिए आप या तो पॉट को बदल सकते हैं, जो LM386 के 1 और 8 वें पिन के बीच या पॉट से जुड़ा होता है, जो LM386 के पिन 3 से जुड़ा होता है। नीचे दी गई तस्वीर Arduino FM Radio के लिए पूरा सर्किट आरेख दिखाती है ।
मैंने एम्पलीफायर में बहुत कम बदलाव किए। एम्पलीफायर में दो पोटेंशियोमीटर का उपयोग करने के बजाय, मैंने केवल एक का उपयोग किया। मैंने बर्तन को इंटरचेंज किया, जिसका उपयोग एक अवरोधक के साथ, गेन को बदलने के लिए किया जाता है। तो अब हमारी परियोजना में दो पोटेंशियोमीटर एक ट्यून करने के लिए, और एक वॉल्यूम बदलने के लिए है। पोटेंशियोमीटर, जिसका उपयोग चैनल को ट्यून करने के लिए किया जाता है, Arduino नैनो के साथ जुड़ा हुआ है। पॉट का केंद्र पिन Arduino नैनो के A0 पिन से जुड़ा है, और शेष दो पिन 5V से जुड़ा है और दूसरा GND से जुड़ा है। एक अन्य पॉट का उपयोग रेडियो की मात्रा को नियंत्रित करने के लिए किया जाता है और इसे उपरोक्त अंजीर में दिखाया गया है।
Arduino के पिन A4 और A5 RDA5807M के SDA और SCL पिन से जुड़े हैं। ध्यान रखें कि रिसीवर मॉड्यूल केवल 3.3V पर काम करता है। तो, नैनो के 3v3 पिन को रिसीवर मॉड्यूल के वीसीसी पिन से कनेक्ट करें। एक बार कनेक्शन किए जाने के बाद मेरा सेट-अप इस तरह दिखता था
Arduino FM रेडियो कोड स्पष्टीकरण
कोड रिसीवर मॉड्यूल को इनिशियलाइज़ करेगा और फिर प्रीसेट फ्रीक्वेंसी के साथ चैनल सेट करेगा। जब A0 पिन में नैनो द्वारा पढ़ा गया मान बदल जाता है (पॉट बदलकर) तो आवृत्ति बदल जाती है जो बदले में चैनल को बदल देती है। पूर्ण कोड पृष्ठ के अंत में दिया गया है।
हम RDA5807 के साथ संचार के लिए आवश्यक तार पुस्तकालय को जोड़कर अपना कार्यक्रम शुरू करते हैं। फिर, चर "चैनल" में हम चैनल का मान निर्धारित करते हैं। जब भी रेडियो शुरू होता है यह अपने आप इस चैनल से जुड़ जाएगा।
#शामिल
इसके बाद, हम अपने आरडीए 5807 आईसी पर प्रत्येक रजिस्टर पर बाइट्स लोड करेंगे ताकि हम अपने शुरुआती कॉन्फ़िगरेशन को सेट कर सकें। इस बिंदु पर, हम रिसीवर को रीसेट कर रहे हैं।
uint 8 0b00000000, 0b00000000, / * रजिस्टर 0x07 * / 0b01000010, 0b00000010,};
डिवाइस को रीसेट करने के बाद, हम डिवाइस को ट्यून कर सकते हैं। चैनल को ट्यूनिंग के लिए हमें केवल पहले 4 बाइट्स को प्रोग्राम करना होगा। कोड का यह हिस्सा चैनल को वांछित आवृत्ति में बदल देगा। I2C में सबसे पहले, हम ट्रांसमिशन शुरू करते हैं, डेटा लिखते हैं या पढ़ते हैं और फिर ट्रांसमिशन को समाप्त करते हैं। इस रिसीवर IC में, हमें पता निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि डेटाशीट स्पष्ट रूप से कहती है कि I2C इंटरफ़ेस में एक लिखित ऑपरेशन के लिए एक निश्चित स्टार्ट रजिस्टर यानी 0x02h और एक रीड ऑपरेशन के लिए 0x0Ah है।
uint8_t tune_config = {/ * रजिस्टर 0x02 * / 0b11000000, 0b00000001, / * रजिस्टर 0x03 * / (चैनल >> 2), ((चैनल & 0b11) << 6) - 0b00010000};
सेटअप में, हम बूट कॉन्फ़िगरेशन (रीसेट) को आरंभीकृत करते हैं और फिर चैनल को ट्यूनिंग कॉन्फ़िगरेशन बाइट्स को RDA5807M पर लिखकर ट्यूनिंग करते हैं।
शून्य सेटअप () {Serial.begin (9600); पिनमोड (A0, INPUT); / * RDA5807M FM ट्यूनर से संबंध: * / वायर.begin (); वायर.beginTransmission (RDA5807M_ADDRESS); वायर.राइट (boot_config, BOOT_CONFIG_LEN); वायर.endTransmission (); वायर.beginTransmission (RDA5807M_ADDRESS); वायर.राइट (ट्यून_कॉन्फ़िग, TUNE_CONFIG_LEN); वायर.endTransmission (); }
एक आवृत्ति के लिए ट्यूनिंग के लिए पॉट का उपयोग करते समय, मैंने एक समस्या का सामना किया था। A0 पिन द्वारा पढ़े जाने वाले मान स्थिर नहीं हैं। वांछित मूल्य के साथ एक शोर क्लब है। मैंने A0, और GND के बीच जुड़ा हुआ एक 0.1uF सिरेमिक संधारित्र का उपयोग किया, हालांकि शोर कम हो गया, यह वांछित स्तर तक नहीं है। इसलिए, मुझे कोड में कुछ बदलाव करने थे। सबसे पहले, मैंने उन रीडिंग को नोट किया जो शोर से प्रभावित हैं। मुझे पता चला कि शोर का अधिकतम मूल्य 10. है। इसलिए मैंने प्रोग्राम को इस तरह से लिखा है कि, यह केवल नए मूल्य पर विचार करेगा यदि नए मूल्य और उसी पिन के पुराने मूल्य के बीच का अंतर 10 से अधिक है और फिर वांछित चैनल को धुन।
शून्य लूप () {int channel1 = 187, avg = 0, newA; स्थिर int oldA = 0; int result = 0; newA = analogRead (A0); if ((newA - oldA)> 10 - (oldA - newA)> 10) {Serial.println (newA); if (newA! = oldA) {चैनल = channel1 + (newA / 10); myChangeChannel (चैनल); oldA = newA; }}} // लूप एंड
इस फ़ंक्शन का उपयोग ट्यून_कोनफिग सरणी के बाइट्स को सेट करने के लिए किया जाता है और फिर I2C प्रोटोकॉल का उपयोग करके डेटा को RDA5807M IC तक पहुंचाता है।
void myChangeChannel (int channel) {/ * void यदि कुछ और नहीं दिया गया है तो int * / tune_config = (चैनल >> 2); धुन_कॉन्फ़िग = ((चैनल & 0b11) << 6) - 0b00010000; तार.बेगिन (); वायर.beginTransmission (RDA5807M_ADDRESS); वायर.राइट (ट्यून_कॉन्फ़िग, TUNE_CONFIG_LEN); वायर.endTransmission (); }
Arduino FM रेडियो का कार्य करना
जब मॉड्यूल को संचालित किया जाता है, तो हमारा कोड RDA5807-M IC को रीसेट करता है और इसे वांछित उपयोगकर्ता के चैनल पर सेट करता है (ध्यान दें: इस आवृत्ति को आधार आवृत्ति के रूप में लिया जाता है, जिस पर आवृत्ति बढ़ाई जाएगी)। पोटेंशियोमीटर (A0 से जुड़ा) को बदलकर, Arduino नैनो द्वारा पढ़े गए मान बदल जाते हैं। यदि नए और पुराने मूल्य के बीच का अंतर 10 से अधिक है, तो हमारा कोड इस नए मूल्य पर विचार करेगा। पुराने मूल्य से नए मूल्य में परिवर्तन के आधार पर चैनल को बदल दिया जाता है। वॉल्यूम बढ़ाना या घटाना पोटेंशियोमीटर पर निर्भर करता है, जो पिन 3 और जीएनडी के बीच जुड़ा हुआ है।
निर्माण और कोडिंग के अंत में, आपके पास अपना एफएम रेडियो होगा। एफएम रेडियो का पूरा काम इस पृष्ठ के नीचे लिंक किए गए वीडियो में पाया जा सकता है । आशा है कि आपने इस परियोजना का आनंद लिया और कुछ उपयोगी सीखा। यदि आपके पास इस परियोजना को काम करने के लिए कोई प्रश्न हैं, तो आप उन्हें टिप्पणी अनुभाग में छोड़ सकते हैं या अन्य तकनीकी मदद के लिए हमारे मंचों का उपयोग कर सकते हैं।