- RS-485 सीरियल कम्युनिकेशन प्रोटोकॉल
- आरएस -485 अरुडिनो में
- अवयव आवश्यक
- सर्किट आरेख
- RS485 सीरियल कम्युनिकेशन के लिए Arduino UNO & Arduino Nano की प्रोग्रामिंग
- सीरियल कम्युनिकेशन RS485 के साथ एलईडी ब्राइटनेस को नियंत्रित करना
माइक्रोकंट्रोलर और परिधीय उपकरणों के बीच संचार के लिए एक संचार प्रोटोकॉल चुनना एम्बेडेड सिस्टम का एक महत्वपूर्ण हिस्सा है। यह महत्वपूर्ण है क्योंकि किसी भी एम्बेडेड एप्लिकेशन का समग्र प्रदर्शन संचार साधनों पर निर्भर करता है क्योंकि यह लागत में कमी, तेजी से डेटा हस्तांतरण, लंबी दूरी की कवरेज आदि से संबंधित है।
पिछले ट्यूटोरियल में हमने Arduino में I2C संचार प्रोटोकॉल और SPI कम्युनिकेशन प्रोटोकॉल के बारे में सीखा है। अब एक और धारावाहिक संचार प्रोटोकॉल है जिसे RS-485 कहा जाता है । यह प्रोटोकॉल एक अतुल्यकालिक धारावाहिक संचार का उपयोग करता है। RS-485 का मुख्य लाभ दो उपकरणों के बीच लंबी दूरी का डेटा स्थानांतरण है। और इनका उपयोग आमतौर पर विद्युत शोरगुल वाले औद्योगिक वातावरण में किया जाता है।
इस ट्यूटोरियल में, हम RS-485 के बारे में दो Arduinos के बीच सीरियल संचार के बारे में जानेंगे और फिर RS-485 मॉड्यूल के माध्यम से ADC मान भेजकर मास्टर Arduino से एक दास Arduino से जुड़ी एलईडी की चमक को नियंत्रित करके इसे प्रदर्शित करेंगे। मास्टर Arduino में ADC मूल्यों को अलग करने के लिए एक 10k पोटेंशियोमीटर का उपयोग किया जाता है।
आरएस -485 सीरियल संचार के कामकाज को समझने के द्वारा शुरू करते हैं।
RS-485 सीरियल कम्युनिकेशन प्रोटोकॉल
RS-485 एक अतुल्यकालिक धारावाहिक संचार प्रोटोकॉल है, जिसे क्लॉक पल्स की आवश्यकता नहीं है। यह द्विआधारी डेटा को एक डिवाइस से दूसरे में स्थानांतरित करने के लिए अंतर सिग्नल नामक तकनीक का उपयोग करता है ।
तो यह अंतर सिग्नल ट्रांसफर विधि क्या है ??
विभेदक संकेत विधि एक सकारात्मक और नकारात्मक 5V का उपयोग करके एक अंतर वोल्टेज बनाकर काम करती है। यह दो तारों का उपयोग करते समय एक आधा-द्वैध संचार प्रदान करता है और पूर्ण-द्वैध को 4 चौकों के तारों की आवश्यकता होती है ।
इस विधि का उपयोग करके
- RS-485 अधिकतम 30Mbps की उच्च डेटा ट्रांसफर दर का समर्थन करता है।
- यह RS-232 प्रोटोकॉल की तुलना में अधिकतम डेटा ट्रांसफर दूरी भी प्रदान करता है। यह अधिकतम 1200 मीटर तक डेटा स्थानांतरित करता है।
- RS-232 पर RS-485 का मुख्य लाभ सिंगल मास्टर के साथ मल्टीपल स्लेव है जबकि RS-232 केवल सिंगल स्लेव का समर्थन करता है।
- इसमें RS-485 प्रोटोकॉल से जुड़े अधिकतम 32 उपकरण हो सकते हैं।
- RS-485 का एक और लाभ यह है कि यह शोर के लिए प्रतिरक्षा है क्योंकि वे हस्तांतरण के लिए अंतर सिग्नल विधि का उपयोग करते हैं।
- I2C प्रोटोकॉल की तुलना में RS-485 तेज है।
आरएस -485 अरुडिनो में
Arduino में RS-485 का उपयोग करने के लिए, RS485 को 5V MAX485 TTL नामक एक मॉड्यूल जो Maxim MAX485 IC पर आधारित है, की आवश्यकता है क्योंकि यह 1200 मीटर की लंबी दूरी पर धारावाहिक संचार की अनुमति देता है और यह द्विदिश है। आधे डुप्लेक्स मोड में इसका डेटा अंतरण दर 2. 5 एमबीपीएस है।
5V MAX485 TTL से RS485 मॉड्यूल को 5V के वोल्टेज की आवश्यकता होती है और 5V तर्क स्तर का उपयोग करता है ताकि इसे Arduino जैसे माइक्रोकंट्रोलर्स के हार्डवेयर सीरियल पोर्ट के साथ इंटरफ़ेयर किया जा सके।
इसकी निम्नलिखित विशेषताएं हैं:
- ऑपरेटिंग वोल्टेज: 5 वी
- ऑन-बोर्ड MAX485 चिप
- RS485 संचार के लिए एक कम बिजली की खपत
- स्लीव-रेट सीमित ट्रांसीवर
- 5.08 मिमी पिच 2 पी टर्मिनल
- सुविधाजनक RS-485 संचार तारों
- चिप के सभी पिनों को माइक्रोकंट्रोलर के माध्यम से नियंत्रित किया जा सकता है
- बोर्ड का आकार: 44 x 14 मिमी
RS-485 का पिन-आउट:
पिन नाम |
उपयोग |
वीसीसी |
5 वी |
ए |
नॉन-इनवर्टिंग रिसीवर इनपुट नॉन-इनवर्टिंग ड्राइवर आउटपुट |
ख |
रिसीवर इनपुट प्राप्त करना चालक उत्पादन में बदलाव |
GND |
GND (0V) |
R0 |
रिसीवर बाहर (आरएक्स पिन) |
पुन |
रिसीवर आउटपुट (कम-सक्षम) |
डे |
चालक आउटपुट (उच्च-सक्षम) |
डि |
ड्राइवर इनपुट (TX पिन) |
यह RS-485 मॉड्यूल आसानी से Arduino के साथ हस्तक्षेप किया जा सकता है। आइए Arduino 0 (RX) और 1 (TX) (In UNO, NANO) के हार्डवेयर सीरियल पोर्ट का उपयोग करें। प्रोग्रामिंग भी सरल है बस RS-485 और Serial.Read को लिखने के लिए Serial.print () का उपयोग करें RS-485 से पढ़ें।
प्रोग्रामिंग भाग को बाद में विस्तार से बताया गया है लेकिन पहले आवश्यक घटकों और सर्किट आरेख की जांच करें।
अवयव आवश्यक
- Arduino संयुक्त राष्ट्र संघ या Arduino नैनो (2)
- MAX485 TTL से RS485 कनवर्टर मॉड्यूल - (2)
- 10K पोटेंशियोमीटर
- 16x2 एलसीडी डिस्प्ले
- एलईडी
- ब्रेड बोर्ड
- तारों को जोड़ना
इस ट्यूटोरियल में Arduino Uno का उपयोग मास्टर के रूप में और Arduino नैनो का उपयोग स्लेव के रूप में किया जाता है। दो Arduino बोर्ड का उपयोग यहां किया जाता है इसलिए दो RS-485 मॉड्यूल की आवश्यकता होती है।
सर्किट आरेख
पहले RS-485 और Arduino UNO (मास्टर) के बीच सर्किट कनेक्शन:
RS-485 |
Arduino UNO |
डि |
1 (TX) |
डे पुन |
। |
R0 |
0 (RX) |
वीसीसी |
5 वी |
GND |
GND |
ए |
गुलाम आरएस -485 के ए |
ख |
गुलाम आरएस -485 के बी |
दूसरा RS-485 और अर्डुइनो नैनो (गुलाम) के बीच संबंध:
RS-485 |
Arduino UNO |
डि |
D1 (TX) |
डे पुन |
डी 8 |
R0 |
D0 (RX) |
वीसीसी |
5 वी |
GND |
GND |
ए |
मास्टर RS-485 के ए के लिए |
ख |
मास्टर आरएस -485 के बी |
एक 16x2 एलसीडी और Arduino नैनो के बीच सर्किट कनेक्शन:
16x2 एलसीडी |
अरुडिनो नैनो |
वीएसएस |
GND |
VDD |
+ 5 वी |
वि ० |
एलसीडी के कंट्रास्ट कंट्रोल के लिए पोटेंशियोमीटर सेंटर पिन |
रुपये |
डी 2 |
आरडब्ल्यू |
GND |
इ |
डी 3 |
डी 4 |
डी 4 |
D5 |
D5 |
डी 6 |
डी 6 |
डी 7 |
डी 7 |
ए |
+ 5 वी |
क |
GND |
एक 10K पोटेंशियोमीटर एनालॉग इनपुट प्रदान करने के लिए Arduino UNO के एनालॉग पिन A0 से जुड़ा है और एक एलईडी Arduino नैनो के पिन D10 से जुड़ा है।
RS485 सीरियल कम्युनिकेशन के लिए Arduino UNO & Arduino Nano की प्रोग्रामिंग
प्रोग्रामिंग के लिए दोनों बोर्डों Arduino IDE का उपयोग किया जाता है। लेकिन सुनिश्चित करें कि आपने टूल्स-> पोर्ट और बोर्ड से टूल- बोर्ड से संबंधित पोर्ट को चुना है ।
डेमो वीडियो के साथ पूरा कोड इस ट्यूटोरियल के अंत में दिया गया है। यहां हम कोड के महत्वपूर्ण भाग की व्याख्या कर रहे हैं। इस ट्यूटोरियल में दो कार्यक्रम हैं, एक Arduino UNO (मास्टर) के लिए और दूसरा Arduino नैनो (स्लेव) के लिए।
मास्टर के लिए कोड स्पष्टीकरण: Arduino UNO
मास्टर पक्ष में, बस पिन A0 पर एनालॉग इनपुट पोटेंशियोमीटर में परिवर्तन करके ले और फिर SerialWrite RS-485 बस के लिए उन मूल्यों Arduino संयुक्त राष्ट्र संघ के हार्डवेयर सीरियल बंदरगाहों (0,1) के माध्यम से।
हार्डवेयर सीरियल पिन (0,1) में सीरियल कम्युनिकेशन शुरू करने के लिए:
सीरियल.बेगिन (9600);
Arduino UNO के पिन A0 पर एनालॉग मूल्य को पढ़ने और उन्हें एक चर पीने के उपयोग में संग्रहीत करने के लिए:
int potval = analogRead (पुशवल);
सीरियल पोर्ट के लिए पॉवेल वैल्यू लिखने से पहले, RS-485 के पिन DE & RE को हाई होना चाहिए जो पिन 8 हाई बनाने के लिए Arduino UNO के पिन 8 से जुड़ा हो।
digitalWrite (enablePin, HIGH);
RS-485 मॉड्यूल से जुड़े सीरियल पोर्ट में उन मानों को रखने के लिए, निम्नलिखित कथन का उपयोग करें
सिरियल.प्रिंटल (पोटल);
दास के लिए कोड स्पष्टीकरण: Arduino नैनो
दास पक्ष में एक पूर्णांक मान मास्टर RS-485 से प्राप्त होता है जो कि Arduino Nano (Pins -0,1) के हार्डवेयर सीरियल पोर्ट पर उपलब्ध है। बस एक वैरिएबल में उन वैल्यू और स्टोर को पढ़ें। मान (0 -1023) के रूप में हैं। इसलिए इसे (0-255) में परिवर्तित किया जाता है क्योंकि PWM तकनीक का उपयोग एलईडी चमक को नियंत्रित करने के लिए किया जाता है।
फिर LED पिन D10 (यह एक PWM पिन है) में परिवर्तित किए गए मान को एनालॉग करें । इसलिए PWM एलईडी परिवर्तनों की चमक को महत्व देता है और उन मूल्यों को 16x2 एलसीडी डिस्प्ले में भी प्रदर्शित करता है।
गुलाम Arduino के RS-485 के लिए मास्टर से मान प्राप्त करने के लिए, बस RS-485 LOW के पिन DE & RE बनाएं । तो Arduino NANO का पिन D8 (enablePin) LOW बना है।
digitalWrite (enablePin, LOW);
और सीरियल पोर्ट पर उपलब्ध पूर्णांक डेटा को पढ़ने और उन्हें एक चर उपयोग में संग्रहीत करने के लिए
int pwmval = Serial.parseInt ();
अगला मान (0-1023 से 0-255) में परिवर्तित करें और उन्हें एक चर में संग्रहीत करें:
int कन्वर्ट = नक्शा (pwmval, 0,1023,0,255);
अगला D10 पिन करने के लिए एनालॉग वैल्यू (PWM) लिखें जहां एलईडी एनोड जुड़ा हुआ है:
analogWrite (ledpin, कन्वर्ट);
16x2 एलसीडी डिस्प्ले उपयोग में उन PWM मूल्य को प्रिंट करने के लिए
lcd.setCursor (0,0); lcd.print ("PWM मास्टर्स से"); lcd.setCursor (0,1); lcd.print (कन्वर्ट);
सीरियल कम्युनिकेशन RS485 के साथ एलईडी ब्राइटनेस को नियंत्रित करना
जब PWM मान को पोटेंशियोमीटर का उपयोग करके 0 पर सेट किया जाता है, तो LED बंद हो जाती है।
और पीडब्लूएममीटर का उपयोग करते हुए जब पीडब्लूएम मान 251 पर सेट किया जाता है: एलईडी को पूरी चमक के साथ चालू किया जाता है जैसा कि नीचे चित्र में दिखाया गया है:
तो यह कैसे RS485 Arduino में धारावाहिक संचार के लिए इस्तेमाल किया जा सकता है ।