- UART और RS485 संचार के बीच अंतर
- अवयव आवश्यक
- लंबी दूरी की वायर्ड संचार के लिए सर्किट आरेख
- MAX485 UART-RS485 कनवर्टर मॉड्यूल
- ईथरनेट CAT-6E केबल
- Arduino कोड स्पष्टीकरण
- निष्कर्ष
हम लंबे समय से अपनी छोटी परियोजनाओं में जहां अरूज़िनो, रास्पबेरी पाई, नोड्सएमसीयू, ईएसपी 8266, एमएसपी 430 आदि जैसे माइक्रोकंट्रोलर डेवलपमेंट बोर्ड्स का उपयोग कर रहे हैं, जहां सेंसर और बोर्ड के बीच की ज्यादातर दूरी अधिकतम सेंटीमीटर से कुछ सेंटीमीटर से अधिक नहीं होती है। इन दूरी पर, विभिन्न सेंसर मॉड्यूल, रिले, एक्ट्यूएटर और कंट्रोलर के बीच संचार को सरल जम्पर तारों पर आसानी से किया जा सकता है, जो कि माध्यम में सिग्नल विरूपण के बारे में चिंतित नहीं है और इसमें विद्युत शोर रेंगते हैं। लेकिन यदि आप 10 से 15 मीटर से अधिक की दूरी पर इन विकास बोर्डों के साथ एक नियंत्रण प्रणाली का निर्माण कर रहे हैं, तो आपको शोर और सिग्नल की शक्ति को ध्यान में रखना चाहिए क्योंकि यदि आप चाहते हैं कि आपका सिस्टम मज़बूती से काम करे, तो आप हार नहीं सकते। स्थानांतरित करते समय डेटा।
I2C और SPI जैसे सीरियल संचार प्रोटोकॉल के कई अलग-अलग प्रकार हैं जिन्हें आसानी से Arduino के साथ लागू किया जा सकता है और आज हम RS485 नामक एक और सबसे अधिक इस्तेमाल किए जाने वाले प्रोटोकॉल को देखने जा रहे हैं जो डेटा को स्थानांतरित करने के लिए उच्च शोर औद्योगिक वातावरण में बहुत अधिक उपयोग किया जाता है। एक लंबी दूरी। इस ट्यूटोरियल में, हम RS485 संचार प्रोटोकॉल के बारे में जानने जा रहे हैं और इसे अपने साथ दो Arduino नैनो के साथ कैसे लागू किया जाए और MAX485 RS485 को UART रूपांतरण मॉड्यूल में कैसे उपयोग किया जाए । पहले हमने Arduino के साथ MAX485 संचार और रास्पबेरी पाई के साथ MAX485 संचार भी किया है, आप चाहें तो उन्हें भी देख सकते हैं।
UART और RS485 संचार के बीच अंतर
अधिकांश कम लागत वाले सेंसरों और अन्य मॉड्यूल जैसे GPS, ब्लूटूथ, RFID, ESP8266, आदि, जो आमतौर पर Arduino के साथ उपयोग किए जाते हैं, बाजार में रास्पबेरी पाई UART TTL आधारित संचार का उपयोग करता है क्योंकि इसमें केवल 2 तारों TX (ट्रांसमीटर) और RX की आवश्यकता होती है (पानेवाला)। यह एक मानक संचार प्रोटोकॉल नहीं है, लेकिन यह एक भौतिक सर्किट है जिसके साथ आप अन्य बाह्य उपकरणों के साथ धारावाहिक डेटा प्रसारित और प्राप्त कर सकते हैं। यह केवल धारावाहिक डेटा प्रसारित / प्राप्त कर सकता है, इसलिए यह पहले समानांतर डेटा को धारावाहिक डेटा में परिवर्तित करता है और फिर डेटा प्रसारित करता है।
UART एक एसिंक्रोनस ट्रांसमिशन डिवाइस है, इसलिए डेटा के छोरों को स्थानांतरित करने के लिए क्रमशः प्रत्येक डेटा पैकेट के प्रारंभ और अंत में बिट्स का उपयोग करने के बजाय दो डिवाइसों के बीच डेटा को सिंक करने के लिए कोई घड़ी संकेत नहीं है। UART संचारित डेटा को पैकेट में व्यवस्थित किया जाता है। प्रत्येक पैकेट में 1 स्टार्ट बिट, 5 से 9 डेटा बिट्स (UART के आधार पर), एक वैकल्पिक समता बिट, और 1 या 1 स्टॉप बिट्स होते हैं। यह बहुत अच्छी तरह से प्रलेखित और व्यापक रूप से उपयोग किया जाता है और इसमें त्रुटि जाँच के लिए अनुमति देने के लिए समता बिट भी है। लेकिन इसकी कुछ सीमाएँ हैं क्योंकि यह कई दासों और कई स्वामी का समर्थन नहीं कर सकता है और अधिकतम डेटा फ़्रेम 9 बिट्स तक सीमित है। डेटा के हस्तांतरण के लिए, मास्टर और दास दोनों की बॉड दरें एक-दूसरे के 10% के बीच होनी चाहिए। नीचे दिखाया गया उदाहरण है कि कैसे एक चरित्र UART डेटा लाइन पर एक ट्रांसमीटर है। सिग्नल उच्च और चढ़ाव जीएनडी स्तर के खिलाफ मापा जाता है इसलिए जीएनडी स्तर को स्थानांतरित करने से डेटा ट्रांसफर पर विनाशकारी प्रभाव पड़ेगा।
दूसरी ओर, RS485 अधिक उद्योग-आधारित संचार है जो कई उपकरणों के नेटवर्क के लिए विकसित किया गया है जो लंबी दूरी पर और अधिक गति से भी उपयोग किया जा सकता है। यह वोल्टेज मापन wrt GND पिन के बजाय माप के अंतर सिग्नलिंग पद्धति पर कार्य करता है । RS485 सिग्नल फ्लोट कर रहे हैं और प्रत्येक सिग्नल एक सिग + लाइन और एक सिग-लाइन पर प्रसारित होता है।
RS485 रिसीवर सिग्नल लाइन पर निरपेक्ष वोल्टेज स्तर के बजाय दोनों लाइनों के बीच वोल्टेज अंतर की तुलना करता है। यह अच्छी तरह से काम करता है और संचार समस्याओं का एक आम स्रोत, ग्राउंड लूप के अस्तित्व को रोकता है। सबसे अच्छे परिणाम प्राप्त होते हैं अगर सिग + और सिग-लाइनों को घुमा दिया जाता है क्योंकि केबल में प्रेरित विद्युत चुम्बकीय शोर के प्रभाव को कम कर देता है और शोर के खिलाफ बहुत बेहतर प्रतिरक्षा प्रदान करता है जो RS485 को 1200 मीटर की सीमा तक डेटा संचारित करने की अनुमति देता है।। मुड़ जोड़ी भी सीधे केबलों के साथ ट्रांसमिशन गति को बहुत अधिक करने की अनुमति देती है। कम संचरण दूरी पर 35Mbps तक की गति को RS485 के साथ महसूस किया जा सकता है, हालांकि ट्रांसमिशन गति दूरी के साथ घट जाएगी। 1200 मीटर ट्रांसमिशन स्पीड पर, आप केवल 100kbps की ट्रांसमिशन स्पीड का उपयोग कर सकते हैं। इस संचार प्रोटोकॉल को साकार करने के लिए आपको एक विशेष ईथरनेट केबल की आवश्यकता होती है। ईथरनेट केबल की कई श्रेणियां हैं जिनका उपयोग हम CAT-4, CAT-5, CAT-5E, CAT-6, CAT-6A, आदि कर सकते हैं। हमारे ट्यूटोरियल में, हम CAT-6E केबल का उपयोग करने जा रहे हैं। जिसमें 24AWG तारों के 4 मुड़ जोड़े हैं और 600MHz तक का समर्थन कर सकते हैं। यह आरजे 45 कनेक्टर द्वारा दोनों सिरों पर समाप्त किया गया है। लाइन ड्राइवरों से विशिष्ट लाइन वोल्टेज का स्तर अधिकतम V 1.5 V के बारे में। 6 V का न्यूनतम होता है। रिसीवर इनपुट संवेदनशीलता sensitivity 200 mV है। V 200 mV की रेंज में शोर सामान्य मोड शोर रद्द होने के कारण अनिवार्य रूप से अवरुद्ध है। एक उदाहरण बाइट (0x3E) RS485 संचार की दो लाइनों पर कैसे स्थानांतरित किया जाता है।
अवयव आवश्यक
- 2 × MAX485 कन्वर्टर मॉड्यूल
- 2 × अरुडिनो नैनो
- 2 × 16 * 2 अल्फ़ान्यूमेरिक एलसीडी
- 2 × 10k वाइपर पोटेंशियोमीटर
- कैट -6 ई ईथरनेट केबल
- ब्रेडबोर्ड
- जम्पर तार
लंबी दूरी की वायर्ड संचार के लिए सर्किट आरेख
नीचे की छवि Arduino की लंबी दूरी की वायर्ड संचार के लिए ट्रांसमीटर और रिसीवर सर्किट आरेख को दर्शाती है । ध्यान दें कि ट्रांसमीटर और रिसीवर दोनों सर्किट समान चीज़ को समान रूप से देखते हैं जो कि इसमें लिखा कोड है। प्रदर्शन के लिए भी, हम एक ट्रांसमीटर के रूप में एक बोर्ड और एक रिसीवर के रूप में एक बोर्ड का उपयोग कर रहे हैं, लेकिन हम एक ही सेट-अप के साथ ट्रांसमीटर और रिसीवर दोनों के रूप में काम करने के लिए बोर्डों को आसानी से प्रोग्राम कर सकते हैं
उपरोक्त सर्किट के लिए कनेक्शन आरेख भी नीचे दिया गया है।
जैसा कि आप ऊपर देख सकते हैं कि एक Arduino नैनो, 16 * 2 अल्फ़ान्यूमेरिक एलसीडी, और MAX485 UART से RS485 कनवर्टर आईसी के प्रत्येक अंत में एक RJ45 कनेक्टर के माध्यम से ईथरनेट कैट -6 ई केबल से जुड़े प्रत्येक के साथ सर्किट के समान जोड़े हैं । मैंने जो केबल ट्यूटोरियल में उपयोग किया है वह लंबाई में 25 मीटर है। हम नैनो से केबल पर ट्रांसमीटर की ओर से कुछ डेटा भेजेंगे जो मास्टर मोड में काम करने वाले MAX RS485 मॉड्यूल के माध्यम से RS485 सिग्नल में परिवर्तित हो जाते हैं।
प्राप्त करने के अंत में, MAX485 कनवर्टर मॉड्यूल एक गुलाम के रूप में काम कर रहा है, और मास्टर से प्रसारण को सुनकर यह फिर से RS485 डेटा को प्राप्त करता है जो इसे प्राप्त मानक 5V TTL UART के संकेतों को प्राप्त करने वाले नैनो द्वारा पढ़ा जाता है और 16 * द्वारा प्रदर्शित किया जाता है। 2 अल्फ़ान्यूमेरिक एलसीडी इससे जुड़े।
MAX485 UART-RS485 कनवर्टर मॉड्यूल
इस UART-RS485 कनवर्टर मॉड्यूल में एक ऑन-बोर्ड MAX485 चिप है जो RS-485 संचार के लिए उपयोग की जाने वाली एक कम-शक्ति और slew-rate-limited ट्रांसीवर है। यह एकल + 5 वी बिजली की आपूर्ति पर काम करता है और रेटेड वर्तमान 300 μA है। यह टीटीएल स्तर को RS-485 स्तर में परिवर्तित करने के कार्य को कार्यान्वित करने के लिए आधे-द्वैध संचार पर काम करता है, जिसका अर्थ है कि यह किसी भी समय संचारित या प्राप्त कर सकता है, दोनों नहीं, यह 2.5Mbps की अधिकतम संचरण दर प्राप्त कर सकता है। MAX485 ट्रांसीवर ड्राइवर के अक्षम होने पर पूरी तरह भरी हुई या पूरी तरह से भरी हुई परिस्थितियों में 120μA और 500μA के बीच की आपूर्ति चालू करता है। ड्राइवर शॉर्ट-सर्किट करंट के लिए सीमित है और थर्मल शटडाउन सर्किट के माध्यम से ड्राइवर आउटपुट को उच्च प्रतिबाधा की स्थिति में रखा जा सकता है। रिसीवर इनपुट में एक विफल-सुरक्षित विशेषता है जो इनपुट ओपन सर्किट होने पर लॉजिक उच्च आउटपुट की गारंटी देता है।इसके अलावा, इसमें मजबूत विरोधी हस्तक्षेप प्रदर्शन है। इसमें चिप की वर्तमान स्थिति को प्रदर्शित करने के लिए ऑनबोर्ड एलईडी भी हैं, चाहे वह चिप संचालित हो या इसके संचारण या डेटा को डीबग करना और उपयोग करना आसान हो।
ऊपर दिया गया सर्किट आरेख बताता है कि ऑनबोर्ड MAX485 आईसी विभिन्न घटकों से कैसे जुड़ा हुआ है और यदि आपको पसंद है तो ब्रेडबोर्ड के साथ उपयोग किए जाने के लिए 0.1 इंच के मानक रिक्ति हेडर प्रदान करें।
ईथरनेट CAT-6E केबल
जब हम लंबी दूरी के डेटा स्थानांतरण के बारे में सोचते हैं, तो हम तुरंत ईथरनेट केबल के माध्यम से इंटरनेट से जुड़ने के बारे में सोचते हैं। आजकल, हम ज्यादातर इंटरनेट कनेक्टिविटी के लिए वाई-फाई का उपयोग करते हैं लेकिन पहले हम इंटरनेट से कनेक्ट करने के लिए प्रत्येक पर्सनल कंप्यूटर पर जाने वाले ईथरनेट केबल का उपयोग करते थे। सामान्य तारों पर इन ईथरनेट केबल्स का उपयोग करने के पीछे मुख्य कारण यह है कि वे उच्च दूरी पर सिग्नल के विरूपण और शोर के विरूपण से बेहतर सुरक्षा प्रदान करते हैं। उनके पास विद्युत चुम्बकीय हस्तक्षेप से बचाने के लिए इन्सुलेशन परत पर शील्डिंग जैकेट है और साथ ही तारों के प्रत्येक जोड़े को किसी भी वर्तमान लूप गठन को रोकने के लिए एक साथ मुड़ दिया जाता है और इस प्रकार शोर के खिलाफ बहुत बेहतर सुरक्षा होती है। उन्हें अक्सर 8 पिन RJ45 कनेक्टर्स के साथ समाप्त किया जाता है। ईथरनेट केबल की कई श्रेणियां हैं जिनका उपयोग हम CAT-4, CAT-5,CAT-5E, CAT-6, CAT-6A, आदि। हमारे ट्यूटोरियल में, हम CAT-6E केबल का उपयोग करने जा रहे हैं जिसमें 24AWG तारों के 4 मुड़ जोड़े हैं और 600MHz तक का समर्थन कर सकते हैं।
चित्र दिखा रहा है कि कैट -6 ई केबल के इंसुलेशन लेयर के अंदर तारों का एक जोड़ा कैसे मुड़ जाता है
CAT-6E ईथरनेट केबल के लिए आरजे -45 कनेक्टर का मतलब
Arduino कोड स्पष्टीकरण
इस परियोजना में, हम दो Arduino नैनो का उपयोग कर रहे हैं, एक एक ट्रांसमीटर के रूप में और एक एक रिसीवर के रूप में प्रत्येक 16 * 2 अल्फ़ान्यूमेरिक एलसीडी ड्राइविंग के लिए परिणाम प्रदर्शित करता है। इसलिए, Arduino कोड में, हम उस डेटा और डिस्प्ले को भेजने पर ध्यान केंद्रित करेंगे जो एलसीडी स्क्रीन पर डेटा भेजती या प्राप्त करती है।
ट्रांसमीटर साइड के लिए:
हम एलसीडी को चलाने के लिए मानक पुस्तकालय को शामिल करने के साथ शुरू करते हैं और Arduino नैनो के डी 8 पिन को आउटपुट पिन के रूप में घोषित करते हैं जिसे हम बाद में MAX485 मॉड्यूल को ट्रांसमीटर या रिसीवर के रूप में घोषित करने के लिए उपयोग करेंगे।
int enablePin = 8; int potval = 0; #शामिल
अब सेटअप भाग में आ रहे हैं। हम MAX485 मॉड्यूल को ट्रांसमीटर मोड में डालने के लिए सक्षम पिन को उच्च खींचेंगे। के रूप में यह एक आधा द्वैध आईसी है इसलिए यह दोनों एक ही समय में संचारित और प्राप्त नहीं कर सकता है। हम यहां एलसीडी को इनिशियलाइज़ भी करेंगे और एक वेलकम मैसेज प्रिंट करेंगे।
सीरियल.बेगिन (9600); // बॉड्रेट 9600 पर धारावाहिक आरंभ करें: पिनकोड (सक्षम करें, आउट); lcd.begin (16,2); lcd.print ("CIRCUIT DIGEST"); lcd.setCursor (0,1); lcd.print ("ट्रांसमीटर नैनो"); देरी (3000); lcd.clear ();
अब लूप में, हम सीरियल लाइनों पर लगातार बढ़ते पूर्णांक मान को लिखते हैं जो फिर दूसरे नैनो में प्रसारित होता है। यह मान एलसीडी पर डिस्प्ले और डीबगिंग के लिए भी प्रिंट किया गया है।
Serial.print ("भेजा गया मूल्य ="); सिरियल.प्रिंटल (पोटल); // सीरियल लिखें पॉसवाल को RS-485 बस lcd.setCursor (0,0); lcd.print ("भेजा गया मान"); lcd.setCursor (0,1); lcd.print (potval); देरी (1000); lcd.clear (); potval + = 1;
रिसीवर पक्ष:
यहां फिर से, हम एलसीडी को चलाने के लिए मानक पुस्तकालय को शामिल करने के साथ शुरू करते हैं और अरुडिनो नैनो के डी 8 पिन को आउटपुट पिन के रूप में घोषित करते हैं जिसे हम बाद में MAX485 मॉड्यूल को ट्रांसमीटर या रिसीवर के रूप में घोषित करने के लिए उपयोग करेंगे।
int enablePin = 8; #शामिल
अब सेटअप भाग में आ रहे हैं। हम MAX485 मॉड्यूल को रिसीवर मोड में डालने के लिए सक्षम पिन हाई खींचेंगे। चूंकि यह एक आधा-द्वैध आईसी है इसलिए यह एक ही समय में संचारित और प्राप्त नहीं कर सकता है। हम यहां एलसीडी को इनिशियलाइज़ भी करेंगे और एक वेलकम मैसेज प्रिंट करेंगे।
सीरियल.बेगिन (9600); // बॉड्रेट 9600 पर धारावाहिक आरंभ करें: पिनकोड (सक्षम करें, आउट); lcd.begin (16,2); lcd.print ("CIRCUIT DIGEST"); lcd.setCursor (0,1); lcd.print ("रिसीवर नैनो"); देरी (3000); digitalWrite (enablePin, LOW); // (पिन 8 हमेशा मास्टर से मूल्य प्राप्त करने के लिए कम)
अब लूप में, हम जांचते हैं कि क्या सीरियल पोर्ट पर कुछ भी उपलब्ध है और फिर डेटा को पढ़ें और चूंकि आने वाला डेटा एक पूर्णांक है, हम इसे पार्स करते हैं और कनेक्टेड एलसीडी पर प्रदर्शित करते हैं।
int pwmval = Serial.parseInt (); // मास्टर के माध्यम से प्राप्त प्राप्तकर्ता मूल्य RS-485 Serial.print ("मुझे मूल्य मिला"); सिरियल.प्रिंटल (pwmval); lcd.setCursor (0,0); lcd.print ("प्राप्त मूल्य"); lcd.setCursor (0,1); lcd.print (pwmval); देरी (1000); lcd.clear ();
निष्कर्ष
इस परियोजना के लिए हमने जो परीक्षण सेटअप का उपयोग किया है, वह नीचे पाया जा सकता है।
इस परियोजना का पूरा काम नीचे दिए गए वीडियो में पाया जा सकता है। लंबी दूरी पर डेटा स्थानांतरित करने के तरीकों को लागू करने के लिए यह विधि सरल और आसान में से एक है। इस परियोजना में, हमने केवल ९ ६०० की एक बॉड दर का उपयोग किया है जो अधिकतम हस्तांतरण की गति के तहत अच्छी तरह से है जिसे हम MAX-४ this५ मॉड्यूल के साथ प्राप्त कर सकते हैं लेकिन यह गति वहां से बाहर के अधिकांश सेंसर मॉड्यूल के लिए उपयुक्त है और हमें वास्तव में इसकी आवश्यकता नहीं है Arduino और अन्य विकास बोर्डों के साथ काम करते समय सभी अधिकतम गति जब तक आप केबल को ईथरनेट कनेक्शन के रूप में उपयोग नहीं कर रहे हैं और आपको प्राप्त होने वाली सभी बैंडविड्थ और स्थानांतरण गति की आवश्यकता होती है। अपने आप पर स्थानांतरण गति के साथ खेलने के लिए और अन्य ईथरनेट केबल प्रकारों के लिए भी एक कोशिश दे। यदि आपके कोई प्रश्न हैं, तो उन्हें नीचे टिप्पणी अनुभाग में छोड़ दें या हमारे मंचों का उपयोग करें और मैं उन्हें जवाब देने की पूरी कोशिश करूंगा। तब तक, आदियो!