সেন্সর নোড সহ ESP32 লোরা থিংসপিক গেটওয়ে: 9 টি ধাপ
সেন্সর নোড সহ ESP32 লোরা থিংসপিক গেটওয়ে: 9 টি ধাপ
Anonim
সেন্সর নোড সহ ESP32 লোরা থিংসপিক গেটওয়ে
সেন্সর নোড সহ ESP32 লোরা থিংসপিক গেটওয়ে

এই IoT প্রজেক্টে, আমি ESP32 LoRa গেটওয়ে এবং ESP32 LoRa সেন্সর নোড ডিজাইন করেছি যাতে কয়েক কিলোমিটার দূর থেকে সেন্সর পড়া ওয়্যারলেস মনিটর করা যায়। প্রেরক DHT11 সেন্সর ব্যবহার করে আর্দ্রতা এবং তাপমাত্রার তথ্য পড়বে। তারপরে এটি লোরা রেডিওর মাধ্যমে ডেটা প্রেরণ করে। তথ্য রিসিভার মডিউল দ্বারা প্রাপ্ত হয়। একটি নির্দিষ্ট বিরতির পর রিসিভার ডেটা থিংসপিক সার্ভারে পাঠাবে।

ধাপ 1: প্রয়োজনীয় উপাদান

1. ESP32 বোর্ড - 2

2. লোরা মডিউল SX1278/SX1276

3. DHT11 আর্দ্রতা তাপমাত্রা সেন্সর

4. ব্রেডবোর্ড

5. জাম্পার তারের সংযোগ

পদক্ষেপ 2: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

আমাদের প্রথমে বিভিন্ন লাইব্রেরি ইনস্টল করতে হবে:

1. DHT11 লাইব্রেরি

2. লোরা লাইব্রেরি

ধাপ 3: ESP32 LoRa থিংসস্পিক গেটওয়ে

ESP32 LoRa থিংসস্পিক গেটওয়ে
ESP32 LoRa থিংসস্পিক গেটওয়ে
ESP32 LoRa থিংসস্পিক গেটওয়ে
ESP32 LoRa থিংসস্পিক গেটওয়ে

এখন আসুন ESP32 LoRa গেটওয়ে এবং সেন্সর নোড তৈরির জন্য প্রেরক এবং রিসিভার সার্কিট দেখি। আমি একটি breadboard উপর বর্তনী উভয় একত্রিত। আপনি চাইলে পিসিবিতে এটি তৈরি করতে পারেন।

এখানে একটি ESP32 LoRa মডিউল SX1278 গেটওয়ে সার্কিট। এই অংশটি রিসিভার হিসেবে কাজ করে। আর্দ্রতা এবং তাপমাত্রার তথ্য লোরা রেডিও ব্যবহার করে প্রাপ্ত হয় এবং থিংসপিক সার্ভারে আপলোড করা হয়।

ধাপ 4: ESP32 LoRa সেন্সর নোড

ESP32 LoRa সেন্সর নোড
ESP32 LoRa সেন্সর নোড
ESP32 LoRa সেন্সর নোড
ESP32 LoRa সেন্সর নোড

এখানে DHT11 সেন্সর সহ একটি ESP32 LoRa সেন্সর নোড সার্কিট রয়েছে। এই অংশটি ট্রান্সমিটার হিসেবে কাজ করে। আর্দ্রতা এবং তাপমাত্রার তথ্য DHT11 আর্দ্রতা তাপমাত্রা সেন্সর দ্বারা পড়ে এবং লোরা রেডিও ব্যবহার করে প্রেরণ করা হয়।

ধাপ 5: থিংসস্পিক সেট করা

থিংসস্পিক সেট আপ করা হচ্ছে
থিংসস্পিক সেট আপ করা হচ্ছে

থিংসপিক সার্ভারে সেন্সর ডেটা পর্যবেক্ষণ করার জন্য আপনাকে প্রথমে থিংসপিক সেটআপ করতে হবে। থিংসপিক সার্ভার সেট আপ করতে, https://thingspeak.com/ এ যান। একটি অ্যাকাউন্ট তৈরি করুন অথবা যদি আপনি আগে অ্যাকাউন্ট তৈরি করেন তবে সাইন ইন করুন। তারপর নিম্নলিখিত বিবরণ সহ একটি নতুন চ্যানেল তৈরি করুন।

