সুচিপত্র:

UbiDots- একটি ESP32 সংযোগ এবং একাধিক সেন্সর ডেটা প্রকাশ: Ste টি ধাপ
UbiDots- একটি ESP32 সংযোগ এবং একাধিক সেন্সর ডেটা প্রকাশ: Ste টি ধাপ

ভিডিও: UbiDots- একটি ESP32 সংযোগ এবং একাধিক সেন্সর ডেটা প্রকাশ: Ste টি ধাপ

ভিডিও: UbiDots- একটি ESP32 সংযোগ এবং একাধিক সেন্সর ডেটা প্রকাশ: Ste টি ধাপ
ভিডিও: Implementation of CoAP and MDNS 2024, নভেম্বর
Anonim
UbiDots- একটি ESP32 সংযোগ করছে এবং একাধিক সেন্সর ডেটা প্রকাশ করছে
UbiDots- একটি ESP32 সংযোগ করছে এবং একাধিক সেন্সর ডেটা প্রকাশ করছে

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

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

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

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

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

হার্ডওয়্যার এবং সফ্টওয়্যার স্পেসিফিকেশন
হার্ডওয়্যার এবং সফ্টওয়্যার স্পেসিফিকেশন
  • ESP32 ওয়াইফাই/BLE
  • বেতার তাপমাত্রা এবং আর্দ্রতা সেন্সর

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

Arduino IDE

ধাপ 2: একটি ক্যাপটিভ পোর্টাল তৈরি করা

একটি ক্যাপটিভ পোর্টাল তৈরি করা
একটি ক্যাপটিভ পোর্টাল তৈরি করা
একটি ক্যাপটিভ পোর্টাল তৈরি করা
একটি ক্যাপটিভ পোর্টাল তৈরি করা
একটি ক্যাপটিভ পোর্টাল তৈরি করা
একটি ক্যাপটিভ পোর্টাল তৈরি করা

একটি ক্যাপটিভ পোর্টাল হল একটি ওয়েব পেজ যা নতুন সংযুক্ত ব্যবহারকারীদের কাছে নেটওয়ার্ক রিসোর্সে বিস্তৃত অ্যাক্সেস দেওয়ার আগে প্রদর্শিত হয়। এখানে আমরা DHCP এবং স্ট্যাটিক আইপি সেটিংসের মধ্যে নির্বাচন করার জন্য তিনটি ওয়েব পেজ পরিবেশন করছি। আমরা ইএসপি -তে আইপি ঠিকানা দুটি উপায়ে সংজ্ঞায়িত করতে পারি।

  • ডিএইচসিপি আইপি অ্যাড্রেস- এটি গতিশীলভাবে আইপি অ্যাড্রেস ডিভাইসে বরাদ্দ করার একটি উপায়। ইএসপির ডিফল্ট আইপি ঠিকানা হল 192.168.4.1
  • স্ট্যাটিক আইপি ঠিকানা- আমাদের নেটওয়ার্ক ডিভাইসে একটি স্থায়ী আইপি ঠিকানা বরাদ্দ করা। ডিভাইসে স্ট্যাটিক আইপি প্রদানের জন্য আমাদের আইপি অ্যাড্রেস, গেটওয়ে অ্যাড্রেস এবং সাবনেট মাস্ক নির্ধারণ করতে হবে।

প্রথম ওয়েবপেজটি 192.168.1.77 এ হোস্ট করা হচ্ছে। এখানে ব্যবহারকারীকে ডিএইচসিপি এবং স্ট্যাটিক আইপি সেটিংসের মধ্যে নির্বাচন করার জন্য রেডিও বোতাম দেওয়া হয়। পরবর্তী ওয়েবপেজে, আমাদের আরও এগিয়ে যেতে আইপি সম্পর্কিত তথ্য প্রদান করতে হবে।

HTML কোড

ওয়েব পেজের HTML কোড এই Github সংগ্রহস্থলে পাওয়া যাবে। HTML ওয়েব পেজ তৈরিতে আপনি যে কোন IDE বা টেক্সট এডিটর যেমন Sublime বা notepad ++ ব্যবহার করতে পারেন।

  • প্রথমে একটি এইচটিএমএল ওয়েবপেজ তৈরি করুন যার মধ্যে দুটি রেডিও বোতাম রয়েছে যা DHCP এবং স্ট্যাটিক আইপি সেটিংসের মধ্যে বেছে নিতে পারে।
  • এখন আপনার প্রতিক্রিয়া জমা দিতে বোতাম তৈরি করুন
  • রেডিও বোতামে কিছু নাম দিন।
  • ESP ওয়েব সার্ভার ক্লাস এই নামগুলিকে আর্গুমেন্ট হিসেবে গ্রহণ করবে এবং এই আর্গুমেন্টগুলি ব্যবহার করে রেডিও বোতামের প্রতিক্রিয়া পাবে
  • এখন ডিভাইসে প্রতিক্রিয়া পাঠানোর জন্য একটি 'SUBMIT' বাটন.োকান অন্যান্য ওয়েব পেজে, আমাদের কাছে টেক্সট বক্স রয়েছে।
  • টেক্সট বক্সে নামের মান এবং ইনপুট টাইপ দিন এবং 'SUBMIT' এ একটি সাবমিট বোতাম যোগ করুন।
  • পাঠ্য ক্ষেত্রের সামগ্রী পুনরায় সেট করতে একটি 'রিসেট' বোতাম তৈরি করুন।

ধাপ 3: ওয়াইফাই এবং UbiDots শংসাপত্র প্রদান

ওয়াইফাই এবং UbiDots শংসাপত্র প্রদান
ওয়াইফাই এবং UbiDots শংসাপত্র প্রদান

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

এই সমস্যার সমাধানের জন্য, আমরা একটি ওয়েবপেজ হোস্ট করছি যেখানে ব্যবহারকারী উপলব্ধ নেটওয়ার্কের SSID এবং পাসওয়ার্ড জমা দিতে পারে। এটি নিম্নরূপ কাজ করে।

  • ওয়েবপেজটি স্ট্যাটিক আইপি বা ডিএইচসিপি আইপি -তে হোস্ট করা হয় যেমন ব্যবহারকারী ক্যাপটিভ পোর্টাল থেকে বেছে নিয়েছেন
  • এই ওয়েবপেজে এসএসআইডি, পাসওয়ার্ড, এবং ইউবিআইডটস টোকেন আইডি প্রবেশ করার জন্য টেক্সট ক্ষেত্র রয়েছে যাতে ডিভাইসটিকে ইউবিডটসের সাথে সংযুক্ত করা যায়।
  • ইনপুট ক্ষেত্রগুলিতে আপনার স্থানীয় ওয়াইফাই এর SSID এবং পাসওয়ার্ড লিখুন, UbiDot এর টোকেন আইডি লিখুন এবং SUBMIT লিখুন
  • এই শংসাপত্রগুলি ESP32 এর EEPROM- এ সংরক্ষিত আছে
  • 60 সেকেন্ডের পরে ডিভাইস স্বয়ংক্রিয়ভাবে AP থেকে সংযোগ বিচ্ছিন্ন হয়ে যাবে
  • পরের বার যখন আপনি ডিভাইসটি চালু করবেন, ব্যবহারকারীকে এই পদ্ধতি অনুসরণ করতে হবে না, ডিভাইসটি স্বয়ংক্রিয়ভাবে EEPROM থেকে ব্যবহারকারীর শংসাপত্র আনবে এবং UbiDots- এ সেন্সর রিডিং প্রকাশ করা চালিয়ে যাবে।

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

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

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

#সংজ্ঞা _TASK_TIMEOUT#অন্তর্ভুক্ত

সময়সূচী ts;

// --------- টাস্ক ------------ // টাস্ক সেন্সর (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];

data [0] = Serial1.read (); বিলম্ব (কে); // chck স্টার্ট বাইটের জন্য যদি (data [0] == 0x7E) {while (! Serial1.available ()); জন্য (i = 1; i <29; i ++) {data = 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 = (float) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; ব্যাটারি = এলোমেলো (100, 327); ভোল্টেজ = ব্যাটারি/100; nodeId = ডেটা [16];}

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

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

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

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

#MQTT_CLIENT_NAME "ClientVBShightime123" নির্ধারণ করুন

char mqttBroker = "things.ubidots.com";

char payload [100]; char topic [150];

// টোকেন আইডি সংরক্ষণ করতে পরিবর্তনশীল তৈরি করুন

স্ট্রিং টোকেনআইডি;

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

#ডিফাইন 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- এ ডেটা প্রকাশ করে।

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

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

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

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

ক্রেডিট

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

প্রস্তাবিত: