विषयसूची:

ESP8266 प्रत्यक्ष डेटा संचार: 3 चरण
ESP8266 प्रत्यक्ष डेटा संचार: 3 चरण

वीडियो: ESP8266 प्रत्यक्ष डेटा संचार: 3 चरण

वीडियो: ESP8266 प्रत्यक्ष डेटा संचार: 3 चरण
वीडियो: Arduino | Communication Two LoLin NodeMCU V3 ESP8266 (Client Server) for Controlling LED 2024, नवंबर
Anonim
ESP8266 प्रत्यक्ष डेटा संचार
ESP8266 प्रत्यक्ष डेटा संचार

परिचय

Arduinos और nRF24l01 मॉड्यूल के साथ कुछ प्रोजेक्ट करने के दौरान मैं सोच रहा था कि क्या मैं इसके बजाय ESP8266 मॉड्यूल का उपयोग करके कुछ प्रयास बचा सकता हूं। ESP8266 मॉड्यूल का लाभ यह है कि इसमें बोर्ड पर एक माइक्रो नियंत्रक होता है, इसलिए किसी अतिरिक्त Arduino बोर्ड की आवश्यकता नहीं होती है। इसके अतिरिक्त ESP8266 का मेमोरी आकार बहुत बड़ा है और गति के संबंध में ESP8266 Arduino के 16MHz के बजाय अधिकतम 160MHz पर चलता है। बेशक कुछ नकारात्मक पक्ष हैं।

ESP8266 केवल 3.3V पर चलता है, इसमें कम पिन होते हैं और Arduino के पास अच्छे एनालॉग इनपुट गायब हैं (इसमें एक है, लेकिन केवल 1.0V के लिए और 3.3V नहीं)। इसके अतिरिक्त Arduino + nRF24l01 के लिए कई और कोड उदाहरण हैं तो ESP8266 के लिए हैं, खासकर जब सीधे डेटा ट्रांसफर की बात आती है।

इसलिए एक परियोजना को ध्यान में रखते हुए, मैंने सभी WWW और HTTP सामग्री के बिना दो ESP8266 के बीच तेज़ और हल्के डेटा स्थानांतरण के विषय पर ध्यान दिया।

उदाहरणों के लिए इंटरनेट पर खोज करते समय (नीचे दिए गए अधिकांश कोड को विभिन्न स्थानों पर नेट से चुना गया था) मुझे कई सवालों का सामना करना पड़ा कि बिना अच्छे "ऐसा करें" उदाहरणों के बिना सीधे डेटा ट्रांसफर को कैसे कार्यान्वित किया जाए। कुछ उदाहरण कोड था, लेकिन ज्यादातर इस सवाल के साथ कि यह काम क्यों नहीं करता।

इसलिए कुछ पढ़ने और समझने की कोशिश करने के बाद, मैंने नीचे दिए गए उदाहरण बनाए जो दो ESP8266 के बीच डेटा के तेज़ और सरल हस्तांतरण की अनुमति देते हैं।

चरण 1: सीमाएं और पृष्ठभूमि (टीसीपी बनाम यूडीपी)

वहां पहुंचने के लिए, nRF24l01 की तुलना में कुछ सीमाओं को स्पष्ट करना होगा।

Arduino वातावरण में ESP8266 का उपयोग करने के लिए, उपयोग करने के लिए मूल पुस्तकालय ESP8266WiFi.h है। अलग-अलग हो सकते हैं, लेकिन अधिकांश उदाहरण उल्लिखित का उपयोग करते हैं। इसका उपयोग करते समय, आपको अपने संचार को वाईफाई स्तर पर लाने की आवश्यकता है।

इसलिए, संवाद करने के लिए कम से कम एक एक्सेस प्वाइंट (एपी) / सर्वर और एक क्लाइंट होना चाहिए। एपी नेटवर्क का नाम और आईपी पते प्रदान करता है और क्लाइंट इस सर्वर से जुड़ जाएगा।

तो nRF24l01 की तुलना में, जहां दोनों सिरों पर कोड कमोबेश एक जैसा है (ट्रांसमिशन चैनलों को छोड़कर) ESP8266 का कोड मौलिक रूप से अलग है, क्योंकि एक को AP के रूप में और दूसरे को क्लाइंट के रूप में कॉन्फ़िगर किया गया है।

अगला विषय यह है कि nRF24l01 को केवल कुछ बाइट्स भेजने के बजाय, ESP8266 हस्तांतरण प्रोटोकॉल के लिए देखे जाने की आवश्यकता है।

दो सामान्य उपयोग किए जाने वाले प्रोटोकॉल हैं: टीसीपी और यूडीपी।

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

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

Youtube पर कुछ अच्छे वीडियो हैं जो इसे और भी बेहतर तरीके से समझाते हैं।

इसलिए डेटा भेजते समय, अपनी ज़रूरतों को जानना ज़रूरी है:

  • गैर-दूषित डेटा, हैंडशेक द्वारा कई साथियों का प्रबंधन → टीसीपी
  • रीयल टाइम डेटा, तेज़ कनेक्शन → यूडीपी

मैंने सबसे पहले एक टीसीपी आधारित संचार (एक सर्वर और एक क्लाइंट के बीच) के कार्यान्वयन के साथ शुरुआत की। इसका परीक्षण करते समय, मुझे ट्रांसमिशन में रुकने की समस्या थी। शुरुआत में डेटा का तेजी से आदान-प्रदान हुआ, फिर थोड़ी देर बाद गति में नाटकीय रूप से गिरावट आई। मैंने निष्कर्ष निकाला कि यह टीसीपी दृष्टिकोण (जो गलत था!) की एक सामान्य समस्या थी, इसलिए फिर यूडीपी के आधार पर समाधान में बदल दिया गया। अंत में मैंने दोनों को काम करने के लिए अप्रोच किया। तो दोनों समाधान प्रदान किया जाएगा।

नीचे दिए गए रेखाचित्रों में TCP और UDP के लिए समान हैं कि वे:

  • किसी भी मौजूदा वाईफाई नेटवर्क से स्वतंत्र हैं। तो यह इंटरनेट और कनेक्टेड राउटर्स से दूर कहीं भी काम करेगा।
  • सीरियल मॉनिटर के माध्यम से मुद्रित होने के लिए ASCII डेटा भेज रहे हैं।
  • ट्रांसमिशन की गति का विश्लेषण करने के लिए मिलिस () - फ़ंक्शन द्वारा प्राप्त डेटा भेज रहे हैं।
  • एकाधिक क्लाइंट के लिए परीक्षण नहीं किया जाता है (अभी नेटवर्क स्थापित करने के लिए हार्डवेयर होने के कारण)

चरण 2: हार्डवेयर

हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर

पूरे सेट अप का परीक्षण करने के लिए मैंने दो ESP8266 मॉड्यूल का उपयोग किया। एक मॉड्यूल एक ESP-01 + USB-to-UART अडैप्टर है। अन्य मॉड्यूल एक ESP-12 आधारित मॉड्यूल है जिसमें USB कनेक्शन, वोल्टेज नियामक और कुछ मज़ेदार सामान जैसे स्विच, LDR और बहु-रंग एलईडी शामिल हैं।

ESP-01 के लिए USB-to-UART मॉड्यूल को प्रोग्रामर के रूप में उपयोग करने में सक्षम होने के लिए थोड़ा संशोधित करने की आवश्यकता है (फिर से Csongor Varga द्वारा Youtube)।

रेखाचित्र चलाने के लिए, आपको ESP8266 पुस्तकालय स्थापित करने की आवश्यकता है (जैसा कि इंटरनेट में कई स्थानों पर वर्णित है)। दोनों ही मामलों में (टीसीपी और यूडीपी) एक सर्वर और क्लाइंट स्केच प्रत्येक होता है। कौन सा स्केच किस मॉड्यूल में लोड किया गया है इससे कोई फर्क नहीं पड़ता।

स्वीकृतियाँ

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

चरण 3: रेखाचित्र

कोड में टीसीपी और यूडीपी प्रत्येक के लिए दो स्केच प्रत्येक (जैसा कि समझाया गया है), एक सर्वर स्केच और क्लाइंट स्केच शामिल हैं।

सिफारिश की: