تحلیل کتابخانه

تحلیل و بررسی کتابخانه DHT.h

نوشته شده توسط پریسا پوربلورچیان

کتابخانه DHT.h محبوب و از تمامی سنسورهای دمای DHT پشتیبانی می‌کند. در اجرای پروژه های سطح مبتدی تا متوسط بر اساس رنج تشخیص سنسور  کاربرد ویژه ای دارد. در این آموزش به معرفی کتابخانه DHT و زیر شاخه های مورد نیاز میپردازیم. کتابخانه ی DHT Sensor Library توسط Adafruit توسعه یافته است. به واسطه ی این کتابخانه میتوانید دما و محیط را توسط سنسورهای مرتبط در دو پارامتر جداگانه دریافت و بخوانید. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید. برای درک صحیحی از کتابخانه بایستی روش فراخوانی و تحلیل کدها را بیاموزید که پیشنیاز آن زبان برنامه نویسی C, C++ است. کتابخانه ی DHT sensor Library برای سنسورهای زیر طراحی و توسعه داده شده است.

  • DHT11
  • DHT22
  • AM2301
  • AM2302

 


نصب کتابخانه DHT


برای نصب نرم افزار از منو آردوینو بر روی Sketch / Include libraries  کلیک کرده و سپس Manage libraries را انتخاب کنید. در صفحه ی باز شده برای یافتن کتابخانه عبارت dht را فیلتر کنید.

مراحل نصب کتابخانه DHT.h در آردوینو - دیجی اسپارک

 

مطابق عکس بالا شماره ی یک، کتابخانه ی DHT sensor library از Adafruit جدیدترین ورژن را نصب کنید. جهت وارد کردن کتابخانه به برنامه دو روش وجود دارد.

  1. تایپ کتابخانه و رعایت حروف بزرگ و کوچک
  2. وارد کردن از طریق منو نرم افزار Arduino IDE از مسیر Sketch / Include Library

 

#include "DHT.h"

 


تعریف مقادیر اولیه


قبل از شروع برنامه بایستی مقادیر اولیه برای سنسور را در برنامه تعریف کنیم.

  • پین انتخاب شده برای اتصال سنسور به میکرو
  • نوع سنسور
DHT dht(DHTPIN, DHTTYPE);

 

انتخاب پایه دیجیتال سنسور

#define DHTPIN 2     // Digital pin connected to the DHT sensor

 

انتخاب نوع سنسور

#define DHTTYPE DHT11   // DHT 11

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

#define DHTTYPE DHT21   // DHT 21 (AM2301)

 

و در نهایت پس از مشخص شدن پایه ی دیتا و نوع سنسور مورد استفاه در کد برنامه به صورت زیر تعریف می‌شود.

DHT dht(DHTPIN, DHTTYPE);

 


معرفی ساختمان کتابخانه DHT


در بخش Setup برنامه توابع اصلی کتابخانه تعریف می‌شود. برای سری سنسورهای DHT جهت فعال سازی تعاریف قبلی از دستور زیر استفاده می‌شود.

dht.begin();

 

در صورتیکه بخواهید پیام فعال شدن سنسور را در سریال مانیتور ببینید، کافیست از سریال مانیتور استفاده کنید.

  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

 


معرفی عملکرد توابع


به واسطه ی کتابخانه DHT.h دما و رطوبت را به صورت جداگانه تحلیل شده و دیتا مجزا نمایش داده می‌شود. برای نمایش دما از تابع readTemperature استفاده می‌شود. زمان خواندن دما از سنسور در حدود ۲۵۰ میلی ثانیه است و حتی ممکن است تا ۲ ثانیه هم زمان ببرد. به صورت پیشفرض دما بر حسب سلسیوس خوانده می‌شود.

readTemperature;

 جهت فراخوانی تابع readTemperature بایستی به صورت زیر و دخیره در متغیر مرتبط در برنامه تعریف شود.

 float t = dht.readTemperature();

// دراین کد منظور از t نام متغیر دلخواه برای ذخیره ی دیتای دریافتی از سنسور برای اندازه گیری دما است.

 

همچنین دما را به صورت مجزا بر حسب فارنهایتFahrenheit هم می‌توانید محاسبه کنید.

 float f = dht.readTemperature(true);

// منظور از f تعریف یک متغیر دلخواه برای محاسبه دما وذخیره آن در f بر حسب فارنهایت است.

 

برای نمایش دما از تابع readHumidity استفاده می‌شود. زمان خواندن رطوبت از سنسور در حدود ۲۵۰ میلی ثانیه است و حتی ممکن است تا ۲ ثانیه هم زمان ببرد.

readHumidity;

 جهت فراخوانی تابع readHumidity بایستی به صورت زیر و دخیره در متغیر مرتبط در برنامه تعریف شود.

float h = dht.readHumidity();

// منظور از h تعریف یک منغیر به صورت دلخواه برای ذخیره دیتای رطوبت از سنسور در متغیر است.

 

بررسی خطا و قطع شدن ارتباط

 

در کد برنامه در صورتیکه ارتباط سنسور با میکرو قطع شود، تمامی شرط های برنامه تست شده و سپس در صورتیکه هیچ کدام اجرا نشده باشد، پیام قطع ارتباط را برای ما نمایش میدهد.

 if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;

 


محاسبه‌ی Heat index


منظور از Heat index اندازه گیری دما و رطوبت بر اساس مقدار گرما و رطوبت دریافتی و حس شده از محیط است. این موارد در کتابخانه DHT.h به صورت زیر است.

computeHeatIndex برای رطوبت;

برای محاسبه‌ی رطوبت از دستور computeHeatIndex استفاده می‌شود که به صورت زیر در برنامه میتوانید تعریف کنید.

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);

 

computeHeatIndex برای دما;

برای محاسبه‌ی دما از دستور computeHeatIndex استفاده می‌شود که به صورت زیر در برنامه میتوانید تعریف کنید.

 // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

 


نمایش هر تابع در سریال مانیتور


در صورتیکه بخواهید اطلاعات هر تابع به صورت تفکیک شده در نرم افزار آردوینو و سریال مانیتور نمایش داده شود، بایستی از دستورات سریال مانیتور استفاده کنید.

Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));

 


سنسورهای قابل استفاده با کتابخانه DHT


سنسور دما و رطوبت AM2301 – DHT21

ماژول دما و رطوبت DHT11

ماژول دما رطوبت AM2302B – DHT22

سنسور دما و رطوبت DHT22 برند Asair

سنسور دما و رطوبت DHT11 Humidity Sensor

ماژول دما رطوبت Digital Temperature AM2302 

 


جمع بندی لیدی پای


از مزایای سری سنسورهای خانواده DHT تنوع بالا و قیمت ارزان تا گران بسته به مصرف و دقت اندازه گیری در پروژه است. سنسور DHT11 ارزان ترین سنسور و فقط مناسب اندازه گیری دمای مثبت محیط است که به دو صورت سنسور و ماژول مصرف عمومی دارد. در مقابل سنسور دمای DHT22 با همان ظاهر اما دمای منفی و مثبت را اندازه گیری می‌کند. دو سنسور AM2301 و AM2302 با دقت بالاتر و برای استفاده در محیط هایی که دقت بالاتر و اما نیاز به هزینه کمتر در مقابل سنسورهای صنعتی است، کاربرد دارد و استفاده می‌شود. با استفاده از این آموزش میتوانید تمامی سنسورهای لینک شده را راه اندازی و تست اولیه را انجام دهید. در نظر داشته باشید در کد برنامه نوع سنسور استفاده شده مثل DHT11, DHT22, AM2301, AM2302 را انتخاب کنید.

 

چنانچه در مراحل ارایه شده در این آموزش سوالی داشتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.

 

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۶ دیدگاه

    • با سلام بله هیچ تفاوتی ندارد و این کتابخانه در لایبرری آردوینو قرار دارد.

  • با سلام و تشکر از مطلب خوبتون
    به گمانم در بخش computeHeatIndex ; منظور محاسبه دمای حس شده مبتنی بر میزان رطوبت است که با عبارت “real feel” عموماً شناخته می شود. که به ترتیب برای دمای بر حسب فارنهایت f و بر حسب سلسیوس t محاسبه می شود.

    • سلام و تشکر
      از اینکه نظر و تجربه ی خود را با دیگر کاربران به اشتراک می‌گذارید، صمیمانه سپاسگزارم.

  • سلام ممنون از مطالب خوبتون. من میخوام با یه سنسور Ky-013 دما رو برداشت کنم کتابخانه مربوط رو پیدا نمیکنم چه کتابخانه ای برای این سنسور آنالوگ باید استفاده کنم؟

    • با سلام
      نیاز به کتابخانه ندارید. توسط دستورات آنالوگ از سنسور دیتا دریافت کنید.