সুচিপত্র:

IoT তৈরি করা সহজ: দূরবর্তী আবহাওয়ার ডেটা ক্যাপচার করা: UV এবং বায়ুর তাপমাত্রা এবং আর্দ্রতা: 7 টি ধাপ
IoT তৈরি করা সহজ: দূরবর্তী আবহাওয়ার ডেটা ক্যাপচার করা: UV এবং বায়ুর তাপমাত্রা এবং আর্দ্রতা: 7 টি ধাপ

ভিডিও: IoT তৈরি করা সহজ: দূরবর্তী আবহাওয়ার ডেটা ক্যাপচার করা: UV এবং বায়ুর তাপমাত্রা এবং আর্দ্রতা: 7 টি ধাপ

ভিডিও: IoT তৈরি করা সহজ: দূরবর্তী আবহাওয়ার ডেটা ক্যাপচার করা: UV এবং বায়ুর তাপমাত্রা এবং আর্দ্রতা: 7 টি ধাপ
ভিডিও: How To Connect To Long Distance WiFi | WiFi Problem | Bangla Tutorial 2024, জুলাই
Anonim
IoT তৈরি করা সহজ: দূরবর্তী আবহাওয়ার ডেটা ক্যাপচার করা: UV এবং বায়ুর তাপমাত্রা এবং আর্দ্রতা
IoT তৈরি করা সহজ: দূরবর্তী আবহাওয়ার ডেটা ক্যাপচার করা: UV এবং বায়ুর তাপমাত্রা এবং আর্দ্রতা

এই টিউটোরিয়ালে, আমরা ইউভি (আল্ট্রা-ভায়োলেট বিকিরণ), বায়ুর তাপমাত্রা এবং আর্দ্রতা হিসাবে দূরবর্তী ডেটা ক্যাপচার করব। এই তথ্যগুলি খুবই গুরুত্বপূর্ণ এবং ভবিষ্যতে সম্পূর্ণ আবহাওয়া স্টেশনে ব্যবহার করা হবে।

ব্লক ডায়াগ্রাম দেখায় আমরা শেষে কি পাব।

ছবি
ছবি

ধাপ 1: BoM - উপাদান বিল

NodeMCU (ESP8266-12E) - USD 9.00

আর্দ্রতা এবং তাপমাত্রা সেন্সর (DHT22) - USD10.00

ইউভি সেন্সর - USD 4.00

OLED USD 12.00

ব্রেডবোর্ড - USD1.00

ধাপ 2: এনালগ ইউভি সেন্সর

অ্যানালগ ইউভি সেন্সর
অ্যানালগ ইউভি সেন্সর
অ্যানালগ ইউভি সেন্সর
অ্যানালগ ইউভি সেন্সর
অ্যানালগ ইউভি সেন্সর
অ্যানালগ ইউভি সেন্সর

এই UV সেন্সর আল্ট্রা-ভায়োলেট বিকিরণের সমানুপাতিক একটি এনালগ আউটপুট উৎপন্ন করে যা আলো-সংবেদনশীল বর্ণালীতে পাওয়া যায়। এটি একটি ইউভি ফোটোডিওড (গ্যালিয়াম নাইট্রাইডের উপর ভিত্তি করে) ব্যবহার করে, যা 240-370nm পরিসীমা আলোর (যা UVB এবং অধিকাংশ UVA বর্ণালীকে আবৃত করে) সনাক্ত করতে পারে। ফটোডিওড থেকে সংকেত স্তরটি খুব ছোট, ন্যানো-অ্যাম্পিয়ার স্তরে, তাই মডিউল সংকেতকে আরও পাঠযোগ্য ভোল্ট-স্তরে (0 থেকে 1V) বাড়ানোর জন্য একটি অপারেশনাল এম্প্লিফায়ার এম্বেড করেছে।

VCC কে 3.3VDC (অথবা 5VDC) এবং GND কে পাওয়ার গ্রাউন্ডে সংযুক্ত করে সেন্সর এবং অপ-amp চালিত হতে পারে। এনালগ সিগন্যাল আউট পিন থেকে পাওয়া যায়।

এর আউটপুট মিলিভোল্টে থাকবে এবং আমাদের NodeMCU এর এনালগ ইনপুট দ্বারা পড়বে। একবার পড়ার পরে, কোডের দ্বারা মানগুলি আরও ভালভাবে পরিচালনা করার জন্য আমাদের এটি "রূপান্তর" (বা "মানচিত্র") করা উচিত। আমরা এটি ফাংশন readSensorUV () দিয়ে করতে পারি:

/ * এমভি তে ইউভি সেন্সর পড়ুন এবং ইউভি সূচক গণনা কল করুন */

অকার্যকর readSensorUV () {বাইট numOfReadings = 5; dataSensorUV = 0; জন্য (int i = 0; i <numOfReadings; i ++) {dataSensorUV+= analogRead (sensorUVPin); বিলম্ব (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0)) * 1000; Serial.println (dataSensorUV); indexCalculate (); }

একবার আমাদের UV ডেটা থাকলে আমরা সহজেই UV সূচকটি উপরের টেবিলে সংজ্ঞায়িত করতে পারি। ফাংশন indexCalculate () আমাদের জন্য এটি করবে:

/ * ইউভি সূচক গণনা */

void indexCalculate () {if (dataSensorUV <227) indexUV = 0; অন্যথায় যদি (227 <= dataSensorUV && dataSensorUV <318) indexUV = 1; অন্যথায় যদি (318 <= dataSensorUV && dataSensorUV <408) indexUV = 2; অন্যথায় (408 <= dataSensorUV && dataSensorUV <503) indexUV = 3; অন্যথায় যদি (503 <= dataSensorUV && dataSensorUV <606) indexUV = 4; অন্যথায় (606 <= dataSensorUV && dataSensorUV <696) indexUV = 5; অন্যথায় যদি (696 <= dataSensorUV && dataSensorUV <795) indexUV = 6; অন্যথায় (795 <= dataSensorUV && dataSensorUV <881) indexUV = 7; অন্যথায় যদি (881 <= dataSensorUV && dataSensorUV <976) indexUV = 8; অন্যথায় যদি (976 <= dataSensorUV && dataSensorUV <1079) indexUV = 9; অন্যথায় যদি (1079 <= dataSensorUV && dataSensorUV <1170) indexUV = 10; অন্যথায় indexUV = 11; }

ধাপ 3: একটি ডিসপ্লে ইনস্টল করা: OLED

একটি ডিসপ্লে ইনস্টল করা: OLED
একটি ডিসপ্লে ইনস্টল করা: OLED
একটি ডিসপ্লে ইনস্টল করা: OLED
একটি ডিসপ্লে ইনস্টল করা: OLED

পরীক্ষার উদ্দেশ্যে, আমরা আমাদের UV মিটারে একটি OLED অন্তর্ভুক্ত করব (এই পদক্ষেপটি সম্পূর্ণ alচ্ছিক)।

সিরিয়াল মনিটর ব্যবহার করা পরীক্ষার সময় ঠিক আছে, কিন্তু যখন আপনি আপনার পিসি থেকে দূরে আপনার প্রোটোটাইপ ব্যবহার করছেন তখন কি ঘটছে? তার জন্য, আসুন একটি OLED ডিসপ্লে, SSD1306 ইনস্টল করি, যার প্রধান বৈশিষ্ট্যগুলি হল:

  • প্রদর্শন আকার: 0.96"
  • I2C IIC SPI সিরিয়াল
  • 128X64
  • সাদা OLED LCD LED

বৈদ্যুতিক চিত্রটি অনুসরণ করুন এবং আমাদের OLED এর 4 টি পিন সংযুক্ত করুন:

  • VCC 3.3V তে যায়
  • GND মাটিতে যায়
  • এসসিএল NodeMCU (GPIO 2) ==> D4 এ যায়
  • SDA NodeMCU (GPIO 0) ==> D3 তে যায়

একবার আমরা ডিসপ্লেটি সংযুক্ত করলে, আমাদের Arduino IDE তে এর লাইব্রেরি ডাউনলোড এবং ইনস্টল করা যাক: "ESP8266 OLED ড্রাইভার for SSD1306 ডিসপ্লে" ড্যানিয়েল আইচহর্ন দ্বারা তৈরি (নিশ্চিত করুন যে আপনি সংস্করণ 3.0.0 বা তার চেয়ে বড়!)

আপনার Arduino IDE তে লাইব্রেরি ইনস্টল করুন, যা SSD1306Wire.h- এ পাওয়া যাবে

একবার আপনি IDE পুনরায় চালু করলে, লাইব্রেরিটি ইতিমধ্যে ইনস্টল করা উচিত।

লাইব্রেরি অন্তর্নির্মিত Wire.h লাইব্রেরি ব্যবহার করে OLED ডিসপ্লে অ্যাক্সেস করতে I2C প্রোটোকল সমর্থন করে:

/ * OLED */

#অন্তর্ভুক্ত "SSD1306Wire.h" #অন্তর্ভুক্ত "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306 ওয়্যার ডিসপ্লে (I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN);

আসুন কিছু গুরুত্বপূর্ণ API তালিকা করি যা আমাদের OLED ডিসপ্লেতে ব্যবহার করা হবে। উপরে দেওয়া GITHub এ সম্পূর্ণ তালিকা পাওয়া যাবে।

এ প্রদর্শন নিয়ন্ত্রণ:

অকার্যকর init (); // প্রদর্শন শুরু করুন

অকার্যকর প্রদর্শন (অকার্যকর); // অকার্যকর প্রদর্শন অফ চালু করুন (অকার্যকর); // ডিসপ্লে অফ অফ ভয়েড ক্লিয়ার (অকার্যকর); // স্থানীয় পিক্সেল বাফার অকার্যকর flipScreenVertically (); // ডিসপ্লে উল্টো করে দিন

বি টেক্সট অপারেশন:

অকার্যকর ড্র স্ট্রিং (int16_t x, int16_t y, স্ট্রিং টেক্সট); // (xpos, ypos, "পাঠ্য")

অকার্যকর setFont (const char* fontData); // বর্তমান ফন্ট সেট করে।

উপলব্ধ ডিফল্ট ফন্ট:

  • ArialMT_Plain_10,
  • ArialMT_Plain_16,

  • ArialMT_Plain_24

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

* OLED */

#অন্তর্ভুক্ত "SSD1306Wire.h" #অন্তর্ভুক্ত "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306 ওয়্যার ডিসপ্লে (I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN); অকার্যকর সেটআপ () {Serial.begin (115200); displaySetup (); } void loop () {} / * OLED * / void displaySetup () {display.init () এ সেটআপ ডেটা আরম্ভ এবং প্রদর্শন করুন; // আরম্ভ করুন প্রদর্শন display.clear (); // সাফ ডিসপ্লে display.flipScreenVertically (); // ডিসপ্লে উল্টো করে প্রদর্শন.ডিসপ্লে (); // প্রদর্শনের তথ্য রাখুন Serial.println ("ডিসপ্লে টেস্ট শুরু করা"); display.setFont (ArialMT_Plain_24); display.drawString (30, 0, "OLED"); // (xpos, ypos, "টেক্সট") display.setFont (ArialMT_Plain_16); display.drawString (18, 29, "টেস্ট শুরু"); display.setFont (ArialMT_Plain_10); display.drawString (10, 52, "Serial BaudRate:"); display.drawString (90, 52, স্ট্রিং (11500)); display.display (); // প্রদর্শন বিলম্বের উপর তথ্য রাখুন (3000); }

উপরের প্রোগ্রামটি আমার গিটহাব থেকে ডাউনলোড করা যেতে পারে:

NodeMCU_OLED_Test

ধাপ 4: একটি স্থানীয় UV মিটার

একটি স্থানীয় UV মিটার
একটি স্থানীয় UV মিটার
একটি স্থানীয় UV মিটার
একটি স্থানীয় UV মিটার

এখন, ওএলইডি ডিসপ্লে ইনস্টল করে, আমরা একটি ব্যাটারি সংযুক্ত করতে পারি এবং আমাদের "ইউভি মিটার" ব্যবহার করে কিছু দূরবর্তী পরীক্ষা করতে পারি

#SW_VERSION "UV_Sensor_V.1" নির্ধারণ করুন

/ * UV সেন্সর */ #সংজ্ঞায়িত UVPin A0 int dataSensorUV = 0; int indexUV = 0; / * OLED */ #অন্তর্ভুক্ত "SSD1306Wire.h" #অন্তর্ভুক্ত "Wire.h" const int I2C_DISPLAY_ADDRESS = 0x3c; const int SDA_PIN = 0; const int SCL_PIN = 2; SSD1306 ওয়্যার ডিসপ্লে (I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN); অকার্যকর সেটআপ () {Serial.begin (115200); displaySetup (); } অকার্যকর লুপ () {readSensorUV (); displayUV (); বিলম্ব (1000); } / * OLED * / void displaySetup () {display.init () এ সেটআপ ডেটা আরম্ভ এবং প্রদর্শন করুন; // আরম্ভ করুন প্রদর্শন display.clear (); // সাফ ডিসপ্লে display.flipScreenVertically (); // ডিসপ্লে উল্টো করে প্রদর্শন.ডিসপ্লে (); // প্রদর্শনের তথ্য রাখুন Serial.println ("UV Sensor Test শুরু করা"); display.setFont (ArialMT_Plain_24); display.drawString (10, 0, "MJRoBot"); display.setFont (ArialMT_Plain_16); display.drawString (0, 29, "UV Sensor Test"); display.setFont (ArialMT_Plain_10); display.drawString (0, 52, "SW Ver.:"); display.drawString (45, 52, SW_VERSION); display.display (); বিলম্ব (3000); } / * এমভি তে ইউভি সেন্সর পড়ুন এবং ইউভি ইনডেক্স গণনা কল করুন dataSensorUV = 0; জন্য (int i = 0; i <numOfReadings; i ++) {dataSensorUV+= analogRead (sensorUVPin); বিলম্ব (200); } dataSensorUV /= numOfReadings; dataSensorUV = (dataSensorUV * (3.3 / 1023.0)) * 1000; Serial.println (dataSensorUV); indexCalculate (); } / * UV সূচক গণনা * / অকার্যকর indexCalculate () {if (dataSensorUV <227) indexUV = 0; অন্যথায় যদি (227 <= dataSensorUV && dataSensorUV <318) indexUV = 1; অন্যথায় যদি (318 <= dataSensorUV && dataSensorUV <408) indexUV = 2; অন্যথায় (408 <= dataSensorUV && dataSensorUV <503) indexUV = 3; অন্যথায় যদি (503 <= dataSensorUV && dataSensorUV <606) indexUV = 4; অন্যথায় (606 <= dataSensorUV && dataSensorUV <696) indexUV = 5; অন্যথায় যদি (696 <= dataSensorUV && dataSensorUV <795) indexUV = 6; অন্যথায় (795 <= dataSensorUV && dataSensorUV <881) indexUV = 7; অন্যথায় যদি (881 <= dataSensorUV && dataSensorUV <976) indexUV = 8; অন্যথায় যদি (976 <= dataSensorUV && dataSensorUV <1079) indexUV = 9; অন্যথায় যদি (1079 <= dataSensorUV && dataSensorUV <1170) indexUV = 10; অন্যথায় indexUV = 11; } /* স্থানীয় OLED* / void displayUV () {display.clear () এ UV মান প্রদর্শন করুন; display.setFont (ArialMT_Plain_16); display.drawString (20, 0, "UV Sensor"); display.drawString (0, 23, "UV (mV):"); display.drawString (80, 23, স্ট্রিং (dataSensorUV)); display.drawString (0, 48, "UV সূচক:"); display.setFont (ArialMT_Plain_24); display.drawString (82, 42, স্ট্রিং (indexUV)); display.display (); }

উপরের কোডটি আমার GitHun থেকে ডাউনলোড করা যাবে: NodeMCU_UV_Sensor_OLED.ino

ধাপ 5: বায়ু তাপমাত্রা এবং আর্দ্রতা পরিমাপের জন্য একটি DHT22 ইনস্টল করা

বায়ু তাপমাত্রা এবং আর্দ্রতা পরিমাপের জন্য একটি DHT22 ইনস্টল করা
বায়ু তাপমাত্রা এবং আর্দ্রতা পরিমাপের জন্য একটি DHT22 ইনস্টল করা
বায়ু তাপমাত্রা এবং আর্দ্রতা পরিমাপের জন্য একটি DHT22 ইনস্টল করা
বায়ু তাপমাত্রা এবং আর্দ্রতা পরিমাপের জন্য একটি DHT22 ইনস্টল করা

আবহাওয়ার তথ্য ক্যাপচারের জন্য সবচেয়ে বেশি ব্যবহৃত একটি সেন্সর হল DHT22 (অথবা এটি ভাই DHT11), একটি ডিজিটাল আপেক্ষিক আর্দ্রতা এবং তাপমাত্রা সেন্সর। এটি একটি ক্যাপাসিটিভ আর্দ্রতা সেন্সর এবং একটি থার্মিস্টার ব্যবহার করে আশেপাশের বায়ু পরিমাপ করে এবং ডেটা পিনে একটি ডিজিটাল সিগন্যাল বের করে (এনালগ ইনপুট পিনের প্রয়োজন নেই)।

সেন্সরটি 3.3V এবং 5V এর মধ্যে চালিত হওয়া উচিত এবং তাপমাত্রার জন্য +/- 0.5oC এবং আপেক্ষিক আর্দ্রতার জন্য +/- 2% নির্ভুলতার সাথে -40oC থেকে +80oC পর্যন্ত কাজ করবে। এটি মনে রাখাও গুরুত্বপূর্ণ যে এর সেন্সিং পিরিয়ড গড়ে 2 সেকেন্ড (রিডিংয়ের মধ্যে সর্বনিম্ন সময়)। Adafruit এর সাইট DHT22 এবং তার ভাই DHT11 উভয়ের সম্পর্কে অনেক তথ্য প্রদান করে। আরও তথ্যের জন্য, দয়া করে DHT22/11 টিউটোরিয়াল পৃষ্ঠা দেখুন।

DHT22 এর 4 টি পিন রয়েছে (সেন্সরের মুখোমুখি, পিন 1 সবচেয়ে বাম):

  1. VCC (আমরা NodeMCU থেকে 3.3V এর সাথে সংযোগ করব);
  2. ডেটা আউট;
  3. সংযুক্ত নয় এবং
  4. গ্রাউন্ড।

একবার আপনি সাধারণত 20 মিটারের কম দূরত্বে সেন্সর ব্যবহার করবেন, ডেটা এবং ভিসিসি পিনের মধ্যে 10K রোধকারী সংযুক্ত করা উচিত। আউটপুট পিনটি NodeMCU পিন D3 এর সাথে সংযুক্ত হবে (উপরের চিত্রটি দেখুন)। একবার আমাদের মডিউলে সেন্সর ইনস্টল হয়ে গেলে, Adafruit GitHub সংগ্রহস্থল থেকে DHT লাইব্রেরি ডাউনলোড করুন এবং আপনার Arduino এর লাইব্রেরি ফাইলে ইনস্টল করুন। একবার আপনি আপনার Arduino IDE পুনরায় লোড করলে, "DHT সেন্সর লাইব্রেরি" ইনস্টল করা উচিত।

কোডের শুরুতে, আমাদের অবশ্যই লাইনগুলি অন্তর্ভুক্ত করতে হবে:

/* DHT22*/

#"DHT.h" অন্তর্ভুক্ত করুন #DHTPIN D2 নির্ধারণ করুন #DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE) নির্ধারণ করুন; ভাসমান হাম = 0; ভাসমান তাপমাত্রা = 0;

সেন্সর পড়ার জন্য একটি নতুন ফাংশন তৈরি করা হবে:

/ * DHT ডেটা পান */

void getDhtData (void) {float tempIni = temp; ভাসা humIni = হুম; temp = dht.readTemperature (); hum = dht.readHumidity (); if (isnan (hum) || isnan (temp)) // কোন পাঠ ব্যর্থ হয়েছে কিনা তা পরীক্ষা করুন এবং তাড়াতাড়ি বেরিয়ে আসুন (আবার চেষ্টা করার জন্য)। {Serial.println ("DHT সেন্সর থেকে পড়তে ব্যর্থ হয়েছে!"); temp = tempIni; হুম = humIni; প্রত্যাবর্তন; }}

UV এবং DHT সেন্সর সহ সম্পূর্ণ কোডটি আমার GitHub থেকে ডাউনলোড করা যাবে: NodeMCU_UV_DHT_Sensor_OLED

ধাপ 6: ThingSpeak.com- এ ডেটা পাঠানো

ThingSpeak.com- এ ডেটা পাঠানো হচ্ছে
ThingSpeak.com- এ ডেটা পাঠানো হচ্ছে
ThingSpeak.com- এ ডেটা পাঠানো হচ্ছে
ThingSpeak.com- এ ডেটা পাঠানো হচ্ছে
ThingSpeak.com- এ ডেটা পাঠানো হচ্ছে
ThingSpeak.com- এ ডেটা পাঠানো হচ্ছে

এখন পর্যন্ত, আমরা শুধুমাত্র একটি নিয়মিত এবং সাধারণ Arduino বোর্ড হিসাবে NodeMCU ESP12-E ব্যবহার করেছি। অবশ্যই, আমরা এই দর্শনীয় ছোট চিপের আসল সম্ভাবনাকে কেবল "স্ক্র্যাচ" করেছি এবং এখনই স্বর্গে যাওয়ার সময়! নাকি তারকাদের কাছে ভালো! ইহার… মেঘের কাছে!;-)

চল শুরু করি!

  1. প্রথমে আপনার ThinkSpeak.com এ একটি অ্যাকাউন্ট থাকতে হবে
  2. একটি চ্যানেল তৈরি করতে নির্দেশাবলী অনুসরণ করুন এবং আপনার চ্যানেল আইডি এবং API কী লিখুন
  3. আপনার ওয়াইফাই নেটওয়ার্ক এবং থিংকস্পিক ক্রেডেনশিয়াল দিয়ে নিচের কোডটি আপডেট করুন
  4. IDE তে প্রোগ্রামটি চালান

আসুন কোডটি সবচেয়ে গুরুত্বপূর্ণ অংশগুলিতে মন্তব্য করি:

প্রথমে, আসুন ESP8266 লাইব্রেরিতে কল করি, ওয়াইফাই ক্লায়েন্টকে সংজ্ঞায়িত করি এবং আপনার স্থানীয় রাউটার এবং থিংকস্পিক শংসাপত্রগুলি সংজ্ঞায়িত করি:

/* ESP12-E এবং থিংকস্পিক*/

#ওয়াইফাই ক্লায়েন্ট ক্লায়েন্ট অন্তর্ভুক্ত করুন; const char* MY_SSID = "আপনার SSD আইডি এখানে"; const char* MY_PWD = "আপনার পাসওয়ার্ড এখানে"; const char* TS_SERVER = "api.thingspeak.com"; স্ট্রিং TS_API_KEY = "আপনার চ্যানেল রাইট এপিআই কী";

দ্বিতীয়ত, আইওটি প্রকল্পগুলির জন্য একটি খুব গুরুত্বপূর্ণ লাইব্রেরি অন্তর্ভুক্ত করা যাক: SimpleTimer.h:

/ * টাইমার */

#সিম্পলটাইমার টাইমার অন্তর্ভুক্ত করুন;

তৃতীয়ত, সেটআপের সময় (), আমরা সিরিয়াল যোগাযোগ শুরু করব, ফাংশনকে কল করব সংযোগ ওয়াইফাই () এবং টাইমার সংজ্ঞায়িত করব। নোট করুন যে কোডের লাইন: timer.setInterval (60000L, sendDataTS); থিংকস্পিক চ্যানেলে ডেটা আপলোড করার জন্য প্রতি 60 সেকেন্ডে sendDataTS () ফাংশনটি কল করবে।

অকার্যকর সেটআপ()

{… Serial.begin (115200); বিলম্ব (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}

শেষ পর্যন্ত কিন্তু অন্তত নয়, লুপের সময় (), টাইমারের সূচনা করার জন্য একমাত্র কমান্ড প্রয়োজন এবং এটিই!

অকার্যকর লুপ ()

{… Timer.run (); // সিম্পলটাইমার শুরু করে}

নীচে, আপনি থিংকস্পিক যোগাযোগ পরিচালনা করতে ব্যবহৃত দুটি গুরুত্বপূর্ণ ফাংশন দেখতে পারেন:

আপনার ওয়াইফাই নেটওয়ার্কের সাথে ESP12-E সংযোগ:

/***************************************************

*ওয়াইফাই সংযোগ ************************************************* ***/ void connectWifi () {Serial.print ("Connecting to"+*MY_SSID); WiFi.begin (MY_SSID, MY_PWD); যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (1000); সিরিয়াল.প্রিন্ট ("।"); } Serial.println (""); Serial.println ("ওয়াইফাই সংযুক্ত"); Serial.println (""); }

ESP12-E থিংকস্পিকে ডেটা পাঠাচ্ছে:

/***************************************************

*থিংকস্পিক চ্যানেলে ডেটা পাঠানো ************************************************ ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& field1 ="; postStr += স্ট্রিং (dataSensorUV); postStr += "& field2 ="; postStr += স্ট্রিং (indexUV); postStr += "& field3 ="; postStr += স্ট্রিং (টেম্প); postStr += "& field4 ="; postStr += স্ট্রিং (হাম); postStr += "\ r / n / r / n"; client.print ("পোস্ট /আপডেট HTTP /1.1 / n"); client.print ("হোস্ট: api.thingspeak.com / n"); client.print ("সংযোগ: বন্ধ / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("বিষয়বস্তু-প্রকার: অ্যাপ্লিকেশন/x-www-form-urlencoded / n"); client.print ("বিষয়বস্তু-দৈর্ঘ্য:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); বিলম্ব (1000); } পাঠানো ++; client.stop (); }

সম্পূর্ণ কোডটি আমার GitHub- এ পাওয়া যাবে: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT

একবার আপনার কোডটি আপনার NodeMCU এ আপলোড হয়ে গেলে। আসুন একটি বাহ্যিক ব্যাটারি সংযুক্ত করি এবং সূর্যের নিচে কিছু পরিমাপ করি। আমি ছাদে রিমোট স্টেশনটি রাখলাম এবং উপরের ছবিগুলিতে দেখানো হিসাবে ThingSpeak.com- এ ডেটা ক্যাপচার করা শুরু করলাম।

ধাপ 7: উপসংহার

উপসংহার
উপসংহার

বরাবরের মতো, আমি আশা করি এই প্রকল্পটি অন্যদের ইলেকট্রনিক্সের উত্তেজনাপূর্ণ জগতে তাদের পথ খুঁজে পেতে সাহায্য করতে পারে!

বিস্তারিত এবং চূড়ান্ত কোডের জন্য, দয়া করে আমার গিটহাব ডিপোজিটরি দেখুন: RPi-NodeMCU-Weather-Station

আরো প্রকল্পের জন্য, দয়া করে আমার ব্লগে যান: MJRoBot.org

সাথে থাকুন! পরবর্তী টিউটোরিয়াল আমরা একটি রাস্পবেরি পাই ওয়েব সার্ভারের উপর ভিত্তি করে একটি দূরবর্তী আবহাওয়া স্টেশন থেকে একটি কেন্দ্রীয় কেন্দ্রে ডেটা পাঠাবো:

ছবি
ছবি

বিশ্বের দক্ষিণ দিক থেকে সালাম!

আমার পরবর্তী নির্দেশনায় দেখা হবে!

ধন্যবাদ, মার্সেলো

প্রস্তাবিত: