সুচিপত্র:

MQTT ব্যবহার করে ওয়্যারলেস প্রেসার সেন্সর ডেটা প্রকাশ করা: 7 টি ধাপ
MQTT ব্যবহার করে ওয়্যারলেস প্রেসার সেন্সর ডেটা প্রকাশ করা: 7 টি ধাপ

ভিডিও: MQTT ব্যবহার করে ওয়্যারলেস প্রেসার সেন্সর ডেটা প্রকাশ করা: 7 টি ধাপ

ভিডিও: MQTT ব্যবহার করে ওয়্যারলেস প্রেসার সেন্সর ডেটা প্রকাশ করা: 7 টি ধাপ
ভিডিও: IOT UNIT-2||PART-1||M2M PROTOCOL||WSN||MQTT PROTOCOL 2024, নভেম্বর
Anonim
MQTT ব্যবহার করে ওয়্যারলেস প্রেসার সেন্সর ডেটা প্রকাশ করা
MQTT ব্যবহার করে ওয়্যারলেস প্রেসার সেন্সর ডেটা প্রকাশ করা

ইএসপি 32 এবং ইএসপি 8266 আইওটি ক্ষেত্রে খুব পরিচিত এসওসি। এইগুলি IoT প্রকল্পগুলির জন্য এক ধরনের বর। শুধু আপনার এসএসআইডি, পাসওয়ার্ড এবং আইপি কনফিগারেশন দিন এবং ক্লাউডে জিনিসগুলিকে সংহত করুন। এখানে এই নির্দেশে, আমরা আইওটি এর কিছু মৌলিক পদ যেমন আইওটি প্ল্যাটফর্ম, এমকিউটিটি, ক্যাপটিভ পোর্টাল ইত্যাদি নিয়ে চিন্তা করব। সুতরাং আসুন আমরা এর মাধ্যমে যাই

  • খুব সহজ কথায় আইওটি আর্কিটেকচারটি একটি এমবেডেড ডিভাইস এবং আইওটি প্ল্যাটফর্ম নিয়ে গঠিত যাতে ডিভাইসটিকে ক্লাউডে রাখা যায়। এখানে আমরা UbiDots IoT প্ল্যাটফর্ম ব্যবহার করছি সেন্সর ডেটা ভিজ্যুয়ালাইজ করতে।
  • আইপি সেটিংস এবং ব্যবহারকারীর শংসাপত্রগুলি পরিচালনা করা ব্যবহারকারীর জন্য মাথাব্যথা হতে পারে। ব্যবহারকারী যদি ওয়াইফাই শংসাপত্র পরিবর্তন করতে চান? যদি ব্যবহারকারী DHCP/স্ট্যাটিক আইপি সেটিংস পরিবর্তন করতে চায়? ESP32 প্রতিবার ফ্ল্যাশ করা নির্ভরযোগ্য নয় এবং এমনকি এই সমস্যার সমাধানও নয়। তাই আমরা ওয়াইফাই শংসাপত্র এবং অন্যান্য কনফিগারেশন সংরক্ষণ করতে ক্যাপটিভ পোর্টালের মধ্য দিয়ে যাচ্ছি।
  • MQTT এখন IoT জগতে একটি খুব সাধারণ শব্দ হয়ে উঠছে। এটি দ্রুত, শক্তিশালী এবং পাতলা স্থাপত্যের কারণে প্রকাশ এবং সাবস্ক্রাইব দ্বারা অনুরোধ এবং প্রতিক্রিয়া (HTTP) অতিক্রম করেছে।

এখানে এই নির্দেশে, আমরা প্রদর্শন করতে যাচ্ছি।

  • ক্যাপটিভ পোর্টাল ব্যবহার করে ওয়াইফাই এবং এমকিউটিটি শংসাপত্র প্রদান।
  • UbiDots- এ একাধিক সেন্সর ডেটা প্রকাশ এবং সাবস্ক্রাইব করা।
  • ওয়্যারলেস চাপ এবং তাপমাত্রা সেন্সর থেকে সেন্সর ডেটা পড়া
  • ESP32 থেকে একটি ওয়েব ফর্ম হোস্ট করা।
  • SPIFFS ESP32 থেকে পড়া এবং লেখা।

ধাপ 1: হার্ডওয়্যার এবং সফ্টওয়্যার স্পেসিফিকেশন

হার্ডওয়্যার স্পেসিফিকেশন

  • ESP32 ওয়াইফাই/BLE
  • বেতার চাপ এবং তাপমাত্রা সেন্সর

সফটওয়্যার স্পেসিফিকেশন

  • Arduino IDE
  • এক্সসিটিইউ
  • ল্যাবভিউ ইউটিলিটি

ধাপ 2: ওয়্যারলেস চাপ এবং তাপমাত্রা সেন্সর

বেতার চাপ এবং তাপমাত্রা সেন্সর
বেতার চাপ এবং তাপমাত্রা সেন্সর
বেতার চাপ এবং তাপমাত্রা সেন্সর
বেতার চাপ এবং তাপমাত্রা সেন্সর
বেতার চাপ এবং তাপমাত্রা সেন্সর
বেতার চাপ এবং তাপমাত্রা সেন্সর

বৈশিষ্ট্য

  • ইন্ডাস্ট্রিয়াল গ্রেড সেন্সর লং রেঞ্জ ওয়্যারলেস প্রেসার টেম্পারেচার সেন্সর
  • অপারেটিং রেঞ্জ 0 থেকে 14000 mbar -40 ° থেকে +85 ° C (-40 ° থেকে 185 ° F)
  • কনফিগারযোগ্য অভ্যন্তরীণ গণনা চাপ রেজোলিউশন 0.012 থেকে 0.065 mbar
  • কনফিগারযোগ্য অভ্যন্তরীণ গণনা তাপমাত্রা রেজোলিউশন 0.002 থেকে 0.012 ° সে
  • সঠিকতা ± 2.5 mbar, ± 2 ° C
  • পরম চাপ, আপেক্ষিক চাপ এবং আপেক্ষিক উচ্চতা পরিবর্তন আউটপুট
  • অন-বোর্ড অ্যান্টেনা সহ 2 মাইল লাইন অফ সাইট রেঞ্জ
  • উচ্চ লাভের অ্যান্টেনা সহ 28 মাইল পর্যন্ত সুপেরিয়র এলওএস রেঞ্জ
  • Raspberry Pi, Microsoft® Azure®, Arduino এবং আরও অনেক কিছুতে ইন্টারফেস
  • DigiMesh® ব্যবহার করে ওয়্যারলেস জাল নেটওয়ার্কিং

ল্যাবভিউ ইউটিলিটি এবং এক্সসিটিইউ ব্যবহার করে ওয়্যারলেস চাপ এবং তাপমাত্রা সেন্সর কনফিগার করা

সেন্সর দুটি মোডে চলে

  • কনফিগারেশন মোড: প্যান আইডি, বিলম্ব, পুনরায় চেষ্টা করার সংখ্যা ইত্যাদি কনফিগার করুন এই বিষয়ে আরও অনেক কিছু এই নির্দেশের আওতার বাইরে এবং পরবর্তী নির্দেশে ব্যাখ্যা করা হবে।
  • রান মোড: আমরা ডিভাইসটি রান মোডে চালাচ্ছি। এবং এই মান বিশ্লেষণ করার জন্য আমরা ল্যাবভিউ ইউটিলিটি ব্যবহার করছি

এই ল্যাবভিউ UI চমৎকার গ্রাফে মান দেখায়। এটি বর্তমান এবং অতীতের মানগুলি দেখায়। আপনি ল্যাবভিউ ইউআই ডাউনলোড করতে এই লিঙ্কে যেতে পারেন। রান মোডে যেতে ল্যান্ডিং পেজ মেনু থেকে রান আইকনে ক্লিক করুন।

ধাপ 3: ওয়াইফাই সংযোগ

ওয়াইফাই সংযোগ করা হচ্ছে
ওয়াইফাই সংযোগ করা হচ্ছে
ওয়াইফাই সংযোগ করা হচ্ছে
ওয়াইফাই সংযোগ করা হচ্ছে

আমরা ক্যাপটিভ পোর্টালটি ব্যবহার করছি ওয়াইফাই শংসাপত্র সংরক্ষণ করতে এবং আইপি সেটিংসের মাধ্যমে ঘুরতে। ক্যাপটিভ পোর্টালে বিস্তারিত পরিচিতির জন্য, আপনি নিম্নলিখিত নির্দেশাবলীর মাধ্যমে যেতে পারেন।

ক্যাপটিভ পোর্টাল আমাদের স্ট্যাটিক এবং ডিএইচসিপি সেটিংসের মধ্যে বেছে নেওয়ার বিকল্প দেয়। কেবল স্ট্যাটিক আইপি, সাবনেট মাস্ক, গেটওয়ে এবং ওয়্যারলেস সেন্সর গেটওয়ের মতো শংসাপত্রগুলি প্রবেশ করুন সেই আইপি তে কনফিগার করা হবে।

একটি ওয়েবপেজ হোস্ট করা হচ্ছে যেখানে একটি তালিকা উপলব্ধ ওয়াইফাই নেটওয়ার্ক এবং সেখানে আরএসএসআই রয়েছে। ওয়াইফাই নেটওয়ার্ক এবং পাসওয়ার্ড নির্বাচন করুন এবং জমা দিন। শংসাপত্রগুলি EEPROM এ সংরক্ষিত হবে এবং IP সেটিং SPIFFS- এ সংরক্ষিত হবে। এই নির্দেশাবলী এ আরো পাওয়া যাবে।

ধাপ 4: ESP32 এ UbiDots সেট আপ করা

ESP32 এ UbiDots সেট আপ করা হচ্ছে
ESP32 এ UbiDots সেট আপ করা হচ্ছে

এখানে আমরা ESP 32 ডিভাইসের সাথে বেতার চাপ এবং তাপমাত্রা সেন্সর ব্যবহার করে তাপমাত্রা এবং আর্দ্রতা ডেটা পেতে। আমরা MQTT প্রোটোকল ব্যবহার করে UbiDots- এ ডেটা পাঠাচ্ছি। এমকিউটিটি একটি প্রকাশ এবং সাবস্ক্রাইব প্রক্রিয়া অনুসরণ করে বরং অনুরোধ এবং প্রতিক্রিয়া। এটি HTTP এর চেয়ে দ্রুত এবং নির্ভরযোগ্য। এটি নিম্নরূপ কাজ করে।

  • আমরা সেন্সর থেকে ডেটা আনা, সেন্সর রিডিং প্রকাশ করা, এমকিউটিটি বিষয় সাবস্ক্রাইব করার মতো কাজ নির্ধারণের জন্য টাস্ক শিডিউলার ব্যবহার করছি।
  • প্রথমে, টাস্ক শিডিউলার হেডার ফাইলগুলি অন্তর্ভুক্ত করুন, এটি উদাহরণ এবং কাজগুলির সময়সূচী।
  • আমরা দুটি ভিন্ন কন্ট্রোল অপারেশন উল্লেখ করে দুটি কাজ নির্ধারণ করেছি।

#সংজ্ঞায়িত করুন _TASK_TIMEOUT#শিডিউলার টিএস অন্তর্ভুক্ত করুন; // --------- টাস্ক ------------ // টাস্ক সেন্সর (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-বাইট ফ্রেম পাচ্ছি। প্রকৃত ফ্রেম এবং আর্দ্রতার তথ্য পেতে এই ফ্রেমটি ব্যবহার করা হয়।

যদি (Serial1.available ())

{data [0] = Serial1.read (); বিলম্ব (কে); যদি (data [0] == 0x7E) {while (! Serial1.available ()); জন্য (i = 1; i <36; i ++) {data = Serial1.read (); বিলম্ব (1); } if (data [15] == 0x7F) /////// রিকিভ ডেটা সঠিক কিনা তা পরীক্ষা করার জন্য {if (data [22] == 0x06) //////// সেন্সরের ধরন নিশ্চিত করুন সঠিক {int cTemp = ((((data [24]) * 256) + data [25])); int16_t abs_pressure = ((((uint16_t) (তথ্য [26]) << 8) | তথ্য [27])*0.001); int rlt_pressure = ((((data [28]) * 256) + data [29]) * 0.001); int16_t delta_alt = ((((uint16_t) (তথ্য [30]) << 8) | তথ্য [31])*0.01); ফ্লোট ব্যাটারি = ((ডেটা [18] * 256) + ডেটা [19]); ভাসা ভোল্টেজ = 0.00322 * ব্যাটারি; সিরিয়াল.প্রিন্ট ("সেন্সর নম্বর"); Serial.println (তথ্য [16]); সিরিয়াল.প্রিন্ট ("সেন্সর টাইপ"); Serial.println (তথ্য [22]); সিরিয়াল.প্রিন্ট ("ফার্মওয়্যার সংস্করণ"); Serial.println (তথ্য [17]); সিরিয়াল.প্রিন্ট ("সেলসিয়াস তাপমাত্রা:"); Serial.print (cTemp); Serial.println ("C"); সিরিয়াল.প্রিন্ট ("পরম চাপ:"); Serial.println (abs_pressure); সিরিয়াল.প্রিন্ট ("এমবার"); সিরিয়াল.প্রিন্ট ("আপেক্ষিক চাপ:"); Serial.println (rlt_pressure); সিরিয়াল.প্রিন্ট ("এমবার"); সিরিয়াল.প্রিন্ট ("ডেল্টা উচ্চতা:"); Serial.println (delta_alt); সিরিয়াল.প্রিন্ট ("মিটার"); সিরিয়াল.প্রিন্ট ("এডিসি মান:"); Serial.println (ব্যাটারি); সিরিয়াল.প্রিন্ট ("ব্যাটারি ভোল্টেজ:"); সিরিয়াল.প্রিন্ট (ভোল্টেজ); Serial.println ("\ n"); যদি (ভোল্টেজ <1) {Serial.println ("ব্যাটারি প্রতিস্থাপনের সময়"); }}} অন্য {for (i = 0; i <36; i ++) {Serial.print (data ); সিরিয়াল.প্রিন্ট (","); বিলম্ব (1); }}}}

UbiDots MQTT API- এর সাথে সংযুক্ত হচ্ছে

MQTT প্রক্রিয়ার জন্য হেডার ফাইল অন্তর্ভুক্ত করুন।

#অন্তর্ভুক্ত

MQTT এর জন্য অন্যান্য ভেরিয়েবল সংজ্ঞায়িত করুন যেমন ক্লায়েন্টের নাম, ব্রোকার ঠিকানা, টোকেন আইডি

#ডিফাইন টোকেন "BBFF-************************************" // আপনার ইউবিডটস টোকেন#সংজ্ঞায়িত করুন MQTT_CLIENT_NAME "******************************"

char mqttBroker = "things.ubidots.com";

চর পেলোড [100]; চর বিষয় [150]; // টোকেন আইডি টোক স্টোর করার জন্য ভেরিয়েবল তৈরি করুন

ধাপ 5: UbiDots- এ সেন্সর রিডিং প্রকাশ করা

UbiDots- এ সেন্সর রিডিং প্রকাশ করা
UbiDots- এ সেন্সর রিডিং প্রকাশ করা

বিভিন্ন সেন্সর ডেটা সংরক্ষণের জন্য ভেরিয়েবল তৈরি করুন এবং বিষয় সংরক্ষণের জন্য একটি চর ভেরিয়েবল তৈরি করুন

#ডিফাইন VARIABLE_LABEL_TEMPF "tempF" // ভেরিয়েবল লেবেল অ্যাসেসিং

char topic1 [100];

char topic2 [100]; char topic3 [100];

উল্লিখিত MQTT বিষয়ে ডেটা প্রকাশ করুন, পেলোড দেখতে হবে "" tempc ": {value:" tempData "}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (পেলোড, "%s", ""); // পেলোড স্প্রিন্টফ পরিষ্কার করে (পেলোড, "{"%s / ":", VARIABLE_LABEL_TEMPC); // মান যোগ করে sprintf (পেলোড, "%s {" value / ":%s}", পেলোড, str_cTemp); // মান যোগ করে sprintf (পেলোড, "%s}", পেলোড); // অভিধান বন্ধনী বন্ধ করে দেয় Serial.println (পেলোড); Serial.println (client.publish (topic1, payload)? "Published": "notpublished"); // অন্যান্য বিষয়ের জন্যও একই কাজ করুন

client.publish () UbiDots- এ ডেটা প্রকাশ করে।

ধাপ 6: ডেটা ভিজুয়ালাইজ করা

ডেটা ভিজুয়ালাইজ করা
ডেটা ভিজুয়ালাইজ করা
  • ইউবিডটসে যান এবং আপনার অ্যাকাউন্টে লগইন করুন।
  • উপরে তালিকাভুক্ত ডেটা ট্যাব থেকে ড্যাশবোর্ডে নেভিগেট করুন।
  • এখন নতুন উইজেট যুক্ত করতে "+" আইকনে ক্লিক করুন।
  • তালিকা থেকে একটি উইজেট নির্বাচন করুন এবং একটি পরিবর্তনশীল এবং ডিভাইস যোগ করুন।
  • বিভিন্ন উইজেট ব্যবহার করে সেন্সর ডেটা ড্যাশবোর্ডে দেখা যায়।

ধাপ 7: সামগ্রিক কোড

HTML এবং ESP32 এর জন্য ওভার কোড এই GitHub সংগ্রহস্থলে পাওয়া যাবে।

ক্রেডিট

  • এনসিডি ইএসপি 32 ব্রেকআউট বোর্ড।
  • এনসিডি ওয়্যারলেস চাপ এবং তাপমাত্রা সেন্সর
  • pubsubclient
  • UbiDots
  • কাজের সূচি

প্রস্তাবিত: