सीरियल संचार आपके Arduino को अन्य उपकरणों से बात करने में सक्षम बनाता है। डिस्कवर करें कि चार प्रोटोकॉल में से किसी का उपयोग करके उन्हें कैसे कनेक्ट और कोड किया जाए।

बड़ी Arduino परियोजनाओं पर काम करते समय, घटकों को हुक करने के लिए उपलब्ध पिनों से बाहर निकलना काफी आम है। कहते हैं कि आप पिन-भूखे डिस्प्ले मॉड्यूल को खिलाने के लिए अतिरिक्त पिन को संरक्षित करने की तत्काल आवश्यकता के साथ कई सेंसर/एक्ट्यूएटर्स को हुक करना चाहते हैं।

जब तक आप कुछ जादू नहीं करते हैं, कभी-कभी इन सभी कनेक्शनों को एक ही Arduino बोर्ड पर संभालना मुश्किल होता है - खासकर जब आप छोटे बोर्डों का उपयोग करने का निर्णय लेते हैं क्योंकि आप अंतरिक्ष के लिए दबाए जाते हैं। तभी धारावाहिक संचार चलन में आता है।

आइए जानें कि धारावाहिक संचार क्या है और वितरित प्रसंस्करण और सामान्य एकीकरण जैसे कार्यों के लिए आप इसे Arduino के साथ कैसे सेट कर सकते हैं।

सीरियल कम्युनिकेशन क्या है?

सीरियल कम्युनिकेशन दो या दो से अधिक इलेक्ट्रॉनिक उपकरणों के बीच डेटा भेजने और प्राप्त करने की एक विधि है, एक समय में एक संचार लाइन पर एक बिट। जैसा कि नाम से पता चलता है, डेटा "श्रृंखला" में भेजा जा रहा है".

instagram viewer

यहां तक ​​​​कि सिर्फ अपने पसंदीदा Arduino बोर्ड पर स्केच अपलोड करने में सक्षम होने के कारण USB पर धारावाहिक संचार का उपयोग किया जाता है।

Arduino पर सीरियल कम्युनिकेशन प्रोटोकॉल

Arduino बोर्ड अविश्वसनीय रूप से बहुमुखी हैं और उपकरणों की एक विस्तृत श्रृंखला के साथ संचार कर सकते हैं। वे चार धारावाहिक संचार प्रोटोकॉल का समर्थन करते हैं: सॉफ्ट सीरियल, एसपीआई (सीरियल पेरिफेरल इंटरफेस), मानक यूएआरटी (यूनिवर्सल एसिंक्रोनस रिसीवर-ट्रांसमीटर), और आई2सी (इंटर-इंटीग्रेटेड सर्किट)। अधिक जानकारी के लिए, हमारी व्यापक मार्गदर्शिका देखें UART, SPI और I2C सीरियल कम्युनिकेशन कैसे काम करते हैं।

यह ट्यूटोरियल यह दिखाने के लिए बुनियादी रेखाचित्रों का उपयोग करता है कि आप विभिन्न प्रोटोकॉल का उपयोग करके दो Arduino Uno बोर्डों के बीच एक सीरियल कनेक्शन कैसे सेट कर सकते हैं। अपनी विशिष्ट आवश्यकताओं को पूरा करने के लिए कोड को अनुकूलित करें।

एसपीआई (सीरियल पेरिफेरल इंटरफेस)

एसपीआई एक तुल्यकालिक धारावाहिक संचार प्रोटोकॉल है जो माइक्रोकंट्रोलर्स और परिधीय उपकरणों के बीच उच्च गति संचार की अनुमति देता है। इस प्रोटोकॉल में संचार के लिए चार तारों की आवश्यकता होती है: एससीके (सीरियल क्लॉक), मोसी (मास्टर आउट स्लेव इन), मीसो (मास्टर इन स्लेव आउट), और एसएस (गुलाम चयन)।

एसपीआई.एच इस प्रकार के संचार के लिए पुस्तकालय बहुत उपयोगी है और इसे आपके स्केच के शीर्ष पर शामिल किया जाना चाहिए।

#शामिल करना

यहाँ Arduino Uno बोर्ड पर SPI पिन हैं:

समारोह

पिन नंबर (डिजिटल)

पिन नंबर (आईसीएसपी हैडर)

राज्यमंत्री

11

4

मीसो

12

1

एससीके

13

3

एसएस

10 (डिफ़ॉल्ट)

1 (वैकल्पिक)

सीरियल कम्युनिकेशन शुरू करने के बाद, आपको कम्युनिकेशन पिन को कॉन्फिगर करना होगा।

खालीपनस्थापित करना(){
एसपीआई.शुरू(115200);
// SS, MOSI, MISO और SCK के लिए पिन मोड सेट करें
पिनमोड(एसएस, आउटपुट);
पिनमोड(मोसी, आउटपुट);
पिनमोड(मीसो, इनपुट);
पिनमोड(एससीके, आउटपुट);

// गुलाम डिवाइस को निष्क्रिय करने के लिए गुलाम चयन (एसएस) पिन उच्च सेट करें
digitalWrite(एसएस, उच्च);
}

एसएस सिग्नल का उपयोग स्लेव डिवाइस को यह बताने के लिए किया जाता है कि डेटा कब ट्रांसफर किया जा रहा है।

// दास का चयन करें
digitalWrite(एसएस, कम);

// गुलाम डिवाइस को डेटा भेजें
एसपीआई.स्थानांतरण(आंकड़े);

// गुलाम डिवाइस को अचयनित करें
digitalWrite(एसएस, उच्च);

यहाँ SPI का उपयोग करके दो Arduino बोर्डों को जोड़ने का तरीका बताया गया है।

मास्टर बोर्ड के लिए कोड:

#शामिल करना
कॉन्स्टint यहाँ स्लेव सेलेक्टपिन = 10;
खालीपनस्थापित करना(){
एसपीआई.शुरू(115200);
पिनमोड(गुलाम चयन पिन, आउटपुट);
}

खालीपनकुंडली(){
digitalWrite(गुलाम चयन पिन, कम);
एसपीआई.स्थानांतरण('एच');
digitalWrite(गुलाम चयन पिन, उच्च);
देरी(1000);
}

गुलाम बोर्ड के लिए कोड:

#शामिल करना
कॉन्स्टint यहाँ स्लेव सेलेक्टपिन = 10;
खालीपनस्थापित करना(){
एसपीआई.शुरू(115200);
पिनमोड(गुलाम चयन पिन, आउटपुट);
}

खालीपनकुंडली(){
अगर (digitalread(गुलाम चयन पिन) == कम) {
चार प्राप्त डेटा = एसपीआई.स्थानांतरण('एल');
धारावाहिक.println(प्राप्त डेटा);
}
}

सुनिश्चित करें कि आपके उपकरण उचित कॉन्फ़िगरेशन के लिए एक सामान्य आधार साझा करते हैं।

UART (यूनिवर्सल एसिंक्रोनस रिसीवर-ट्रांसमीटर)

UART एक अतुल्यकालिक धारावाहिक संचार प्रोटोकॉल है जो केवल दो तारों का उपयोग करने वाले उपकरणों के बीच संचार की अनुमति देता है: TX (ट्रांसमिट) और RX (प्राप्त करें)। यूएआरटी आमतौर पर जीपीएस मॉड्यूल, ब्लूटूथ मॉड्यूल और अन्य माइक्रोकंट्रोलर जैसे उपकरणों के साथ संचार के लिए उपयोग किया जाता है। हर Arduino बोर्ड UART के लिए कम से कम एक पोर्ट से लैस है।

लोकप्रिय Arduino बोर्डों पर UART पिन में शामिल हैं:

तख़्ता

सीरियल पिंस

सीरियल 1 पिंस

सीरियल 2 पिन

सीरियल 3 पिन

ऊनो, नैनो, मिनी

0 (आरएक्स), 1 (TX)

लागू नहीं

लागू नहीं

लागू नहीं

मेगा

0 (आरएक्स), 1 (TX)

19 (आरएक्स), 18 (टेक्सास)

17 (आरएक्स), 16 (TX)

15 (आरएक्स), 14 (टेक्सास)

आप से पूरी तालिका प्राप्त कर सकते हैं Arduino का ऑनलाइन दस्तावेज़ीकरण धारावाहिक संचार के बारे में।

सबसे पहले, अपने बोर्डों को इस तरह से कनेक्ट करें:

फिर प्रेषक बोर्ड के लिए इस कोड का उपयोग करें:

खालीपनस्थापित करना(){
धारावाहिक.शुरू(9600);
}

खालीपनकुंडली(){
// हर सेकेंड सीरियल पर एक संदेश भेजें
धारावाहिक.println("प्रेषक मंडल की ओर से नमस्कार!");
देरी(1000);
}

रिसीवर बोर्ड के लिए कोड:

खालीपनस्थापित करना(){
धारावाहिक.शुरू(9600);
}

खालीपनकुंडली(){
// जांचें कि क्या कोई आवक डेटा है
अगर (धारावाहिक.उपलब्ध() > 0) {
// आने वाले डेटा को पढ़ें और इसे सीरियल मॉनिटर पर प्रिंट करें
डोरी इनकमिंग डेटा = धारावाहिक.readString();
धारावाहिक.println(आने वाली डेटा);
}
}

