সুচিপত্র:

DHT12 (i2c সস্তা আর্দ্রতা এবং তাপমাত্রা সেন্সর), দ্রুত সহজ ব্যবহার: 14 টি ধাপ
DHT12 (i2c সস্তা আর্দ্রতা এবং তাপমাত্রা সেন্সর), দ্রুত সহজ ব্যবহার: 14 টি ধাপ

ভিডিও: DHT12 (i2c সস্তা আর্দ্রতা এবং তাপমাত্রা সেন্সর), দ্রুত সহজ ব্যবহার: 14 টি ধাপ

ভিডিও: DHT12 (i2c সস্তা আর্দ্রতা এবং তাপমাত্রা সেন্সর), দ্রুত সহজ ব্যবহার: 14 টি ধাপ
ভিডিও: DHT12 I2C Temperature - Relative Humidity Sensor Demo 2024, জুলাই
Anonim
DHT12 (i2c সস্তা আর্দ্রতা এবং তাপমাত্রা সেন্সর), দ্রুত সহজ ব্যবহার
DHT12 (i2c সস্তা আর্দ্রতা এবং তাপমাত্রা সেন্সর), দ্রুত সহজ ব্যবহার

আপনি আমার সাইটে https://www.mischianti.org/2019/01/01/dht12-library-en/ এ আপডেট এবং অন্যান্য খুঁজে পেতে পারেন।

আমি সেন্সর পছন্দ করি যা 2 তারের (i2c প্রোটোকল) ব্যবহার করা যেতে পারে, কিন্তু আমি সস্তা একটি পছন্দ করি।

এটি খুব কম খরচে তাপমাত্রা/আর্দ্রতা সেন্সর (1 $ এর কম) DHT12 সিরিজের জন্য একটি Arduino এবং esp8266 লাইব্রেরি যা i2c বা একটি ওয়্যার সংযোগের সাথে কাজ করে।

খুব উপযোগী যদি আপনি esp01 ব্যবহার করতে চান (যদি আপনি সিরিয়াল ব্যবহার করেন তবে আপনার মাত্র 2 টি পিন আছে) আর্দ্রতা এবং তাপমাত্রা পড়তে এবং i2c LCD তে প্রদর্শন করতে।

এআই পড়ে যে কখনও কখনও মনে হয় যে ক্রমাঙ্কন প্রয়োজন, কিন্তু আমি এই গাছ আছে এবং DHT22 অনুরূপ মান পেতে যদি আপনার এই সমস্যাটি ক্রমাঙ্কন হয় তবে জিথুবের সমস্যাটি খুলুন এবং আমি বাস্তবায়ন যোগ করি।

ধাপ 1: কিভাবে I2c কাজ করে

কিভাবে I2c কাজ করে
কিভাবে I2c কাজ করে

I2C এর দুটি তারের সাথে কাজ করে, এসডিএ (ডেটা লাইন) এবং এসসিএল (ক্লক লাইন)।

এই দুটি লাইনই ওপেন-ড্রেন, কিন্তু প্রতিরোধক দিয়ে টানা-টানা।

লাইনে সাধারণত একজন মাস্টার এবং এক বা একাধিক ক্রীতদাস থাকে, যদিও একাধিক মাস্টার থাকতে পারে, তবে আমরা সে সম্পর্কে পরে কথা বলব।

মাস্টার এবং ক্রীতদাস উভয়ই ডেটা প্রেরণ বা গ্রহণ করতে পারে, অতএব, একটি ডিভাইস এই চারটি রাজ্যের একটিতে থাকতে পারে: মাস্টার ট্রান্সমিট, মাস্টার রিসিভ, স্লেভ ট্রান্সমিট, স্লেভ রিসিভ।

ধাপ 2: লাইব্রেরি

আপনি এখানে আমার লাইব্রেরি খুঁজে পেতে পারেন।

ডাউনলোড করতে

উপরের ডান কোণে ডাউনলোড বোতামে ক্লিক করুন, অসম্পূর্ণ ফোল্ডারটির নাম পরিবর্তন করুন DHT12।

DHT ফোল্ডারে DHT12.cpp এবং DHT12.h আছে কিনা তা পরীক্ষা করুন।

DHT লাইব্রেরি ফোল্ডারটি আপনার / লাইব্রেরি / ফোল্ডারে রাখুন।

আপনার প্রথম লাইব্রেরি হলে আপনাকে লাইব্রেরি সাবফোল্ডার তৈরি করতে হতে পারে।

আইডিই পুনরায় চালু করুন।

ধাপ 3: আচরণকারী

এই লাইব্রে স্ট্যান্ডার্ড ডিএইচটি লাইব্রেরি সেন্সর (এবং অনেক কোড কপি) এর আচরণকে অনুকরণ করার চেষ্টা করে, এবং আমি একই পদ্ধতিতে i2c olso পরিচালনার জন্য কোড যোগ করি।

পদ্ধতিটি DHT লাইব্রেরি সেন্সরের একই, কিছু কিছু শিশির বিন্দু ফাংশন যোগ করে।

ধাপ 4: I2c ব্যবহার

I2c (ডিফল্ট ঠিকানা এবং ডিফল্ট এসডিএ এসসিএল পিন) ব্যবহার করার জন্য কনস্ট্রাক্টর হল:

DHT12 dht12;

এবং এসডিএ এসসিএল পিনের জন্য ডিফল্ট মান নিন।

(ESP-01 এর জন্য প্রয়োজনীয় esp8266 এর জন্য নির্দিষ্ট কনট্রাক্টর দিয়ে পুনরায় সংজ্ঞায়িত করা সম্ভব)। অথবা

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> ঠিকানা

ঠিকানা পরিবর্তন করতে।

ধাপ 5: এক তারের ব্যবহার

একটি তার ব্যবহার করতে:

DHT12 dht12 (uint8_t addressOrPin, সত্য)

addressOrPin -> পিন

বুলিয়ান মান হল ওয়ান ওয়্যার বা আই 2 সি মোড নির্বাচন।

ধাপ 6: অন্তর্নিহিত পড়া

আপনি এটিকে "অন্তর্নিহিত", "সাধারণ পঠন" বা "সম্পূর্ণ রিড" এর সাথে ব্যবহার করতে পারেন: অন্তর্নিহিত, সেন্সরের সত্যিকারের পড়া শুধুমাত্র প্রথম পড়া, দ্বিতীয়টি 2 সেকেন্ডে পরিণত হয়। ব্যবধান হল প্রথম পড়ার সঞ্চিত মান।

// সেন্সরের পড়ার সময় 2 সেকেন্ড অতিবাহিত হয়, যদি না আপনি ফোর্স প্যারামিটার পাস করেন

// সেলসিয়াস হিসাবে তাপমাত্রা পড়ুন (ডিফল্ট) ফ্লোট t12 = dht12.readTemperature (); // ফারেনহাইট হিসাবে তাপমাত্রা পড়ুন (isFahrenheit = true) float f12 = dht12.readTemperature (true); // সেন্সর রিডিং 2 সেকেন্ড পর্যন্ত 'পুরানো' হতে পারে (এটি একটি খুব ধীর সেন্সর) ফ্লোট h12 = dht12.readHumidity (); // ফারেনহাইট (ডিফল্ট) ভাসমান তাপ সূচক গণনা করুন hif12 = dht12.computeHeatIndex (f12, h12); // সেলসিয়াসে গণনা তাপ সূচক (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // ফারেনহাইটে শিশির বিন্দু গণনা করুন (ডিফল্ট) ফ্লোট dpf12 = dht12.dewPoint (f12, h12); // সেলসিয়াসে শিশির বিন্দু গণনা করুন (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

ধাপ 7: সহজ পড়া

পড়ার স্ট্যাটাস পেতে সহজ পড়া।

// সেন্সরের পড়ার সময় 2 সেকেন্ড অতিবাহিত হয়, যদি না আপনি ফোর্স প্যারামিটার পাস করেন

bool chk = dht12.read (); // সত্য পড়া ঠিক আছে, মিথ্যা পড়ার সমস্যা

// সেলসিয়াস হিসাবে তাপমাত্রা পড়ুন (ডিফল্ট)

ভাসা t12 = dht12.readTemperature (); // ফারেনহাইট হিসাবে তাপমাত্রা পড়ুন (isFahrenheit = true) float f12 = dht12.readTemperature (true); // সেন্সর রিডিং 2 সেকেন্ড পর্যন্ত 'পুরানো' হতে পারে (এটি একটি খুব ধীর সেন্সর) ফ্লোট h12 = dht12.readHumidity (); // ফারেনহাইট (ডিফল্ট) ভাসমান তাপ সূচক গণনা করুন hif12 = dht12.computeHeatIndex (f12, h12); // সেলসিয়াসে গণনা তাপ সূচক (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // ফারেনহাইটে শিশির বিন্দু গণনা করুন (ডিফল্ট) ফ্লোট dpf12 = dht12.dewPoint (f12, h12); // সেলসিয়াসে শিশির বিন্দু গণনা করুন (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

ধাপ 8: সম্পূর্ণ পড়া

একটি নির্দিষ্ট স্ট্যাটাস পেতে সম্পূর্ণ পড়া।

// সেন্সরের পড়ার সময় 2 সেকেন্ড অতিবাহিত হয়, যদি না আপনি ফোর্স প্যারামিটার পাস করেন

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ n সেন্সর পড়ুন:")); সুইচ (chk) {case DHT12:: OK: Serial.println (F ("OK")); বিরতি; কেস DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum error")); বিরতি; কেস DHT12:: ERROR_TIMEOUT: Serial.println (F ("টাইমআউট ত্রুটি")); বিরতি; DHT12 কেস বিরতি; DHT12 কেস বিরতি; কেস DHT12:: ERROR_CONNECT: Serial.println (F ("সংযোগ ত্রুটি")); বিরতি; কেস DHT12:: ERROR_ACK_L: Serial.println (F ("AckL error")); বিরতি; কেস DHT12:: ERROR_ACK_H: Serial.println (F ("AckH error")); বিরতি; কেস DHT12:: ERROR_UNKNOWN: Serial.println (F ("Unknown error DETECTED"); বিরতি; কেস DHT12:: NONE: Serial.println (F ("কোন ফলাফল নেই")); বিরতি; ডিফল্ট: Serial.println (F ("Unknown error")); বিরতি; }

// সেলসিয়াস হিসাবে তাপমাত্রা পড়ুন (ডিফল্ট)

ভাসা t12 = dht12.readTemperature (); // ফারেনহাইট হিসাবে তাপমাত্রা পড়ুন (isFahrenheit = true) float f12 = dht12.readTemperature (true); // সেন্সর রিডিং 2 সেকেন্ড পর্যন্ত 'পুরানো' হতে পারে (এটি একটি খুব ধীর সেন্সর) ফ্লোট h12 = dht12.readHumidity (); // ফারেনহাইট (ডিফল্ট) ভাসমান তাপ সূচক গণনা করুন hif12 = dht12.computeHeatIndex (f12, h12); // সেলসিয়াসে গণনা তাপ সূচক (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // ফারেনহাইটে শিশির বিন্দু গণনা করুন (ডিফল্ট) ফ্লোট dpf12 = dht12.dewPoint (f12, h12); // সেলসিয়াসে শিশির বিন্দু গণনা করুন (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

ধাপ 9: সংযোগ ডায়াগ্রাম

উদাহরণ সহ, সংযোগ ডায়াগ্রাম আছে, সঠিক পুলআপ প্রতিরোধক ব্যবহার করা গুরুত্বপূর্ণ।

বোবদাস, ডিপ্লাসা এবং অ্যাডাফ্রুটকে ধন্যবাদ, গিথুবের কোডটি শেয়ার করার জন্য (যেখানে আমি কিছু কোড এবং আইডিয়া নিয়েছি)।

ধাপ 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

ধাপ 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

ধাপ 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

ধাপ 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

ধাপ 14: ধন্যবাদ

Arduino খেলার মাঠ (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c প্রকল্প সিরিজ (সংগ্রহ):

  • তাপমাত্রা আর্দ্রতা সেন্সর
  • এনালগ সম্প্রসারণকারী
  • ডিজিটাল সম্প্রসারণকারী
  • LCD প্রদর্শন

প্রস্তাবিত: