সুচিপত্র:

একটি ESP8266- ভিত্তিক বোর্ডের সাথে ক্লাউডে একটি DHT11/DHT22 সেন্সর সংযুক্ত করা: 9 টি ধাপ
একটি ESP8266- ভিত্তিক বোর্ডের সাথে ক্লাউডে একটি DHT11/DHT22 সেন্সর সংযুক্ত করা: 9 টি ধাপ

ভিডিও: একটি ESP8266- ভিত্তিক বোর্ডের সাথে ক্লাউডে একটি DHT11/DHT22 সেন্সর সংযুক্ত করা: 9 টি ধাপ

ভিডিও: একটি ESP8266- ভিত্তিক বোর্ডের সাথে ক্লাউডে একটি DHT11/DHT22 সেন্সর সংযুক্ত করা: 9 টি ধাপ
ভিডিও: ESP8266 ESP01 DHT11 তাপমাত্রা আর্দ্রতা সেন্সর মডিউল প্রোগ্রামিং | RemoteXY | FLProg 2024, নভেম্বর
Anonim
একটি ESP8266- ভিত্তিক বোর্ডের সাথে ক্লাউডে একটি DHT11/DHT22 সেন্সর সংযুক্ত করা
একটি ESP8266- ভিত্তিক বোর্ডের সাথে ক্লাউডে একটি DHT11/DHT22 সেন্সর সংযুক্ত করা

আগের নিবন্ধে, আমি আমার ESP8266- ভিত্তিক NodeMCU বোর্ডকে Cloud4RPi পরিষেবার সাথে সংযুক্ত করেছি। এখন, এটি একটি বাস্তব প্রকল্পের সময়!

সরবরাহ

হার্ডওয়্যারের প্রয়োজনীয়তা:

  • ESP8266 চিপের উপর ভিত্তি করে যে কোন বোর্ড (উদাহরণস্বরূপ, NodeMCU)
  • একটি DHT11 বা DHT22 সেন্সর

সফটওয়্যার এবং সেবা:

  • অ্যাডাফ্রুট দ্বারা ডিএইচটি সেন্সর লাইব্রেরি - v1.3.7
  • Adafruit ইউনিফাইড সেন্সর - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - IoT ডিভাইসের জন্য ক্লাউড কন্ট্রোল প্যানেল
  • VSCode এর জন্য PlatformIO IDE

ধাপ 1: তাপমাত্রা এবং আর্দ্রতা পরিমাপ করুন

তাপমাত্রা এবং আর্দ্রতা পরিমাপ করুন
তাপমাত্রা এবং আর্দ্রতা পরিমাপ করুন

আমার ইতিমধ্যে একটি DHT11 সেন্সর ছিল, তাই আমি এটি তাপমাত্রা এবং আর্দ্রতা পরিমাপের জন্য ব্যবহার করার সিদ্ধান্ত নিয়েছি। সেন্সর ডেটা পড়ার জন্য একটি Arduino লাইব্রেরি বেছে নেওয়া যাক।

আরডুইনো রেজিস্ট্রিতে বেশ কয়েকটি লাইব্রেরি রয়েছে, যেখান থেকে আমি সবচেয়ে জনপ্রিয় একটি বেছে নিয়েছি।

তাদের গিটহাব সংগ্রহস্থল অনুসারে, আমাদের একটি অ্যাডাফ্রুট ইউনিফাইড সেন্সর প্যাকেজ যুক্ত করতে হবে।

পদক্ষেপ 2: প্রকল্প তৈরি করুন এবং কনফিগার করুন

প্রকল্প তৈরি এবং কনফিগার করুন
প্রকল্প তৈরি এবং কনফিগার করুন

আমি ইতিমধ্যে বর্ণনা করেছি কিভাবে একটি প্ল্যাটফর্মআইও প্রকল্প তৈরি করা যায় এবং প্রথম অংশে লাইব্রেরি ইনস্টল করা যায়। আমার প্রকল্পের নাম "MyNodeMCU"। কাঠামো উপরে দেখানো হয়েছে।

এই প্রকল্পটি একটি সামান্য পরিবর্তিত Cloud4RPi উদাহরণ।

Platform.io ফাইলটি নিম্নরূপ দেখাচ্ছে:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] প্ল্যাটফর্ম = espressif8266 ফ্রেমওয়ার্ক = arduino বোর্ড = nodemcuv2

ধাপ 3: লাইব্রেরি ইনস্টল করুন

লাইব্রেরি ইনস্টল করুন
লাইব্রেরি ইনস্টল করুন

লাইব্রেরি ইনস্টলেশন বেশ সহজ। আপনি এটি IDE এর গ্রাফিক্যাল ইন্টারফেস থেকে করতে পারেন, অথবা platform.io ফাইলের lib_deps বিভাগে প্রয়োজনীয় লাইব্রেরির নাম যোগ করে:

; … lib_deps = cloud4rpi-ESP-Arduino Adafruit ইউনিফায়েড সেন্সর DHT সেন্সর গ্রন্থাগার build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = / "_ YOUR_WIFI _ \" -D SSID_PASSWORD = / "_ YOUR_WIFI_PASS _ \" - D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

যোগ করা লাইব্রেরিগুলি স্বয়ংক্রিয়ভাবে একটি প্রকল্পের সাবফোল্ডারে ইনস্টল করা হবে।

Main.cpp হেডার নিম্নরূপ দেখায়:

#অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #DHT.h

ধাপ 4: একটি DHT11 সেন্সর সংযুক্ত করুন

Adafruit একটি DHTtester.ino সেন্সর সংযোগের উদাহরণ প্রদান করে।

এই কোডটি একটি সেন্সর আরম্ভ করে এবং পরিমাপের ফলাফল সংরক্ষণ করার জন্য একটি কাঠামো সংজ্ঞায়িত করে (যদি এটি সফল হয়):

#DHTPIN 2 সংজ্ঞায়িত করুন // ডিজিটাল পিন DHT সেন্সরের সাথে সংযুক্ত#DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE) সংজ্ঞায়িত করুন; dht.begin (); //… struct DHT_Result {float h; ভাসা t; }; DHT_ ফলাফল dhtResult;

পরবর্তী ফাংশন দেখায় কিভাবে সেন্সর ডেটা পড়তে হয় এবং উপরে বর্ণিত ডেটা স্ট্রাকচারে এটি সংরক্ষণ করতে হয়

অকার্যকর readSensors () {float h = dht.readHumidity (); // সেলসিয়াস হিসাবে তাপমাত্রা পড়ুন (ডিফল্ট) float t = dht.readTemperature ();

// কোন পড়া ব্যর্থ হয়েছে কিনা তা পরীক্ষা করুন এবং প্রস্থান করুন

যদি (isnan (h) || isnan (t)) {Serial.println (F ("DHT সেন্সর থেকে পড়তে ব্যর্থ!")); প্রত্যাবর্তন; } dhtResult.h = h; dhtResult.t = t; }

ধাপ 5: ক্লাউডে ডেটা পাঠানো

একবার আমাদের সেই ডেটা হয়ে গেলে, পরবর্তী ধাপ হল ক্লাউড 4 আরপিআই পরিষেবাতে পাঠানো।

Arduino পৃষ্ঠার জন্য Cloud4RPi লাইব্রেরি API বর্ণনা করে, যা ব্যবহৃত পদ্ধতিগুলির একটি সেট:

  • ভেরিয়েবল তৈরি করুন, পড়ুন এবং আপডেট করুন,
  • MQTT প্রোটোকল ব্যবহার করে ক্লাউডে পরিবর্তনশীল মান পাঠান।

লাইব্রেরি তিনটি ভেরিয়েবল টাইপ সমর্থন করে: বুল, নিউমেরিক এবং স্ট্রিং।

ক্লাউড 4rpi.io ওয়েবসাইট থেকে ডিভাইস টোকেন ব্যবহার করে একটি API উদাহরণ তৈরির মাধ্যমে লাইব্রেরির কর্মপ্রবাহ শুরু হয় (বিস্তারিত জানতে নিবন্ধের অংশ 1 দেখুন)।

#if সংজ্ঞায়িত (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #অন্যথায় Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #যদি শেষ

তারপরে, DHT11 রিডিংয়ের জন্য ভেরিয়েবল ঘোষণা করুন:

c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");

তারপরে, সেন্সর থেকে ডেটা পান, সেগুলি ভেরিয়েবলে সংরক্ষণ করুন এবং ডেটা ক্লাউড 4 আরপিআইতে প্রকাশ করুন:

c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();

তাপমাত্রা এবং আর্দ্রতা দ্রুত পরিবর্তন হয় না, তাই প্রতি 5 মিনিটে একাধিক মান পাঠানোর প্রয়োজন হয় না।

ধাপ 6: ডায়াগনস্টিকস

Cloud4RPi পরিবর্তনশীল মান সহ ডায়াগনস্টিক ডেটা সমর্থন করে। আমি ডায়াগনস্টিক ডেটা হিসাবে আপটাইম, ওয়াই-ফাই সিগন্যাল শক্তি এবং আইপি ঠিকানা ব্যবহার করেছি:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // ওয়াইফাই সংকেত শক্তি c4r.declareDiagVariable ("আপটাইম");

দ্রষ্টব্য: যে মিলিস ফাংশনটি আমি ব্যবহার করি তা আপটাইম রিসেট করতে প্রতি ~ 50 দিনে শূন্য হয়। যা আমার প্রকল্পের জন্য যথেষ্ট বেশী।

নিম্নলিখিত কোড ডায়াগনস্টিক ভেরিয়েবল মান সেট করে:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP ()। toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

আপটাইম হিউম্যান রিডেবল ফাংশন মিলিসেকেন্ডকে সুবিধাজনক আকারে রূপান্তর করে:

স্ট্রিং আপটাইম হিউম্যান রিডেবল (স্বাক্ষরবিহীন লম্বা মিলিসেকেন্ড) {স্ট্যাটিক চর uptimeStr [32]; স্বাক্ষরবিহীন দীর্ঘ সেকেন্ড = মিলিসেকেন্ড / 1000; স্বাক্ষরবিহীন দীর্ঘ মিনিট = সেকেন্ড / 60; স্বাক্ষরবিহীন int ঘন্টা = মিনিট / 60; স্বাক্ষরবিহীন int দিন = ঘন্টা / 24; সেকেন্ড -= মিনিট * 60; মিনিট -= ঘন্টা * 60; ঘন্টা -= দিন * 24; sprintf (uptimeStr, "%d দিন%2.2d:%2.2d:%2.2d", (বাইট) দিন, (বাইট) ঘন্টা, (বাইট) মিনিট, (বাইট) সেকেন্ড); রিং স্ট্রিং (uptimeStr); }

ফাংশনটি একটি অদ্ভুত বড় সংখ্যার পরিবর্তে এই 5 দিনের মত 10:23:14 একটি স্ট্রিং আউটপুট করে।

ধাপ 7: প্রকল্পটি শুরু করুন এবং ডিবাগ করুন

প্রকল্পটি শুরু করুন এবং ডিবাগ করুন
প্রকল্পটি শুরু করুন এবং ডিবাগ করুন

তৈরি করা কোডটি কম্পাইল করে এবং এটিকে নোডএমসিইউতে ফ্ল্যাশ করার পরে, ডিভাইসটি একটি ক্লাউড পরিষেবার সাথে সংযোগ স্থাপন করে এবং ডেটা পাঠানো শুরু করে।

আপনি CLOUD4RPI_DEBUG প্রিপ্রসেসর ভেরিয়েবলকে 1 তে সেট করে লগিং ভার্বোসিটি বৃদ্ধি করতে পারেন (platform.io ফাইলে build_flags বিভাগে -D CLOUD4RPI_DEBUG = 1 যোগ করুন)।

পরবর্তী, cloud4rpi.io সাইটটি খুলুন এবং অনলাইনে নতুন ডিভাইসটি লক্ষ্য করুন। ডিভাইস থেকে প্রাপ্ত সমস্ত পরিবর্তনশীল মান দেখতে এটি খুলুন: সেন্সর এবং ডায়াগনস্টিকস।

ধাপ 8: ড্যাশবোর্ড কনফিগারেশন

ড্যাশবোর্ড কনফিগারেশন
ড্যাশবোর্ড কনফিগারেশন

এই ধাপে, ক্লাউডে ডেটা সংযোগ চালু আছে। এখন, ডেটার চাক্ষুষ উপস্থাপনা কনফিগার করা যাক।

আমি নিম্নলিখিত ড্যাশবোর্ড তৈরি করতে ড্যাশবোর্ড কনফিগারেশন UI ব্যবহার করেছি।

ড্যাশবোর্ড শেয়ার করা যায়, তাই আমি তাৎক্ষণিকভাবে এটি আমার বন্ধুর সাথে শেয়ার করি।

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

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

সম্পূর্ণ প্রকল্পের কোড সারমর্ম পাওয়া যায়।

এখন এ পর্যন্তই!

প্রশ্ন এবং পরামর্শ মন্তব্যে স্বাগত।

প্রস্তাবিত: