...

ESP8266 वाईफाई मॉड्यूल और Arduino के साथ HTTP क्वेरी बनाने के लिए लाइब्रेरी

ESP8266 वाईफाई मॉड्यूल और Arduino के साथ HTTP क्वेरी बनाने के लिए लाइब्रेरी

ESP8266 वाईफाई मॉड्यूल और Arduino के साथ HTTP क्वेरी बनाने के लिए लाइब्रेरी

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

सामग्री की तालिका

    El ESP8266 वाईफाई मॉड्यूल यह एक बहुत ही किफायती विकल्प है, जिसका प्रदर्शन माइक्रोकंट्रोलर्स के साथ उपयोग के लिए बहुत उपयुक्त है और एटी कमांड के साथ काम करने में बहुत आसान है।

    HTTP अनुरोधों के साथ इसके उपयोग को व्यवस्थित करने के लिए, मैंने एक छोटी लाइब्रेरी विकसित की है जो मेरे स्लीप मैनेजमेंट डिवाइस प्रोजेक्ट (जिसे मैंने स्लीपमैनेजर कहा है) की जरूरतों का समर्थन करता है क्योंकि यह एक वेब सर्वर पर अपना बुनियादी ढांचा आधारित करता है जो इसे किसी ऑब्जेक्ट तक विस्तारित करने की अनुमति देता है। IoT जैसा क्लाउड सेवा. उदाहरण के लिए, यूडीपी अनुरोध जैसी अन्य सेवाओं को लाइब्रेरी में जोड़ना मुश्किल नहीं है एनटीपी पर समय तुल्यकालन हालाँकि, जैसा कि मैंने लिंक किए गए पाठ में बताया है, यह मेरी आवश्यकताओं के लिए महत्वपूर्ण नहीं है और मैं इसे उस उद्देश्य के लिए तैयार किए गए वेब पेज पर HTTP अनुरोध के साथ स्वीकार्य रूप से हल कर सकता हूं, जैसा कि मैंने इस लाइब्रेरी का उपयोग करने के एक उदाहरण में दिखाया है।

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

    लाइब्रेरी इस तथ्य का लाभ उठाती है कि ESP8266 वाईफाई मॉड्यूल सर्वर द्वारा लौटाई गई जानकारी के साथ एक छोटे बफर को भरने के लिए डेटा रिसेप्शन की चेतावनी के रूप में एक +आईपीडी कोड लौटाता है। स्लीप मैनेजमेंट डिवाइस प्रोजेक्ट के लिए मुझे सर्वर से लौटाए गए बहुत कम डेटा का विश्लेषण करने की आवश्यकता है, इसलिए बचत करने के लिए, इसके माध्यम से चलने वाले बफर और पॉइंटर विशेष रूप से छोटे हैं; बड़ी मात्रा में डेटा संसाधित करने के लिए लाइब्रेरी का पुन: उपयोग करने के लिए यह पहली चीजों में से एक होगी जिसे आपको बदलना होगा।

    जो फ़ंक्शन सार्वजनिक रूप से सामने आते हैं वे (1) मॉड्यूल की स्थिति जानने की अनुमति देते हैं: यह कनेक्ट है या नहीं, बफर में डेटा है या नहीं और कितना और क्या ESP8266 मॉड्यूल ने अनुरोध किया गया ऑपरेशन पूरा कर लिया है; (2) डीएचसीपी सर्वर वाले नेटवर्क पर वाईफाई एक्सेस प्वाइंट से कनेक्ट करें और (3) HTTP GET और POST अनुरोध करें, हालांकि, जैसा कि आप देखेंगे, कोड को दूसरों को जोड़ना बहुत आसान बनाने के लिए डिज़ाइन किया गया है।

    आंतरिक कामकाज के संबंध में, सबसे पहले दो मैट्रिक्स बनाए जाते हैं, एक एटी ऑर्डर के साथ और दूसरा सफलता और त्रुटि के लिए अपेक्षित प्रतिक्रियाओं के साथ; फिर, लाइब्रेरी का उपयोग करने वाले प्रोग्राम को समय-समय पर फ़ंक्शन को कॉल करना होगा भेजें जो मॉड्यूल को ऑर्डर भेजने का प्रभारी होगा यदि वे उपलब्ध हैं और व्यस्त नहीं हैं और फ़ंक्शन पर हैं प्राप्त करना जो ESP8266 मॉड्यूल से प्रतिक्रियाओं को संसाधित करेगा (और यदि लागू हो तो इसके माध्यम से HTTP सर्वर से)

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

    यह जानने के लिए कि क्या अनुरोधित ऑपरेशन समाप्त हो गया है, प्रोग्राम फ़ंक्शन का उपयोग कर सकता है ऑपरेशन_समाप्त और उस स्थिति में दूसरा भेजें या परिणामी डेटा का उपयोग करें जिसके लिए फ़ंक्शन का उपयोग किया जाता है read_buffer, जो ऑपरेशन पूरा होने तक ESP8266 मॉड्यूल पर आए डेटा से भरे गए बफर की सामग्री लौटाता है, और फ़ंक्शन बफ़र_लंबाई जो इस डेटा की मात्रा की रिपोर्ट करता है जिसे सर्वर ने चेतावनी दी है कि इसे भेजा जा रहा है (ताकि मॉड्यूल से जानकारी को छूट दी जा सके)

    नीचे दिया गया उदाहरण प्रत्येक निश्चित समय अंतराल पर सर्वर पर डेटा भेजने के लिए ESP8266 वाईफाई मॉड्यूल के साथ HTTP क्वेरी लाइब्रेरी का उपयोग करता है (एनालॉग इनपुट को पढ़ने से प्राप्त प्रतिशत)। चूँकि इसे कोई प्रतिक्रिया प्राप्त होने की उम्मीद नहीं है, यह बफ़र का उपयोग नहीं करता है और यह ऑपरेशन को सही ढंग से पूरा करने के लिए पर्याप्त है। सर्वर पर सेंसर रीडिंग के परिणामों को संग्रहीत करने के लिए मैं अपने स्लीप मैनेजमेंट डिवाइस प्रोजेक्ट में इस प्रणाली का उपयोग करता हूं।

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

    कई परीक्षणों के बाद मैंने सत्यापित किया है कि यह प्रणाली ESP8266 वाईफाई मॉड्यूल के साथ समय सिंक्रनाइज़ेशन यह मेरी आवश्यकताओं के लिए पर्याप्त सटीक है; सबसे खराब स्थिति में 10 सेकंड से कम की त्रुटि के साथ जो मेरे मामले में कुछ हद तक अप्रासंगिक है।

    जैसा कि कोड में देखा जा सकता है, पहले बफ़र की लंबाई को क्वेरी करना आवश्यक है क्योंकि रीड इसे रीसेट करता है ताकि यह नए डेटा को संग्रहीत करने के लिए उपलब्ध हो।

    एक बार बफ़र की सामग्री को पढ़ लेने के बाद, इस उदाहरण में इसे समय प्राप्त करने के लिए संसाधित किया जाता है। सबसे पहले, ब्रेसिज़ के बीच का टेक्स्ट चुना जाता है (सर्वर कमांड का उपयोग करके प्रतिक्रिया देता है PHP प्रतिध्वनि “{“.समय().”}”) इसे "टाइम ऑब्जेक्ट" में बदल देता है और मानव प्रारूप में इससे दिनांक और समय प्राप्त करता है।

    उपयोगकर्ता की क्वेरी से प्रेरित निम्नलिखित उदाहरण प्रोग्राम का उपयोग सेवा का उपयोग करके सार्वजनिक आईपी पता खोजने के लिए किया जाता है चेकआईपी AWS (अमेज़न वेब सेवाएँ) हर पांच मिनट में.

    पिछले उदाहरणों की तरह, धारणाओं की एक श्रृंखला बनाई गई है जिन्हें उपयोग किए गए नेटवर्क कॉन्फ़िगरेशन (उदाहरण में 192.168.1.एक्स), एसएसआईडी और वाईफाई कुंजी के आधार पर बदलना होगा... खोजने का तरीका आईपी ​​​​पता बहुत सुंदर नहीं है, यह मानता है कि यह HTTP GET अनुरोध की प्रतिक्रिया की अंतिम पंक्ति है, हालांकि इसे अधिक रूढ़िवादी तरीके से करने के लिए एक एपीआई हो सकती है।


    आप कर सकते हैं Arduino Uno के साथ HTTP क्वेरी के लिए ESP8266 लाइब्रेरी डाउनलोड करें (कंसोल के बिना) और यहां से आप कर सकते हैं Arduino के लिए ESP8266 HTTP क्वेरी लाइब्रेरी डाउनलोड करें जो एक कंसोल का उपयोग करता है, अर्थात, इसे सॉफ्टवेयर द्वारा एक सीरियल पोर्ट को लागू करने या हार्डवेयर के रूप में उपयोग करने की आवश्यकता होती है, उदाहरण के लिए, एक मदरबोर्ड अरुडिनो मेगा o अरुडिनो लियोनार्डो.

    टिप्पणी पोस्ट

    आप चूक गए होंगे

    सेराफिनाइट त्वरकसेराफ़िनिट एक्सेलेरेटर द्वारा अनुकूलित
    लोगों और खोज इंजनों के लिए आकर्षक बनने के लिए साइट की उच्च गति चालू करता है।