ধাপ 6: গেটওয়ে কোড

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

// LoRa এর জন্য লাইব্রেরি #অন্তর্ভুক্ত #অন্তর্ভুক্ত করুন // LoRa ট্রান্সসিভার মডিউল দ্বারা ব্যবহৃত পিন সংজ্ঞায়িত করুন // আপনার নেটওয়ার্ক শংসাপত্রের সাথে প্রতিস্থাপন করুন স্ট্রিং apiKey = "14K8UL2QEK8BTHN6"; // ThingSpeak const char *ssid = "Wifi SSID" থেকে আপনার লিখুন API কী লিখুন; // আপনার wifi ssid এবং wpa2 key const char *password = "Password" দিয়ে প্রতিস্থাপন করুন; const char* server = "api.thingspeak.com"; ওয়াইফাই ক্লায়েন্ট ক্লায়েন্ট; // লোরা ডেটা int rssi পেতে এবং সংরক্ষণ করতে ভেরিয়েবল শুরু করুন; স্ট্রিং loRaMessage; স্ট্রিং তাপমাত্রা; স্ট্রিং আর্দ্রতা; স্ট্রিং রিডিং আইডি; // প্লেসহোল্ডারকে ডিএইচটি মান স্ট্রিং প্রসেসর (const স্ট্রিং এবং var) {//Serial.println(var); যদি (var == "TEMPERATURE") {ফেরত তাপমাত্রা; } অন্যথায় যদি (var == "HUMIDITY") {ফেরত আর্দ্রতা; } অন্যথায় যদি (var == "RRSI") {return স্ট্রিং (rssi); } রিং স্ট্রিং (); } অকার্যকর সেটআপ () {Serial.begin (115200); int কাউন্টার; // সেটআপ LoRa ট্রান্সসিভার মডিউল LoRa.setPins (ss, rst, dio0); // LoRa ট্রান্সসিভার মডিউল সেটআপ করার সময় (! LoRa.begin (BAND) && কাউন্টার <10) {Serial.print ("।"); পাল্টা ++; বিলম্ব (2000); } যদি (পাল্টা == 10) {// প্রতিটি নতুন পড়ার সিরিয়াল.প্রিন্টলন ("লোরা শুরু করা ব্যর্থ হয়েছে!" } Serial.println ("LoRa Initialization OK!"); বিলম্ব (2000); // SSID এবং পাসওয়ার্ড Serial.print ("কানেক্টিং টু") দিয়ে ওয়াই-ফাই নেটওয়ার্কে সংযোগ করুন; Serial.println (ssid); WiFi.begin (ssid, password); যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (2000); সিরিয়াল.প্রিন্ট ("।"); } // স্থানীয় IP ঠিকানা মুদ্রণ করুন এবং ওয়েব সার্ভার Serial.println ("") শুরু করুন; Serial.println ("ওয়াইফাই সংযুক্ত।"); Serial.println ("IP ঠিকানা:"); Serial.println (WiFi.localIP ()); } // LoRa প্যাকেট পড়ুন এবং সেন্সর রিডিং ভয়েড লুপ পান () {int packetSize = LoRa.parsePacket (); যদি (packetSize) {Serial.print ("Lora packet receive:"); while (LoRa.available ()) // প্যাকেট পড়ুন {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readingID = LoRaData.substring (0, pos1); // পড়ুন আইডি তাপমাত্রা = LoRaData.substring (pos1 +1, pos2); // তাপমাত্রা আর্দ্রতা পান = LoRaData.substring (pos2+1, LoRaData.length ()); // আর্দ্রতা পান} rssi = LoRa.packetRssi (); // RSSI Serial.print পান ("RSSI এর সাথে"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" অথবা api.thingspeak.com {স্ট্রিং postStr = apiKey; postStr += "& field1 ="; postStr += স্ট্রিং (readingID); postStr += "& field2 ="; postStr += স্ট্রিং (তাপমাত্রা); postStr += "& field3 ="; postStr += স্ট্রিং (আর্দ্রতা); postStr += "& field4 ="; postStr += স্ট্রিং (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("পোস্ট /আপডেট HTTP /1.1 / n"); client.print ("হোস্ট: api.thingspeak.com / n"); client.print ("সংযোগ: বন্ধ / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("বিষয়বস্তু-প্রকার: অ্যাপ্লিকেশন/x-www-form-urlencoded / n"); client.print ("বিষয়বস্তু-দৈর্ঘ্য:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // বিলম্ব (30000); }

ধাপ 7: সেন্সর নোড কোড

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

#অন্তর্ভুক্ত // লোরার জন্য লাইব্রেরি #অন্তর্ভুক্ত "DHT.h" #DHTPIN 4 // পিন সংজ্ঞায়িত করুন যেখানে dht11 সংযুক্ত DHT dht (DHTPIN, DHT11); // LoRa ট্রান্সসিভার মডিউল দ্বারা ব্যবহৃত পিনগুলি সংজ্ঞায়িত করুন int কাউন্টার = 0; স্ট্রিং LoRaMessage = ""; ভাসমান তাপমাত্রা = 0; ভাসমান আর্দ্রতা = 0; // LoRa মডিউল শূন্য startLoRA () {LoRa.setPins (ss, rst, dio0) শুরু করুন; // LoRa ট্রান্সসিভার মডিউল সেটআপ করার সময় (! LoRa.begin (BAND) && কাউন্টার <10) {Serial.print ("।"); পাল্টা ++; বিলম্ব (500); } যদি (কাউন্টার == 10) {// প্রতিটি নতুন পড়া রিডিং আইডি ++ তে রিডিং আইডি ++; Serial.println ("LoRa শুরু করা ব্যর্থ হয়েছে!"); } Serial.println ("LoRa Initialization OK!"); বিলম্ব (2000); } void startDHT () {if (isnan (humidity) || isnan (temperature)) {Serial.println ("DHT সেন্সর থেকে পড়তে ব্যর্থ!"); প্রত্যাবর্তন; }} অকার্যকর getReadings () {আর্দ্রতা = dht.readHumidity (); তাপমাত্রা = dht.readTemperature (); সিরিয়াল.প্রিন্ট (F ("আর্দ্রতা:")); সিরিয়াল.প্রিন্ট (আর্দ্রতা); সিরিয়াল.প্রিন্ট (F ("% তাপমাত্রা:")); সিরিয়াল.প্রিন্ট (তাপমাত্রা); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = স্ট্রিং (readingID) + "/" + স্ট্রিং (তাপমাত্রা) + "&" + স্ট্রিং (আর্দ্রতা); // রিসিভার LoRa.beginPacket () এ LoRa প্যাকেট পাঠান; LoRa.print (LoRaMessage); LoRa.endPacket (); সিরিয়াল.প্রিন্ট ("প্যাকেট পাঠানো:"); Serial.println (readingID); পড়ার আইডি ++; Serial.println (LoRaMessage); } void setup () {// initialize Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } অকার্যকর লুপ () {getReadings (); sendReadings (); বিলম্ব (500); }

ধাপ 8: থিংসপিক সার্ভারে ডেটা পর্যবেক্ষণ করুন

থিংসপিক সার্ভারে ডেটা পর্যবেক্ষণ করুন
থিংসপিক সার্ভারে ডেটা পর্যবেক্ষণ করুন
থিংসপিক সার্ভারে ডেটা পর্যবেক্ষণ করুন
থিংসপিক সার্ভারে ডেটা পর্যবেক্ষণ করুন

একবার কোড আপলোড হয়ে গেলে, আপনি গেটওয়ে এবং সেন্সর নোড সার্কিটে সিরিয়াল মনিটর খুলতে পারেন। কোডটি সঠিক হলে আপনি ডেটা প্রেরণ এবং গ্রহণ করবেন। এখন আপনি থিংসপিক প্রাইভেট ভিউ দেখতে পারেন। সেখানে আপনি 15 সেকেন্ডের ব্যবধানে প্যাকেট নম্বর, তাপমাত্রা, আর্দ্রতা এবং গেটওয়ের জন্য ডেটা আপলোড করতে পারেন।

ধাপ 9: রেফারেন্স

1.

2.

প্রস্তাবিত: