সুচিপত্র:

MQTT ব্যবহার করে ওয়্যারলেস তাপমাত্রা সেন্সর দিয়ে AWS IoT দিয়ে শুরু করা: 8 টি ধাপ
MQTT ব্যবহার করে ওয়্যারলেস তাপমাত্রা সেন্সর দিয়ে AWS IoT দিয়ে শুরু করা: 8 টি ধাপ

ভিডিও: MQTT ব্যবহার করে ওয়্যারলেস তাপমাত্রা সেন্সর দিয়ে AWS IoT দিয়ে শুরু করা: 8 টি ধাপ

ভিডিও: MQTT ব্যবহার করে ওয়্যারলেস তাপমাত্রা সেন্সর দিয়ে AWS IoT দিয়ে শুরু করা: 8 টি ধাপ
ভিডিও: Standards and Security in MQTT 2024, নভেম্বর
Anonim
MQTT ব্যবহার করে ওয়্যারলেস তাপমাত্রা সেন্সর দিয়ে AWS IoT দিয়ে শুরু করা
MQTT ব্যবহার করে ওয়্যারলেস তাপমাত্রা সেন্সর দিয়ে AWS IoT দিয়ে শুরু করা

আগের ইন্সট্রাকটেবলে, আমরা বিভিন্ন ক্লাউড প্ল্যাটফর্ম যেমন Azure, Ubidots, ThingSpeak, Losant ইত্যাদি দিয়ে গিয়েছি আমরা প্রায় সব ক্লাউড প্ল্যাটফর্মে সেন্সর ডেটা ক্লাউডে পাঠানোর জন্য MQTT প্রোটোকল ব্যবহার করে আসছি। এমকিউটিটি সম্পর্কে আরও তথ্যের জন্য, HTTP প্রোটোকলের উপর এর সুবিধা এবং সুবিধাগুলি আপনি এই নির্দেশনাটি উল্লেখ করতে পারেন।

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

এই নির্দেশাবলী অনুসরণ করে:

  • আপনি আপনার IoT অ্যাপ্লিকেশনের জন্য AWS অ্যাকাউন্ট সেট আপ করতে সক্ষম হবেন
  • আপনি ESP32 কে AWS IoT কোর এর সাথে সংযুক্ত করতে পারবেন
  • MQTT এবং HTTP প্রোটোকল ব্যবহার করে বার্তা পাঠান এবং গ্রহণ করুন
  • AWS এ পাঠানো ডেটা ভিজ্যুয়ালাইজ করুন

ধাপ 1: AWS অ্যাকাউন্ট সেট আপ করা

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

AWS অ্যাকাউন্ট সেট আপ করতে এই টিউটোরিয়ালটি অনুসরণ করুন।

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

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

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

একটি AWS অ্যাকাউন্ট

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

  • ESP32
  • ওয়্যারলেস তাপমাত্রা এবং কম্পন সেন্সর
  • জিগমো গেটওয়ে রিসিভার

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

ওয়্যারলেস কম্পন এবং তাপমাত্রা সেন্সর
ওয়্যারলেস কম্পন এবং তাপমাত্রা সেন্সর

এটি একটি লং রেঞ্জ ইন্ডাস্ট্রিয়াল আইওটি ওয়্যারলেস কম্পন এবং টেম্পারেচার সেন্সর, একটি ওয়্যারলেস জাল নেটওয়ার্কিং আর্কিটেকচার ব্যবহার করে 2 মাইল রেঞ্জ পর্যন্ত গর্ব করে। একটি 16-বিট কম্পন এবং তাপমাত্রা সেন্সর অন্তর্ভুক্ত করে, এই সেন্সরটি ব্যবহারকারী-নির্ধারিত বিরতিতে অত্যন্ত নির্ভুল কম্পনের ডেটা প্রেরণ করে। এটি নিম্নলিখিত বৈশিষ্ট্য আছে:

  • Gra 32g রেঞ্জ সহ শিল্প গ্রেড 3-অক্ষ কম্পন সেন্সর
  • RMS, MAX, এবং MIN g কম্পন গণনা করে
  • লো-পাস ফিল্টার ব্যবহার করে নয়েজ রিমুভাল
  • ফ্রিকোয়েন্সি রেঞ্জ (ব্যান্ডউইথ) 12, 800 Hz পর্যন্ত
  • 25, 600Hz পর্যন্ত নমুনা হার
  • 2 মাইল ওয়্যারলেস রেঞ্জের সাথে এনক্রিপ্ট করা যোগাযোগ
  • অপারেটিং তাপমাত্রা পরিসীমা -40 থেকে +85। সে
  • ওয়াল-মাউন্টেড বা ম্যাগনেট মাউন্ট করা IP65 রেটেড এনক্লোজার ভিজ্যুয়াল স্টুডিও এবং ল্যাবভিউয়ের জন্য উদাহরণ সফ্টওয়্যার
  • এক্সটারনাল প্রোব অপশন সহ কম্পন সেন্সর
  • 4 এএ ব্যাটারি থেকে 500, 000 পর্যন্ত ট্রান্সমিশন অনেক গেটওয়ে এবং মডেম বিকল্প উপলব্ধ

ধাপ 4: ESP32 AWS ফার্মওয়্যার

AWS এর সাথে সংযোগ স্থাপন করতে এবং ডেটা পাঠানো শুরু করতে নিচের ধাপগুলি অনুসরণ করুন

  • নিম্নলিখিত Github সংগ্রহস্থল থেকে AWS লাইব্রেরি ডাউনলোড করুন
  • রেপো ক্লোন করুন এবং AWS_IOT ফাইলটি Arduino ডিরেক্টরির লাইব্রেরি ফোল্ডারে রাখুন

গিট ক্লোন

এখন আসুন কোডটি দেখুন:

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

ধাপ 5: ওয়্যারলেস কম্পন এবং তাপমাত্রা সেন্সর থেকে সেন্সর ডেটা পাওয়া

ওয়্যারলেস কম্পন এবং তাপমাত্রা সেন্সর থেকে সেন্সর ডেটা পাওয়া
ওয়্যারলেস কম্পন এবং তাপমাত্রা সেন্সর থেকে সেন্সর ডেটা পাওয়া
ওয়্যারলেস কম্পন এবং তাপমাত্রা সেন্সর থেকে সেন্সর ডেটা পাওয়া
ওয়্যারলেস কম্পন এবং তাপমাত্রা সেন্সর থেকে সেন্সর ডেটা পাওয়া

আমরা ওয়্যারলেস তাপমাত্রা এবং কম্পন সেন্সর থেকে একটি 54-বাইট ফ্রেম পাচ্ছি। প্রকৃত ফ্রেম এবং ভাইব্রেশন ডেটা পেতে এই ফ্রেমটি ব্যবহার করা হয়।

ESP32 সিরিয়াল ব্যবহারের জন্য তিনটি UART আছে

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. RX2 GPIO 16, TX2 GPIO 17

এবং 3 হার্ডওয়্যার সিরিয়াল পোর্ট

  • সিরিয়াল
  • সিরিয়াল 1
  • সিরিয়াল 2

প্রথমে, হার্ডওয়্যার সিরিয়াল হেডার ফাইলটি আরম্ভ করুন। এখানে আমরা RX2 এবং TX2 aka ব্যবহার করব। সিরিয়াল ডেটা পেতে ESP32 বোর্ডের GPIO 16 এবং GPIO 17 পিন।

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

# RXD2 16 সংজ্ঞায়িত করুন # TXD2 17 সংজ্ঞায়িত করুন

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // পিন 16 rx2, 17 tx2, 19200 bps, 8 bits no parity 1 stop bit

নিচের ধাপগুলি আপনাকে বাস্তব সেন্সরের মান পেতে আরও এগিয়ে নিয়ে যাবে

  • তাপমাত্রা, আর্দ্রতা, ব্যাটারি এবং অন্যান্য সেন্সর মান সংরক্ষণের জন্য ভেরিয়েবল তৈরি করুন
  • হার্ডওয়্যার সিরিয়ালের জন্য Rx, tx pin, baud rate এবং parity bit সেট করুন
  • প্রথমে, চেক করুন যে Serial1.available () ব্যবহার করে কিছু পড়ার আছে
  • আমরা 54 বাইটের ফ্রেম পাব।
  • 0x7E পরীক্ষা করুন যা শুরু বাইট।
  • কম্পন ডেটা 3 অক্ষের জন্য RMS মান, 3 অক্ষের জন্য ন্যূনতম মান, 3 অক্ষের জন্য সর্বোচ্চ মান নিয়ে গঠিত।
  • তাপমাত্রা এবং ব্যাটারির মানগুলিতে 2 বাইট ডেটা থাকবে
  • সেন্সরের নাম পান, টাইপ করুন, সেন্সর সংস্করণে 1 বাইট ডেটা থাকবে এবং সেখান থেকে সংশ্লিষ্ট ঠিকানা পাওয়া যাবে

যদি (Serial2.available ()) {Serial.println ("সিরিয়াল পড়ুন"); data [0] = Serial2.read (); বিলম্ব (কে); যদি (data [0] == 0x7E) {Serial.println ("Got Packet"); যখন (! Serial2.available ()); জন্য (i = 1; i <55; i ++) {data = Serial2.read (); বিলম্ব (1); } if (data [15] == 0x7F) /////// রিকিভ ডেটা সঠিক কিনা তা পরীক্ষা করার জন্য {if (data [22] == 0x08) //////// সেন্সরের ধরন নিশ্চিত করুন সঠিক {rms_x = ((uint16_t)} (((data [24]) << 16) + ((data [25]) << 8) + (data [26]))/100); rms_y = ((uint16_t) (((data [27]) << 16) + ((data [28]) << 8) + (data [29]))/100); rms_z = ((uint16_t) (((data [30]) << 16) + ((data [31]) << 8) + (data [32]))/100); int16_t max_x = ((uint16_t) (((data [33]) << 16) + ((data [34]) << 8) + (data [35]))/100); int16_t max_y = ((uint16_t) (((data [36]) << 16) + ((data [37]) << 8) + (data [38]))/100); int16_t max_z = ((uint16_t) (((data [39]) << 16) + ((data [40]) << 8) + (data [41]))/100);

int16_t min_x = ((uint16_t) (((data [42]) << 16) + ((data [43]) << 8) + (data [44]))/100); int16_t min_y = ((uint16_t) (((data [45]) << 16) + ((data [46]) << 8) + (data [47]))/100); int16_t min_z = ((uint16_t) (((data [48]) << 16) + ((data [49]) << 8) + (data [50]))/100);

cTemp = ((((data [51]) * 256) + data [52])); ফ্লোট ব্যাটারি = ((ডেটা [18] * 256) + ডেটা [19]); ভোল্টেজ = 0.00322 * ব্যাটারি; সিরিয়াল.প্রিন্ট ("সেন্সর নম্বর"); Serial.println (তথ্য [16]); senseNumber = data [16]; সিরিয়াল.প্রিন্ট ("সেন্সর টাইপ"); Serial.println (তথ্য [22]); সিরিয়াল.প্রিন্ট ("ফার্মওয়্যার সংস্করণ"); Serial.println (তথ্য [17]); সিরিয়াল.প্রিন্ট ("সেলসিয়াস তাপমাত্রা:"); Serial.print (cTemp); Serial.println ("C"); সিরিয়াল.প্রিন্ট ("এক্স-অক্ষে RMS কম্পন:"); সিরিয়াল.প্রিন্ট (rms_x); Serial.println ("mg"); Serial.print ("Y- অক্ষে RMS কম্পন:"); সিরিয়াল.প্রিন্ট (rms_y); Serial.println ("mg"); Serial.print ("Z- অক্ষে RMS কম্পন:"); সিরিয়াল.প্রিন্ট (rms_z); Serial.println ("mg");

সিরিয়াল.প্রিন্ট ("এক্স-অক্ষের ন্যূনতম কম্পন:");

Serial.print (min_x); Serial.println ("mg"); সিরিয়াল.প্রিন্ট ("Y- অক্ষে ন্যূনতম কম্পন:"); Serial.print (min_y); Serial.println ("mg"); সিরিয়াল.প্রিন্ট ("Z- অক্ষে ন্যূনতম কম্পন:"); Serial.print (min_z); Serial.println ("mg");

সিরিয়াল.প্রিন্ট ("এডিসি মান:");

Serial.println (ব্যাটারি); সিরিয়াল.প্রিন্ট ("ব্যাটারি ভোল্টেজ:"); সিরিয়াল.প্রিন্ট (ভোল্টেজ); Serial.println ("\ n"); যদি (ভোল্টেজ <1) {Serial.println ("ব্যাটারি প্রতিস্থাপনের সময়"); }}} অন্য {জন্য (i = 0; i <54; i ++) {Serial.print (data ); সিরিয়াল.প্রিন্ট (","); বিলম্ব (1); }}}}

ধাপ 6: AWS এর সাথে সংযোগ স্থাপন

AWS এর সাথে সংযুক্ত হচ্ছে
AWS এর সাথে সংযুক্ত হচ্ছে
  • AWSIoT হাবের সাথে সংযোগ স্থাপনের জন্য AWS_IOT.h, WiFi.h হেডার ফাইল অন্তর্ভুক্ত করুন
  • আপনার হোস্ট অ্যাড্রেস, ক্লায়েন্ট আইডি লিখুন যা পলিসির নাম হবে এবং টপিকের নাম যা জিনিসের নাম হবে

// ********* AWS শংসাপত্র ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

আপনার JSON সঞ্চয় করার জন্য একটি চর পরিবর্তনশীল তৈরি করুন, এই ক্ষেত্রে, আমরা JSON সংরক্ষণ করার জন্য একটি বিন্যাস তৈরি করেছি

const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, r" rmsY / ":%d, \" rmsZ ":%d, \" cTemp / ":%d, \" ভোল্টেজ ":%। 2f}";

AWS_IOT ক্লাসের একটি উদাহরণ তৈরি করুন

AWS_IOT esp; // AWS_IOT ক্লাসের উদাহরণ

এখন নিম্নলিখিত পদ্ধতি ব্যবহার করে AWSIoT হাবের সাথে সংযোগ করুন।

অকার্যকর পুনরায় সংযোগ বিলম্ব (1000);

যদি (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Subscribe Successfull"); } অন্য {Serial.println ("সাবস্ক্রাইব ব্যর্থ হয়েছে, জিনিসের নাম এবং সার্টিফিকেট চেক করুন"); যখন (1); }} অন্য {Serial.println ("AWS সংযোগ ব্যর্থ হয়েছে, HOST ঠিকানা চেক করুন"); যখন (1); }

বিলম্ব (2000);

}

প্রতি 1 মিনিটের পরে সেন্সর ডেটা প্রকাশ করুন।

যদি (টিক> = 60) // প্রতি 5 সেকেন্ডে বিষয় প্রকাশ করুন {টিক = 0; চার পেলোড [PAYLOAD_MAX_LEN]; snprintf (পেলোড, PAYLOAD_MAX_LEN, বিন্যাস, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, voltage); Serial.println (পেলোড); যদি (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("বার্তা প্রকাশ করুন:"); Serial.println (পেলোড); } অন্য {Serial.println ("প্রকাশ ব্যর্থ হয়েছে"); }} vTaskDelay (1000 / portTICK_RATE_MS); টিক ++;

ধাপ 7: AWS- এ ডেটা ভিজুয়ালাইজ করা

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

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

আপনি এই Github সংগ্রহস্থলে সামগ্রিক কোড খুঁজে পেতে পারেন।

ক্রেডিট

  • আরডুইনো জসন
  • বেতার তাপমাত্রা এবং আর্দ্রতা সেন্সর
  • ESP32
  • PubSubClient

প্রস্তাবিত: