- 433 मेगाहर्ट्ज आरएफ ट्रांसमीटर और रिसीवर मॉड्यूल:
- एनकोडर और डिकोडर्स की आवश्यकता:
- आवश्यक घटक:
- सर्किट आरेख:
- कोड स्पष्टीकरण:
सभी को नमस्कार, आज इस परियोजना में, हम आरएफ माइक्रोकंट्रोलर और ट्रांसमीटर मॉड्यूल को PIC माइक्रोकंट्रोलर के साथ इंटरफेस करेंगे और दो अलग-अलग पिक माइक्रोकंट्रोलर के बीच वायरलेस तरीके से संवाद करेंगे ।
इस परियोजना में हम निम्नलिखित बातें करेंगे: -
- हम रिसीवर के लिए ट्रांसमीटर और PIC18F4520 के लिए PIC16F877A का उपयोग करेंगे ।
- हम PIC माइक्रोकंट्रोलर के साथ कीपैड और एलसीडी को इंटरफेस करेंगे।
- ट्रांसमीटर की तरफ, हम PIC के साथ कीपैड को इंटरफेस करेंगे और डेटा ट्रांसमिट करेंगे। रिसीवर की तरफ, हम डेटा को वायरलेस रूप से प्राप्त करेंगे और दिखा देंगे कि एलसीडी पर किस कुंजी को दबाया गया है।
- हम 4 बिट डेटा संचारित करने के लिए एनकोडर और डिकोडर आईसी का उपयोग करेंगे।
- मार्केट में उपलब्ध सस्ते RF TX-RX मॉड्यूल का उपयोग करके रिसेप्शन फ्रिक्वेंसी 433Mhz होगी।
योजनाबद्ध और कोड में जाने से पहले, एनकोडर-डिकोडर आईसी के साथ आरएफ मॉड्यूल के कामकाज को समझते हैं। एलसीडी और कीपैड को पीआईसी माइक्रोकंट्रोलर के साथ इंटरफ़ेस करने के तरीके के बारे में जानने के लिए दो लेखों के नीचे से भी गुजरें:
- MPLABX और XC8 का उपयोग करते हुए PIC माइक्रोकंट्रोलर के साथ एलसीडी इंटरफेसिंग
- तस्वीर के साथ 4x4 मैट्रिक्स कीपैड इंटरफेसिंग माइक्रोकंट्रोलर
433 मेगाहर्ट्ज आरएफ ट्रांसमीटर और रिसीवर मॉड्यूल:
वे ट्रांसमीटर और रिसीवर मॉड्यूल हैं जो हम परियोजना में उपयोग कर रहे हैं। यह 433 मेगाहर्ट्ज के लिए सबसे सस्ता मॉड्यूल उपलब्ध है। ये मॉड्यूल एक चैनल में सीरियल डेटा स्वीकार करते हैं ।
यदि हम मॉड्यूल की विशिष्टताओं को देखते हैं, तो ट्रांसमीटर को इनपुट वोल्टेज के रूप में 3.5-12V ऑपरेशन के लिए रेट किया गया है और प्रेषित दूरी 20-200 मीटर है । यह 433 मेगाहर्ट्ज आवृत्ति पर एएम (ऑडियो मॉड्यूलेशन) प्रोटोकॉल में संचारित करता है । हम 10mW पावर के साथ 4KB / S की गति से डेटा ट्रांसफर कर सकते हैं ।
ऊपरी छवि में हम ट्रांसमीटर मॉड्यूल के पिन-आउट देख सकते हैं। बाएं से दाएं पिन VCC, DATA और GND हैं । हम एंटीना को भी जोड़ सकते हैं और इसे ऊपर की छवि में दर्शाए गए बिंदु पर मिलाप कर सकते हैं।
के लिए रिसीवर विनिर्देश, रिसीवर की रेटिंग है वर्तमान 5V डीसी और 4mA मौन इनपुट के रूप में। एक -105DB संवेदनशीलता के साथ प्राप्त आवृत्ति 433.92 मेगाहर्ट्ज है ।
उपरोक्त छवि में हम रिसीवर मॉड्यूल के पिन-आउट देख सकते हैं। चार पिन बाएं से दाएं, वीसीसी, डेटा, डेटा और जीएनडी हैं । वे मध्य दो पिन आंतरिक रूप से जुड़े हुए हैं। हम किसी एक या दोनों का उपयोग कर सकते हैं। लेकिन शोर युग्मन को कम करने के लिए दोनों का उपयोग करना एक अच्छा अभ्यास है।
साथ ही, डेटशीट में एक चीज का उल्लेख नहीं किया गया है, मॉड्यूल के मध्य में चर प्रारंभ करनेवाला या पॉट आवृत्ति अंशांकन के लिए उपयोग किया जाता है । यदि हम प्रेषित डेटा प्राप्त नहीं कर सकते हैं, तो संभावनाएं हैं कि संचारण और प्राप्त आवृत्तियों का मिलान नहीं किया जाता है। यह एक आरएफ सर्किट है और हमें ट्रांसमीटर को सही प्रेषित आवृत्ति बिंदु पर ट्यून करने की आवश्यकता है। इसके अलावा, ट्रांसमीटर के समान, इस मॉड्यूल में एक एंटीना पोर्ट भी है; हम लंबे समय तक स्वागत के लिए coiled रूप में तार मिलाप कर सकते हैं।
ट्रांसमिशन रेंज ट्रांसमीटर पर आपूर्ति की जाने वाली वोल्टेज और दोनों पक्षों में एंटेना की लंबाई पर निर्भर है। इस विशिष्ट परियोजना के लिए हमने बाहरी एंटीना का उपयोग नहीं किया और ट्रांसमीटर पक्ष पर 5V का उपयोग किया। हमने 5 मीटर की दूरी के साथ जाँच की और इसने पूरी तरह से काम किया।
आरएफ मॉड्यूल लंबी दूरी की दूरी के वायरलेस संचार के लिए बहुत उपयोगी हैं। एक बुनियादी आरएफ ट्रांसमीटर और रिसीवर सर्किट यहां दिखाया गया है। हमने आरएफ मॉड्यूल का उपयोग करके कई परियोजनाएं बनाई हैं:
- RF नियंत्रित घरेलू उपकरण
- Arduino का उपयोग कर ब्लूटूथ नियंत्रित खिलौना कार
- रास्पबेरी पाई का उपयोग करके आरएफ रिमोट नियंत्रित एल ई डी
एनकोडर और डिकोडर्स की आवश्यकता:
इस RF सेंसर में कुछ कमियाँ हैं: -
- एक तरह से संचार।
- केवल एक चैनल
- बहुत शोर हस्तक्षेप।
इस खामी के कारण हमने एनकोडर और डिकोडर IC, HT12D और HT12E का उपयोग किया है । डी का मतलब है डिकोडर जो रिसीवर साइड में इस्तेमाल किया जाएगा और ई इनकोडर के लिए खड़ा है जो ट्रांसमीटर साइड में इस्तेमाल किया जाएगा। यह IC 4 चैनल प्रदान करता है । इसके अलावा एन्कोडिंग और डिकोडिंग के कारण शोर का स्तर बहुत कम है।
उपरोक्त छवि में, बायां एक HT12D डिकोडर है और दायां एक HT12E, एनकोडर एक है। दोनों आईसी समान हैं। A0 से A7 का उपयोग विशेष एन्कोडिंग के लिए किया जाता है। हम उन पिनों को नियंत्रित करने और कॉन्फ़िगरेशन सेट करने के लिए माइक्रोकंट्रोलर पिन का उपयोग कर सकते हैं। उसी कॉन्फ़िगरेशन को दूसरी तरफ से मिलान करने की आवश्यकता है। यदि दोनों कॉन्फ़िगरेशन सटीक और मेल खाते हैं, तो हम डेटा प्राप्त कर सकते हैं। इन 8 पिनों को Gnd या VCC से जोड़ा जा सकता है या खुला छोड़ा जा सकता है । एनकोडर में हम जो भी कॉन्फ़िगरेशन करते हैं, हमें डिकोडर पर कनेक्शन से मेल खाना चाहिए। इस परियोजना में हम एनकोडर और डिकोडर दोनों के लिए उन 8 पिनों को खुला छोड़ देंगे। 9 और 18 पिन क्रमशः VSS और VDD हैं। हम वीटी पिन का उपयोग कर सकते हैंअधिसूचना प्रयोजनों के रूप में HT12D । इस प्रोजेक्ट के लिए हमने इसका इस्तेमाल नहीं किया। TE पिन प्रसारण के लिए सक्षम या अक्षम पिन है।
महत्वपूर्ण हिस्सा ओएससी पिन है जहां हमें प्रतिरोधों को जोड़ने की आवश्यकता होती है जो एनकोडर और डिकोडर को दोलन प्रदान करता है। डिकोडर को डिकोडर की तुलना में उच्च दोलन की आवश्यकता होती है। आमतौर पर एनकोडर रोकनेवाला मूल्य 1Meg होगा और डिकोडर मूल्य 33k है । हम अपनी परियोजना के लिए उन प्रतिरोधों का उपयोग करेंगे।
DOUT पिन HT12E पर RF ट्रांसमीटर डेटा पिन है और HT12D में DIN पिन का उपयोग RF मॉड्यूल पिन को जोड़ने के लिए किया जाता है।
में HT12E, AD8 को AD11 चार चैनल इनपुट जो परिवर्तित और क्रमानुसार आरएफ मॉड्यूल के माध्यम से प्रेषित और सटीक रिवर्स बात में क्या होता है हो जाता है HT12D, प्राप्त किया और डीकोड धारावाहिक डेटा, और हम मिल D11 के लिए 4 पिन D8 भर में 4 बिट समानांतर उत्पादन ।
आवश्यक घटक:
- 2 - ब्रेड बोर्ड
- 1 - एलसीडी 16x2
- 1 - कीपैड
- HT12D और HT12E जोड़ी
- आरएक्स-TX आरएफ मॉड्यूल
- 1- 10K प्रीसेट
- 2 - 4.7k रोकनेवाला
- 1- एम रेसिस्टर
- 1- 33k रोकनेवाला
- 2- 33pF सिरेमिक कैपेसिटर
- 1 - 20 मेगाहर्ट्ज क्रिस्टल
- बर्गस्टिक्स
- कुछ एकल तार।
- PIC16F877A MCU
- PIC18F4520 MCU
- आवृत्ति पॉट को नियंत्रित करने के लिए एक स्क्रू ड्राइवर, मानव शरीर से अछूता होना चाहिए।
सर्किट आरेख:
ट्रांसमीटर साइड के लिए सर्किट आरेख (PIC16F877A):
हमने PIC16F877A का उपयोग ट्रांसमिट करने के उद्देश्य से किया है। हेक्स कीपैड भर में जुड़े PORTB और 4 चैनलों के अंतिम 4 बिट्स भर में जुड़े PORTD । 4x4 मैट्रिक्स कीपैड को यहां से जोड़ने के बारे में और जानें।
पिन आउट इस प्रकार है-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
रिसीवर पक्ष के लिए सर्किट आरेख (PIC18F4520):
उपरोक्त छवि में, रिसीवर सर्किट दिखाया गया है। एलसीडी भर में जुड़ा हुआ है PORTB । हमने इस परियोजना के लिए PIC18F4520 के आंतरिक दोलक का उपयोग किया । 4 चैनलों के रूप में हम ट्रांसमीटर सर्किट में पहले किया था उसी तरह जुड़े हुए हैं। यहाँ PIC Microcontroller के साथ 16x2 एलसीडी को जोड़ने के बारे में अधिक जानें।
यह ट्रांसमीटर है -
और अलग ब्रेडबोर्ड में रिसीवर की तरफ -
कोड स्पष्टीकरण:
कोड के दो भाग होते हैं, एक ट्रांसमीटर के लिए होता है और एक रिसीवर के लिए होता है। आप यहाँ से पूरा कोड डाउनलोड कर सकते हैं।
आरएफ ट्रांसमीटर के लिए PIC16F877A कोड:
हमेशा की तरह सबसे पहले, हमें विन्यास माइक्रोकंट्रोलर में कॉन्फ़िगरेशन बिट्स सेट करने की आवश्यकता है, कुछ मैक्रोज़ को परिभाषित करें, जिसमें पुस्तकालयों और क्रिस्टल आवृत्ति शामिल हैं। AD8-AD11 एनकोडर आईसी के बंदरगाह के रूप में परिभाषित किया गया है RF_TX पर PORTD । आप अंत में दिए गए पूर्ण कोड में उन सभी के लिए कोड की जांच कर सकते हैं।
हमने दो कार्य किए, void system_init (शून्य) और void encode_rf_sender (char data)।
System_init पिन प्रारंभ और कीबोर्ड initializations के लिए प्रयोग किया जाता है। कीबोर्ड इनिशियलाइज़ेशन कीपैड लाइब्रेरी से कहा जाता है ।
कीपैड बंदरगाह भी परिभाषित किया गया है keypad.h । हमने TRISD = 0x00 का उपयोग करते हुए PORTD बनाया, और RF_TX पोर्ट को डिफ़ॉल्ट स्थिति के रूप में 0x00 बनाया ।
void system_init (शून्य) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
में encode_rf_sender हम बटन दबाया के आधार पर 4 पिन राज्य बदल गया है। हमने (4x4) 16 अलग-अलग बटन दबाए जाने के आधार पर 16 अलग-अलग हेक्स मान या PORTD स्टेट्स बनाए हैं ।void encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; if (डेटा == '2') RF_TX = 0x20; अगर (डेटा == '3') …………।.. …। …।
में मुख्य समारोह हम पहले प्राप्त कुंजीपटल बटन का उपयोग कर डेटा दबाया switch_press_scan () समारोह और में डेटा स्टोर कुंजी चर। उसके बाद हमने एन्कोड_rf_sender () फ़ंक्शन का उपयोग करके और PORTD स्थिति को बदलकर डेटा एन्कोड किया है ।
आरएफ रिसीवर के लिए PIC18F4520 कोड:
हमेशा की तरह, हम पहली बार PIC18f4520 में कॉन्फ़िगरेशन बिट्स सेट करते हैं । PIC16F877A से इसका थोड़ा अलग, आप संलग्न ज़िप फ़ाइल में कोड की जांच कर सकते हैं।
हमने एलसीडी हेडर फ़ाइल को शामिल किया। परिभाषित किया जाता है D8-D11 भर डिकोडर आईसी के बंदरगाह कनेक्शन PORTD का उपयोग कर #define RF_RX PORTD लाइन, कनेक्शन एक ही रूप में एनकोडर खंड में प्रयोग किया है। एलसीडी पोर्ट घोषणा भी lcd.c फ़ाइल में की जाती है।
#शामिल
जैसा कि पहले कहा गया है कि हम 18F4520 के लिए आंतरिक थरथरानवाला का उपयोग कर रहे हैं, हमने सिस्टम _ init फ़ंक्शन का उपयोग किया है जहां हमने 8 MHz के लिए आंतरिक थरथरानवाला सेट करने के लिए 18F4520 के OSCON रजिस्टर को कॉन्फ़िगर किया है । हमने एलसीडी पिन और डिकोडर पिन दोनों के लिए TRIS बिट सेट किया है । जैसा कि HT - 12D D8-D11 पोर्ट पर आउटपुट प्रदान करता है, हमें आउटपुट प्राप्त करने के लिए PORTD को इनपुट के रूप में कॉन्फ़िगर करना होगा।
void system_init (शून्य) { OSCCON = 0b01111110; // 8 मेगाहर्ट्ज, इंटोस्क // OSCTUNE = 0b01001111; // पीएलएल सक्षम, मैक्स प्रिस्कलर 8x4 = 32 मेगाहर्ट्ज टीआरएसबी = 0x00; TRISD = 0xFF; // इनपुट बिट के रूप में अंतिम 4 बिट। }
हमने 8 मेगाहर्ट्ज पर OSCON रजिस्टर को कॉन्फ़िगर किया, आउटपुट के रूप में पोर्ट बी और इनपुट के रूप में पोर्ट डी बनाया ।
नीचे फ़ंक्शन पिछले ट्रांसमीटर सेक्शन में उपयोग किए गए सटीक रिवर्स लॉजिक का उपयोग करके बनाया गया है। यहां हमें पोर्ट डी से एक ही हेक्स वैल्यू मिलती है और उस हेक्स वैल्यू से हम पहचानते हैं कि ट्रांसमीटर सेक्शन में कौन सा स्विच दबाया गया था । हम प्रत्येक कुंजी प्रेस की पहचान कर सकते हैं और एलसीडी को संवाददाता चरित्र प्रस्तुत कर सकते हैं।
void rf_analysis (अहस्ताक्षरित char recived_byte) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……। ….. …………..
Lcd_data से कहा जाता है lcd.c फ़ाइल।
में मुख्य समारोह हम पहली प्रणाली और एलसीडी आरंभ कर देगा। हमने एक चर बाइट लिया, और पोर्ट डी से प्राप्त हेक्स मूल्य को संग्रहीत किया । फिर फ़ंक्शन rf_analysis द्वारा हम एलसीडी पर चरित्र को प्रिंट कर सकते हैं।
शून्य मुख्य (शून्य) { अहस्ताक्षरित चार बाइट = 0; system_init (); lcd_init (); जबकि (1) { lcd_com (0x80); lcd_puts ("सर्किटडाइजेस्ट"); lcd_com (0xC0); बाइट = RF_RX; rf_analysis (बाइट); lcd_com (0xC0); } वापसी; }
इसे चलाने से पहले, हमने सर्किट को ट्यून किया है। सबसे पहले हमने कीपैड में ' D ' बटन दबाया है । तो, आरएफ ट्रांसमीटर द्वारा 0xF0 को लगातार प्रसारित किया जा रहा है। हमने तब रिसीवर सर्किट को ट्यून किया जब तक कि एलसीडी चरित्र ' डी ' को नहीं दिखाता । कभी-कभी निर्माता से मॉड्यूल को ठीक से ट्यून किया जाता है, कभी-कभी यह नहीं होता है। यदि सब कुछ ठीक से जुड़ा हुआ है और एलसीडी में बटन दबाया गया मूल्य नहीं मिल रहा है, तो संभावनाएं हैं कि आरएफ रिसीवर को ट्यून नहीं किया गया है। हमने अपने शरीर को शामिल करने के कारण गलत ट्यूनिंग संभावनाओं को कम करने के लिए अछूता पेचकश का उपयोग किया है।
यह है कि आप आरएफ मॉड्यूल को PIC माइक्रोकंट्रोलर को कैसे इंटरफ़ेस कर सकते हैं और आरएफ सेंसर का उपयोग करके दो पीआईसी माइक्रोकंट्रोलर के बीच संचार कर सकते हैं।
आप यहां से ट्रांसमीटर और रिसीवर के लिए पूरा कोड डाउनलोड कर सकते हैं, नीचे दिए गए प्रदर्शन वीडियो को भी देखें।