विषयसूची:

UbiDots- एक ESP32 कनेक्ट करना और एकाधिक सेंसर डेटा प्रकाशित करना: 6 चरण
UbiDots- एक ESP32 कनेक्ट करना और एकाधिक सेंसर डेटा प्रकाशित करना: 6 चरण

वीडियो: UbiDots- एक ESP32 कनेक्ट करना और एकाधिक सेंसर डेटा प्रकाशित करना: 6 चरण

वीडियो: UbiDots- एक ESP32 कनेक्ट करना और एकाधिक सेंसर डेटा प्रकाशित करना: 6 चरण
वीडियो: Connecting Temperature and Humidity Sensor DHT22 to OpenHAB 2 with MQTT 2024, नवंबर
Anonim
UbiDots- एक ESP32 कनेक्ट करना और एकाधिक सेंसर डेटा प्रकाशित करना
UbiDots- एक ESP32 कनेक्ट करना और एकाधिक सेंसर डेटा प्रकाशित करना

आईओटी के क्षेत्र में ईएसपी 32 और ईएसपी 8266 बहुत परिचित एसओसी हैं। ये IoT प्रोजेक्ट्स के लिए एक तरह के वरदान हैं। ESP 32 इंटीग्रेटेड वाईफाई और BLE वाला डिवाइस है। बस अपना SSID, पासवर्ड और IP कॉन्फ़िगरेशन दें और चीजों को क्लाउड में एकीकृत करें। यहाँ इस निर्देश में, हम IoT की कुछ बुनियादी शर्तों जैसे IoT प्लेटफॉर्म, MQTT, कैप्टिव पोर्टल्स आदि पर विचार करेंगे। तो चलिए इसके माध्यम से चलते हैं

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

यहाँ इस निर्देश में, हम प्रदर्शन करने जा रहे हैं।

  • कैप्टिव पोर्टल का उपयोग करके वाईफाई और एमक्यूटीटी क्रेडेंशियल देना।
  • UbiDots में एकाधिक सेंसर डेटा का प्रकाशन और सदस्यता लेना।
  • वायरलेस तापमान और आर्द्रता सेंसर से सेंसर डेटा पढ़ना।
  • ESP32 से वेब फॉर्म होस्ट करना।
  • SPIFFS ESP32 से पढ़ना और लिखना।

चरण 1: हार्डवेयर और सॉफ्टवेयर विशिष्टता

हार्डवेयर और सॉफ्टवेयर विशिष्टता
हार्डवेयर और सॉफ्टवेयर विशिष्टता
  • ESP32 वाईफाई/बीएलई
  • वायरलेस तापमान और आर्द्रता सेंसर

सॉफ्टवेयर विशिष्टता

अरुडिनो आईडीई

चरण 2: एक कैप्टिव पोर्टल बनाना

कैप्टिव पोर्टल बनाना
कैप्टिव पोर्टल बनाना
कैप्टिव पोर्टल बनाना
कैप्टिव पोर्टल बनाना
कैप्टिव पोर्टल बनाना
कैप्टिव पोर्टल बनाना

कैप्टिव पोर्टल एक वेब पेज है जो नए जुड़े हुए उपयोगकर्ताओं को नेटवर्क संसाधनों तक व्यापक पहुंच प्रदान करने से पहले प्रदर्शित किया जाता है। यहां हम डीएचसीपी और स्टेटिक आईपी सेटिंग्स के बीच चयन करने के लिए तीन वेब पेज पेश कर रहे हैं। हम आईपी पते को ईएसपी में दो तरह से परिभाषित कर सकते हैं।

  • डीएचसीपी आईपी एड्रेस- यह डिवाइस को आईपी एड्रेस को डायनेमिक रूप से असाइन करने का एक तरीका है। ESP का डिफ़ॉल्ट IP पता 192.168.4.1. है
  • स्टेटिक आईपी एड्रेस- हमारे नेटवर्क डिवाइस को एक स्थायी आईपी एड्रेस असाइन करना। डिवाइस को स्थिर आईपी प्रदान करने के लिए हमें आईपी एड्रेस, गेटवे एड्रेस और सबनेट मास्क को परिभाषित करने की आवश्यकता होती है।

पहला वेबपेज 192.168.1.77 पर होस्ट किया जा रहा है। यहां उपयोगकर्ता को डीएचसीपी और स्टेटिक आईपी सेटिंग्स के बीच चयन करने के लिए रेडियो बटन दिए गए हैं। अगले वेबपेज में, हमें आगे बढ़ने के लिए आईपी से संबंधित जानकारी प्रदान करनी होगी।

HTML कोड

वेब पेजों के लिए HTML कोड इस Github रिपॉजिटरी में पाया जा सकता है। HTML वेब पेज बनाने के लिए आप किसी भी IDE या टेक्स्ट एडिटर जैसे Sublime या Notepad++ का उपयोग कर सकते हैं।

  • पहले डीएचसीपी और स्टेटिक आईपी सेटिंग्स के बीच चयन करने के लिए दो रेडियो बटन युक्त एक HTML वेबपेज बनाएं।
  • अब अपनी प्रतिक्रिया सबमिट करने के लिए बटन बनाएं
  • रेडियो बटन को कुछ नाम दें।
  • ईएसपी वेब सर्वर वर्ग इन नामों को तर्क के रूप में लेगा और इन तर्कों का उपयोग करके रेडियो बटन की प्रतिक्रिया प्राप्त करेगा
  • अब डिवाइस को प्रतिक्रिया भेजने के लिए 'सबमिट' बटन डालें। अन्य वेब पेजों में, हमारे पास टेक्स्ट बॉक्स हैं।
  • टेक्स्ट बॉक्स में नाम मान और इनपुट प्रकार दें और प्रतिक्रिया सबमिट करने के लिए 'सबमिट' करने के लिए सबमिट बटन जोड़ें।
  • टेक्स्ट फ़ील्ड की सामग्री को रीसेट करने के लिए 'रीसेट' बटन बनाएं।

चरण 3: वाईफाई और यूबीडॉट्स क्रेडेंशियल प्रदान करना

वाईफाई और यूबीडॉट्स क्रेडेंशियल प्रदान करना
वाईफाई और यूबीडॉट्स क्रेडेंशियल प्रदान करना

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

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

  • वेबपेज को स्थिर आईपी या डीएचसीपी आईपी पर होस्ट किया जाता है जैसा कि उपयोगकर्ता द्वारा कैप्टिव पोर्टल से चुना जाता है
  • इस वेबपेज में यूबीआईडॉट्स से डिवाइस को जोड़ने के लिए एसएसआईडी, पासवर्ड और यूबीआईडीओटीएस टोकन आईडी दर्ज करने के लिए टेक्स्ट फ़ील्ड हैं।
  • इनपुट फ़ील्ड में अपने स्थानीय वाईफाई का एसएसआईडी और पासवर्ड दर्ज करें, यूबीडॉट का टोकन आईडी दर्ज करें और सबमिट दर्ज करें
  • ये क्रेडेंशियल ESP32 के EEPROM में सहेजे जाते हैं
  • 60-सेकंड के बाद डिवाइस स्वचालित रूप से एपी से डिस्कनेक्ट हो जाएगा
  • अगली बार जब आप डिवाइस चालू करते हैं, तो उपयोगकर्ता को इस प्रक्रिया का पालन करने की आवश्यकता नहीं होती है, डिवाइस स्वचालित रूप से EEPROM से उपयोगकर्ता क्रेडेंशियल प्राप्त करेगा और सेंसर रीडिंग को UbiDots पर प्रकाशित करना जारी रखेगा।

चरण 4: सेंसर रीडिंग को यूबीडॉट्स में प्रकाशित करना

यहां हम तापमान और आर्द्रता डेटा प्राप्त करने के लिए ईएसपी 32 डिवाइस के साथ वायरलेस तापमान और आर्द्रता सेंसर का उपयोग कर रहे हैं। हम MQTT प्रोटोकॉल का उपयोग करके डेटा UbiDots को भेज रहे हैं। MQTT अनुरोध और प्रतिक्रिया के बजाय एक प्रकाशन और सदस्यता तंत्र का अनुसरण करता है। यह HTTP से तेज और विश्वसनीय है। यह निम्नानुसार काम करता है।

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

#परिभाषित करें _TASK_TIMEOUT#शामिल करें

अनुसूचक टीएस;

//---------------कार्य -------------//कार्य tSensor(4 * TASK_SECOND, TASK_FOREVER, &taskSensorCallback, &ts, false, NULL, &taskSensorDisable); टास्क tWiFi(10* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);

टास्क 1 सेंसर वैल्यू को पढ़ने के लिए है यह टास्क 1 सेकंड तक चलता है जब तक कि यह 10 सेकंड के टाइमआउट तक नहीं पहुंच जाता।

  • जब टास्क 1 का समय समाप्त हो जाता है तो हम स्थानीय वाईफाई और एमक्यूटीटी ब्रोकर से जुड़ रहे हैं।
  • अब टास्क 2 सक्षम है और हम टास्क 1 को अक्षम कर रहे हैं

  • टास्क 2 UbiDots MQTT ब्रोकर को सेंसर डेटा प्रकाशित करने के लिए है, यह कार्य 20 सेकंड के समय समाप्त होने तक 20 सेकंड तक चलता है
  • जब टास्क 2 अपने समय समाप्त हो जाता है तो टास्क 1 फिर से सक्षम हो जाता है और टास्क 2 अक्षम हो जाता है। यहां फिर से, हमें अद्यतन मूल्य मिल रहा है और प्रक्रिया जारी है।

I2C सेंसर डेटा पढ़ना

हमें वायरलेस टेम्परेचर और ह्यूमिडिटी सेंसर्स से 29-बाइट का फ्रेम मिल रहा है। वास्तविक तापमान और आर्द्रता डेटा प्राप्त करने के लिए इस फ्रेम में हेरफेर किया जाता है।

uint8_t डेटा [29];

डेटा [0] = सीरियल 1. पढ़ें (); देरी (के); // स्टार्ट बाइट के लिए chck अगर (डेटा [0] == 0x7E) {जबकि (! Serial1.उपलब्ध ()); के लिए (i = 1; i< 29; i++) {डेटा = Serial1.read (); देरी(1); } if(data[15]==0x7F) /////// यह जांचने के लिए कि क्या रिसिव डेटा सही है {if(data[22]==1) /////// सुनिश्चित करें कि सेंसर टाइप है सही है {

आर्द्रता = ((((डेटा [24]) * 256) + डेटा [25]) / 100.0); आर्द्रता / = 10.0; cTempint = (((uint16_t) (डेटा [26]) << 8) | डेटा [27]); cTemp = (फ्लोट) cTempint /100.0; cTemp / = 10.0; fTemp = cTemp * १.८ + ३२; fTemp / = 10.0; बैटरी = यादृच्छिक (१००, ३२७); वोल्टेज = बैटरी/100; नोडआईडी = डेटा [16];}

UbiDots MQTT API से कनेक्ट करना

MQTT प्रक्रिया के लिए हेडर फ़ाइल शामिल करें।

#शामिल

MQTT के लिए अन्य चरों को परिभाषित करें जैसे क्लाइंट का नाम, ब्रोकर का पता, टोकन आईडी (हम EEPROM से टोकन आईडी प्राप्त कर रहे हैं)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

चार mqttBroker = "things.ubidots.com";

चार पेलोड [१००]; चार विषय [१५०];

// टोकन आईडी स्टोर करने के लिए वैरिएबल बनाएं

स्ट्रिंग टोकन आईडी;

विभिन्न सेंसर डेटा संग्रहीत करने के लिए चर बनाएं और विषय को संग्रहीत करने के लिए चार चर बनाएं

#define VARIABLE_LABEL_TEMPF "tempF" // वैरिएबल लेबल को परिभाषित करें#VARIABLE_LABEL_TEMPC "tempC" को परिभाषित करें

चार विषय १ [१००]; चार विषय २ [१००]; चार विषय ३ [१००];

उल्लिखित MQTT विषय पर डेटा प्रकाशित करें, पेलोड {"tempc": {value: "tempData"}} जैसा दिखेगा।

स्प्रिंटफ (विषय 1, "% s", ""); sprintf(topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); स्प्रिंटफ (पेलोड, "% s", ""); // पेलोड स्प्रिंटफ को साफ करता है (पेलोड, "{"%s\":", VARIABLE_LABEL_TEMPC); // मूल्य जोड़ता है sprintf(पेलोड, "%s{"value\":%s}", पेलोड, str_cTemp); // मूल्य स्प्रिंटफ जोड़ता है (पेलोड, "% s}", पेलोड); // शब्दकोश कोष्ठक को बंद करता है Serial.println (पेलोड); Serial.println(client.publish(topic1, पेलोड) ? "प्रकाशित": "notpublished");

// अन्य विषय के लिए भी ऐसा ही करें

client.publish() डेटा को UbiDots में प्रकाशित करता है।

चरण 5: डेटा की कल्पना करना

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

चरण 6: कुल मिलाकर कोड

HTML और ESP32 के लिए ओवर कोड इस GitHub रिपॉजिटरी में पाया जा सकता है।

क्रेडिट

  • एनसीडी ईएसपी 32 ब्रेकआउट बोर्ड।
  • एनसीडी वायरलेस तापमान और आर्द्रता सेंसर।
  • pubsubclient
  • यूबीडॉट्स
  • कार्य अनुसूचक

सिफारिश की: