Arduino - संचार
इस डेटा विनिमय को प्राप्त करने के लिए सैकड़ों संचार प्रोटोकॉल परिभाषित किए गए हैं। प्रत्येक प्रोटोकॉल को दो श्रेणियों में से एक में वर्गीकृत किया जा सकता है: समानांतर या धारावाहिक।
समानांतर संचार
इनपुट / आउटपुट पोर्ट के माध्यम से Arduino और बाह्य उपकरणों के बीच समानांतर कनेक्शन कई मीटर तक की छोटी दूरी के लिए आदर्श समाधान है। हालांकि, अन्य मामलों में जब लंबी दूरी के लिए दो उपकरणों के बीच संचार स्थापित करना आवश्यक होता है तो समानांतर कनेक्शन का उपयोग करना संभव नहीं होता है। समानांतर इंटरफेस एक ही समय में कई बिट्स को स्थानांतरित करते हैं। उन्हें आम तौर पर डेटा की बसों की आवश्यकता होती है - आठ, सोलह या अधिक तारों को प्रेषित करना। डेटा को 1 और 0 के विशाल, दुर्घटनाग्रस्त तरंगों में स्थानांतरित किया जाता है।
समानांतर संचार के लाभ और कमियां
समानांतर संचार निश्चित रूप से इसके फायदे हैं। यह धारावाहिक की तुलना में तेज़, सीधा और अपेक्षाकृत आसान है। हालाँकि, इसके लिए कई इनपुट / आउटपुट (I / O) पोर्ट और लाइनों की आवश्यकता होती है। यदि आपको कभी भी किसी प्रोजेक्ट को मूल Arduino Uno से मेगा में स्थानांतरित करना है, तो आप जानते हैं कि माइक्रोप्रोसेसर पर I / O लाइनें कीमती और कुछ हो सकती हैं। इसलिए, हम सीरियल संचार पसंद करते हैं, पिन रियल एस्टेट के लिए संभावित गति का त्याग करते हैं।
सीरियल कम्युनिकेशन मॉड्यूल
आज, अधिकांश Arduino बोर्ड मानक उपकरणों के रूप में धारावाहिक संचार के लिए कई अलग-अलग प्रणालियों के साथ बनाए गए हैं।
इनमें से कौन सी प्रणाली का उपयोग किया जाता है, निम्नलिखित कारकों पर निर्भर करता है -
- माइक्रोकंट्रोलर को कितने उपकरणों के साथ डेटा का आदान-प्रदान करना पड़ता है?
- डेटा एक्सचेंज कितनी तेजी से होना है?
- इन उपकरणों के बीच की दूरी क्या है?
- क्या एक साथ डेटा भेजना और प्राप्त करना आवश्यक है?
धारावाहिक संचार से संबंधित सबसे महत्वपूर्ण चीजों में से एक है Protocol, जिसे सख्ती से देखा जाना चाहिए। यह नियमों का एक सेट है, जिसे इस तरह लागू किया जाना चाहिए कि डिवाइस उन डेटा की सही व्याख्या कर सकें जो वे परस्पर विनिमय करते हैं। सौभाग्य से, Arduino स्वचालित रूप से इस बात का ध्यान रखता है, ताकि प्रोग्रामर / उपयोगकर्ता का कार्य सरल लेखन (डेटा भेजे जाने के लिए) और पढ़ने (प्राप्त डेटा) तक कम हो जाए।
सीरियल संचार के प्रकार
सीरियल संचार को और अधिक वर्गीकृत किया जा सकता है -
Synchronous - जो उपकरण सिंक्रनाइज़ हैं वे एक ही घड़ी का उपयोग करते हैं और उनका समय एक दूसरे के साथ सिंक्रनाइज़ेशन में है।
Asynchronous - जो उपकरण एसिंक्रोनस होते हैं उनकी अपनी घड़ियां होती हैं और पिछले राज्य के आउटपुट से चालू होती हैं।
यह पता लगाना आसान है कि कोई डिवाइस सिंक्रोनस है या नहीं। यदि एक ही घड़ी सभी जुड़े उपकरणों को दी जाती है, तो वे समकालिक हैं। यदि कोई क्लॉक लाइन नहीं है, तो यह एसिंक्रोनस है।
उदाहरण के लिए, UART (यूनिवर्सल एसिंक्रोनस रिसिवर ट्रांसमीटर) मॉड्यूल एसिंक्रोनस है।
अतुल्यकालिक धारावाहिक प्रोटोकॉल में कई अंतर्निहित नियम हैं। ये नियम और कुछ नहीं बल्कि तंत्र हैं जो मजबूत और त्रुटि रहित डेटा हस्तांतरण सुनिश्चित करने में मदद करते हैं। ये तंत्र, जो हमें बाहरी घड़ी संकेत से बचने के लिए मिलते हैं, वे हैं -
- तुल्यकालन बिट्स
- डेटा बिट्स
- पैरिटी बिट्स
- बॉड दर
सिंक्रोनाइज़ेशन बिट्स
सिंक्रनाइज़ेशन बिट्स डेटा के प्रत्येक पैकेट के साथ स्थानांतरित किए गए दो या तीन विशेष बिट्स हैं। वे स्टार्ट बिट और स्टॉप बिट (एस) हैं। उनके नाम के साथ सच है, ये बिट क्रमशः एक पैकेट की शुरुआत और अंत को चिह्नित करते हैं।
हमेशा केवल एक शुरुआत बिट होती है, लेकिन स्टॉप बिट्स की संख्या या तो एक या दो से कॉन्फ़िगर करने योग्य होती है (हालांकि इसे सामान्य रूप से एक पर छोड़ दिया जाता है)।
स्टार्ट बिट को हमेशा 1 से 0 तक जाने वाली एक निष्क्रिय डेटा लाइन द्वारा दर्शाया जाता है, जबकि स्टॉप बिट (एस) 1 पर लाइन को पकड़कर निष्क्रिय स्थिति में वापस संक्रमण करेगा।
डेटा बिट्स
प्रत्येक पैकेट में डेटा की मात्रा 5 से 9 बिट्स तक किसी भी आकार में सेट की जा सकती है। निश्चित रूप से, मानक डेटा आकार आपकी मूल 8-बिट बाइट है, लेकिन अन्य आकारों में उनके उपयोग हैं। 7-बिट डेटा पैकेट 8 से अधिक कुशल हो सकता है, खासकर यदि आप केवल 7-बिट ASCII वर्ण स्थानांतरित कर रहे हैं।
पैरिटी बिट्स
उपयोगकर्ता यह चुन सकता है कि समता बिट होनी चाहिए या नहीं और यदि हाँ, तो समता विषम होनी चाहिए या नहीं। यदि डेटा बिट्स में से 1 की संख्या सम है तो समता बिट 0 है। विषम समता इसके ठीक विपरीत है।
बॉड दर
बॉड दर शब्द का उपयोग प्रति सेकंड [बीपीएस] स्थानांतरित बिट्स की संख्या को दर्शाने के लिए किया जाता है। ध्यान दें कि यह बिट्स को संदर्भित करता है, बाइट्स को नहीं। यह आमतौर पर प्रोटोकॉल द्वारा आवश्यक होता है कि प्रत्येक बाइट को कई नियंत्रण बिट्स के साथ स्थानांतरित किया जाता है। इसका मतलब है कि धारावाहिक डेटा स्ट्रीम में एक बाइट में 11 बिट्स शामिल हो सकते हैं। उदाहरण के लिए, यदि बॉड दर 300 बीपीएस है, तो अधिकतम 37 और न्यूनतम 27 बाइट्स प्रति सेकंड स्थानांतरित हो सकते हैं।
अरुडिनो UART
निम्न कोड शुरू होने पर Arduino को हैलो दुनिया भेज देगा।
void setup() {
Serial.begin(9600); //set up serial library baud rate to 9600
Serial.println("hello world"); //print hello world
}
void loop() {
}
Arduino स्केच को Arduino पर अपलोड किए जाने के बाद,
सीरियल मॉनिटर के शीर्ष बॉक्स में कुछ भी लिखें और अपने कीबोर्ड पर भेजें या दर्ज करें दबाएं। यह Arduino को बाइट्स की एक श्रृंखला भेजेगा।
निम्न कोड इनपुट के रूप में इसे प्राप्त करता है।
निम्न कोड प्रदान किए गए इनपुट के आधार पर Arduino डिलीवर आउटपुट देगा।
void setup() {
Serial.begin(9600); //set up serial library baud rate to 9600
}
void loop() {
if(Serial.available()) //if number of bytes (characters) available for reading from {
serial port
Serial.print("I received:"); //print I received
Serial.write(Serial.read()); //send what you read
}
}
नोटिस जो Serial.print तथा Serial.println जबकि वास्तविक ASCII कोड वापस भेज देंगे Serial.writeवास्तविक पाठ वापस भेज देंगे। अधिक जानकारी के लिए ASCII कोड देखें।