Arduino Uno 5V लॉजिक लेवल पर काम करता है जबकि कंप्यूटर का RS232 पोर्ट +/-12V लॉजिक लेवल का इस्तेमाल करता है।

एक Arduino Uno को सीधे RS232 पोर्ट से कनेक्ट करना और आपके बोर्ड को नुकसान पहुंचा सकता है।

I2C (इंटर-इंटीग्रेटेड सर्किट)

I2C एक तुल्यकालिक धारावाहिक संचार प्रोटोकॉल है जो केवल दो तारों का उपयोग करके कई उपकरणों के बीच संचार की अनुमति देता है: SDA (सीरियल डेटा) और SCL (सीरियल क्लॉक)। I2C का उपयोग आमतौर पर सेंसर, EEPROMs और अन्य उपकरणों के साथ संचार के लिए किया जाता है, जिन्हें कम दूरी पर डेटा स्थानांतरित करने की आवश्यकता होती है।

Arduino Uno पर I2C पिन हैं एसडीए (ए4) और एससीएल (ए5).

हम I2C संचार का उपयोग करके दो Arduino बोर्डों के बीच संबंध स्थापित करने के लिए एक सरल कार्यक्रम बनाएंगे। लेकिन पहले, अपने बोर्डों को इस तरह कनेक्ट करें:

मास्टर बोर्ड के लिए कोड:

#शामिल करना
खालीपनस्थापित करना(){
तार.शुरू(); // मास्टर के रूप में I2C बस में शामिल हों
धारावाहिक.शुरू(9600);
}

खालीपनकुंडली(){
तार.startTransmission(9); // पता 9 के साथ गुलाम डिवाइस को प्रेषित करें
तार.लिखना('ए'); // गुलाम डिवाइस को 'ए' बाइट भेजता है
तार.endtransmission(); // प्रसारण बंद करो

देरी(500);
}

गुलाम बोर्ड के लिए कोड:

#शामिल करना
खालीपनस्थापित करना(){
तार.शुरू(9); // पता 9 के साथ I2C बस में दास के रूप में शामिल हों
तार.onReceive(प्राप्त घटना);
धारावाहिक.शुरू(9600);
}

खालीपनकुंडली(){
देरी(100);
}

खालीपनप्राप्त करें(int यहाँ बाइट्स){
जबकि(तार.उपलब्ध()) { // सभी प्राप्त बाइट्स के माध्यम से लूप करें
चार प्राप्त बाइट = तार.पढ़ना(); // प्राप्त प्रत्येक बाइट को पढ़ें
धारावाहिक.println(प्राप्तबाइट); // सीरियल मॉनिटर पर प्रिंट प्राप्त बाइट
}
}

सॉफ्टवेयरसेरियल क्या है?

Arduino SoftwareSerial लाइब्रेरी को UART संचार का अनुकरण करने के लिए विकसित किया गया था, जिससे Arduino बोर्डों पर किसी भी दो डिजिटल पिन के माध्यम से धारावाहिक संचार की अनुमति मिलती है। यह उपयोगी है जब हार्डवेयर यूएआरटी पहले से ही अन्य उपकरणों द्वारा उपयोग में है।

SoftwareSerial को सेट करने के लिए, पहले SoftwareSerial लाइब्रेरी को स्केच में शामिल करें।

#शामिल करना

फिर निर्दिष्ट करके SoftwareSerial ऑब्जेक्ट का एक उदाहरण बनाएँ आरएक्स और टेक्सास संचार के लिए उपयोग किए जाने वाले पिन।

सॉफ्टवेयरसीरियलmySerial(2, 3); // आरएक्स, TX पिन

यहाँ Arduino के लिए एक उदाहरण कोड है जो SoftwareSerial के उपयोग को प्रदर्शित करता है:

#शामिल करना
सॉफ्टवेयरसीरियलmySerial(2, 3); // आरएक्स, TX पिन
खालीपनस्थापित करना(){
धारावाहिक.शुरू(9600); // हार्डवेयर सीरियल शुरू करें
mySerial.शुरू(9600); // सॉफ्ट सीरियल शुरू करें
}

खालीपनकुंडली(){
अगर (मायसीरियल.उपलब्ध()) {
धारावाहिक.लिखना(मायसीरियल.पढ़ना()); // प्राप्त डेटा को हार्डवेयर सीरियल में भेजें
}
अगर (धारावाहिक.उपलब्ध()) {
mySerial.लिखना(धारावाहिक.पढ़ना()); // हार्डवेयर सीरियल से सॉफ्ट सीरियल में डेटा भेजें
}
}

सीरियल लाइब्रेरी

सीरियल लाइब्रेरी Arduino में एक शक्तिशाली उपकरण है जो सीरियल कनेक्शन के माध्यम से माइक्रोकंट्रोलर और कंप्यूटर या अन्य उपकरणों के बीच संचार की अनुमति देता है। कुछ सामान्य कार्यों में शामिल हैं:

समारोह

विवरण

सीरियल.बीगिन (गति)

निर्दिष्ट डेटा दर के साथ सीरियल संचार प्रारंभ करता है।

सीरियल.प्रिंट (डेटा)

ASCII टेक्स्ट के रूप में ट्रांसमिशन के लिए सीरियल पोर्ट पर डेटा भेजता है।

सीरियल.राइट (डेटा)

सीरियल पोर्ट पर कच्चा बाइनरी डेटा भेजता है।

सीरियल.उपलब्ध ()

सीरियल बफ़र से पढ़ने के लिए उपलब्ध बाइट्स की संख्या लौटाता है।

सीरियल.फ्लश ()

जारी रखने से पहले प्रसारण पूरा करने के लिए आउटगोइंग सीरियल डेटा की प्रतीक्षा करता है।

सीरियल.रीड ()

आने वाले सीरियल डेटा के पहले बाइट को पढ़ता है और इसे पूर्णांक के रूप में लौटाता है।

बॉड रेट और सीरियल डेटा फॉर्मेट

बॉड दर उस गति को संदर्भित करती है जिस पर सीरियल कनेक्शन पर डेटा स्थानांतरित किया जाता है। यह बिट्स की संख्या का प्रतिनिधित्व करता है जो प्रति सेकंड प्रसारित होते हैं। प्रेषक और रिसीवर दोनों उपकरणों पर बॉड दर समान होनी चाहिए, अन्यथा संचार खराब हो सकता है या बिल्कुल भी काम नहीं कर सकता है। Arduino के लिए सामान्य बॉड दरों में 9600, 19200, 38400 और 115200 शामिल हैं।

सीरियल डेटा फॉर्मेट सीरियल कनेक्शन पर भेजे जा रहे डेटा की संरचना को संदर्भित करता है। धारावाहिक डेटा प्रारूप के तीन मुख्य घटक हैं: बिट्स शुरू करें, डेटा बिट्स और स्टॉप बिट्स।

  • डेटा बिट्स: एकल डेटा बाइट का प्रतिनिधित्व करने के लिए उपयोग की जाने वाली बिट्स की संख्या।
  • समानता: त्रुटि जाँच के लिए उपयोग किया जाने वाला एक वैकल्पिक बिट। संचार चैनल की आवश्यकताओं के आधार पर इसे शून्य, सम या विषम समता पर सेट किया जा सकता है।
  • स्टॉप बिट्स: डेटा बाइट के अंत का संकेत देने के लिए उपयोग की जाने वाली बिट्स की संख्या।

उचित संचार सुनिश्चित करने के लिए संचारण और प्राप्त करने वाले दोनों उपकरणों पर डेटा प्रारूप समान होना चाहिए। यहां एक उदाहरण दिया गया है कि आप विशिष्ट डेटा प्रारूप कैसे सेट कर सकते हैं:

खालीपनस्थापित करना(){
// 9600 बॉड दर, 8 डेटा बिट्स, कोई समता और 1 स्टॉप बिट के साथ सीरियल कम्युनिकेशन सेट करें
धारावाहिक.शुरू(9600, सीरियल_8N1);
}

यहाँ, सीरियल_8एन1 के साथ डेटा प्रारूप का प्रतिनिधित्व करता है 8 डेटा बिट्स, कोई समानता नहीं, और 1 थोड़ा रुकें। अन्य विकल्प जैसे सीरियल_7E1, सीरियल_8O2, आदि, परियोजना की विशिष्ट आवश्यकताओं के आधार पर उपयोग किया जा सकता है।

सीरियल टॉक

Arduino बोर्ड विभिन्न धारावाहिक संचार विकल्प प्रदान करते हैं जो उपकरणों के बीच कुशल और विश्वसनीय डेटा विनिमय की अनुमति देते हैं। Arduino IDE पर धारावाहिक संचार प्रोटोकॉल कैसे सेट करें, यह समझकर आप वितरित प्रसंस्करण की शक्ति का लाभ उठा सकते हैं या अपनी परियोजनाओं में उपयोग किए जाने वाले तारों की संख्या को बहुत कम कर सकते हैं।