شناخت و راه اندازی DHT با آردوینو – { پروژه های آردوینو }

مقدمه

با سلام خدمت همه شما دوستان. در این جلسه قصد داریم در مورد نحوه راه اندازی سنسور دما و رطوبت DHT با همدیگه صحبت کنیم. مثل همیشه پینهاد میکنم اگه چیزی از آردوینو نمیدونید ، ابتدا به دوره آموزشی مقدماتی آردوینو نگاهی بیندازید:

مقدمه رو بیشتر از این طولانی نمیکنیم و وارد اصل مطلب میشیم.

دوست عزیز ، این جلسه یک جلسه کاملا عملی است. اگر نیاز به کدنویسی دارد ، ادیتور خود را باز کنید. اگر مداری لازم است بسته شود ، قطعات آن را تهیه کنید و گام به گام با این جلسه پیش بروید. اگر هم محاسباتی لازم است ، خودتان کاغذ و قلم را بردارید و محاسبات را انجام دهید. این کارها را انجام دهید تا یک بار برای همیشه آردوینو را به صورت حرفه ای یاد بگیرید.

آشنایی با سنسور DHT :

سنسور DHT یک سنسور دما و رطوبت ارزان قیمت و کند هست که برای کارهای مقدماتی میشه ازش استفاده کرد. این سنسور از دو بخش تشکیل شده. یک سنسور رطوبت خازنی و یک ترمیستور . داخل این سسنور یک چیپ مرکزی هم وجود داره که مقادیر آنالوگ رو به دیجیتال تبدیل میکنه و نتیجه دیجیتال شده رو به خروجی انتقال میده و خوندن این مقدار دیجیتال با استفاده از میکروکنترلر بسیار آسون هست.در شکل زیر نمایی از سنسور DHT که در دو مدل DHT11 و DHT22 وجود داره رو میبینید:

سنسورهای DHT

مقایسه DHT11 و DHT22 :

همونطور که گفتیم ، دو نوع سنسور DHT وجود داره که این دو نوع مشابه همدیگه هستند و پایه های خروجی اون ها هم یکسان هست ، اما مشخصات متفاوتی رو دارند. در زیر مشخصات این دو مدل با یکدیگه مقایسه شده :

مدل DHT11 :

  • فوق العاده ارزان قیمت
  • تغذیه 3 تا 5 ولت
  • ماکزیمم جریان مصرفی 2.5 میلی آمپر ( در حالتی که عمل تبدیل آنالوگ به دیجیتال را انجام میدهد و ما هم از آن میخواهیم دما را ارسال کند)
  • رنج اندازه گیری (مناسب) رطوبت از  20 تا 80 درصد با دقت 5 درصد
  • رنج دمایی از 0 تا 50 درجه با دقت 2 درجه سانتیگراد
  • حداکثر نرخ نمونه برداری 1Hz ( یک ثانیه در هر بار)
  • اندازه : 15.5mm در 12mm در 5.5mm 
  • دارای 4 پین خروجی با فاصله 0.1 اینچ

مدل DHT22 :

  • ارزان قیمت
  • تغذیه 3 تا 5 ولت
  • ماکزیم جریان مصرفی 2.5 میلی آمپر ( در حالتی که عمل تبدیل آنالوگ به دیجیتال را انجام میدهد و ما هم از آن میخواهیم دما را ارسال کند)
  • مناسب برای رنج اندازه گیری رطوبت از 0 تا 100 درصد با دفت 2 تا 5 درصد
  • قابلیت اندازه گیری دما از 40- درجه تا 125 درجه با دقت 0.5 درصد
  • حداکثر نرخ نمونه برداری 0.5 هرتز ( هر ثانیه دوبار)
  • اندازه 15.1mm در 25mm در 7.7mm
  • دارای 4 پین خروجی با فاصله 0.1 اینچ

همونطور که از مقایسه بالا هم مشخص هست DHT22 یه مقدار دقتش بالاتره و رنج های اندازه گیری بیشتری هم داره. هر دوتاشون برای انتقال داده ها از یک پایه دیجیتال استفاده میکنند و یه خورده هم کند هست. ( DHT11 هر 1 ثانیه یک بار و DHT22 هر 1 ثانیه 2 بار دما رو ارسال میکنه). در شکل زیر پایه های خروجی این دو سنسور رو مشاهده میکنید :

راه اندازی DHT با آردوینو

بخش سخت افزاری :

اتصال سنسور به آردوینو:

اتصال این سنسور به آردوینو بسیار ساده هست و چون فاصله پین هاشون با همدیگه 01 اینچ هست ، پس میتونیم اون رو روی بردبرد قرار بدیم و سیم های مورد نظرمون رو بهش وصل کنیم.

همونطور که در شکل بالا دیدم این سنسور 4 تا پایه داره که ما با یکی از پایه هاش (NC) اصلا کاری نداریم. در ضمن بین پایه های VCC و Data باید یک مقاومت Pull up قرار بدیم ( مقاومت 10K مناسب هست). البته خود آردوینو هم یک Pullup داخلی در رنج 20 تا 50 کیلو داره که البته بسیار ضعیف هست. ( در صورتی که نمیدونید مقاومت Pull up چیست هست میتونید از این لینک ، آموزش مربوط به اون رو بخونید)

در شکل زیر نحوه اتصال این سنسور به برد آردوینو نشان داده شده است :

البته پایه Data میتونه به هر کدوم از پایه های دیجیتال وصل بشه و هیچ محدودتی وجود نداره. ( البته بهتر هست که به پایه های شماره 0 و 1 دیجیتال متصل نشه ، چون اون پایه ها برای پروگرم کردن میکروکنترلر هستند. )

بخش نرم افزاری:

قبل از هر چیزی ، مثل سایر سنسورها در آردوینو ما نیاز داریم تا کتابخانه مربوط به این سنسور رو نصب کنیم.از این لینک میتونید این کتابخانه و چندین کتابخانه دیگر را دانلود و نصب کنید. ( ما نحوه دانلود و نصب کتابخانه ها رو در این لینک آموزش داده ایم. اگه مشکلی دارید میتونید مراجعه کنید.  ) . پس از دانلود این مجموعه کتابخانه ها ، باید کتابخانه DHTlib را جدا کرده و آن را جداگانه نصب کنید. 

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

#include <dht.h>
#define dataPin 2 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object
void setup() {
  Serial.begin(9600);
}
void loop() {
  int readData = DHT.read11(dataPin); // Reads the data from the sensor
  float t = DHT.temperature; // Gets the values of the temperature
  float h = DHT.humidity; // Gets the values of the humidity
  
  // Printing the results on the serial monitor
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print("    Humidity = ");
  Serial.print(h);
  Serial.println(" % ");
  
  delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}

توضیح خط به خط کد:

  • خط شماره 1 و 2: تعریف هدر این کتابخانه و مشخص کردن پایه ی دیجیتالی که میخواهیم سنسور DHT ما به آن وصل شود.
  • خط 3: تعریف یک آبجکت از کلاس dht با نام DHT
  •  خط 5: راه اندازی ارتباط سریال برای نشان داده دما و رطوبت بر روی پنجره سریال با بادریت 9600 
  • خط 8 : خواندن دیتا از سنسور و ریختن آن در متغیر readData  ( اگر  از DHT22 استفاده میکنید باید از دستور read22 به جای read11 استفاده کنید.)
  • خط 9 و 10 : خواندن مقادیر رطوبت و دما و ریختن آن در متغیرهای t و h
  • خطوط 13 تا 18 : نمایش این داده ها بر روی پنجره سریال
  • خطوط 19 : 2 ثانیه تاخیر فاصله خواندن های متوالی از سنسور
خوب دوستان. برای این جلسه هم کافی است. مثل همیشه میتویند ما رو در تلگرام و یا اینستاگرام دنبال کنید:
 
 
اشتراک گذاری:
مطالب زیر را حتما بخوانید

18 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

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

    • با سلام و احترام.
      آیا شما مقاومت 10 کیلو را در مدار قرار داده اید ؟ پس از این کار لطفا از سالم بودن سنسور خود اطمینان حاصل فرمایید.
      در غیر این صورت لطفا تصویری واضح از مدار خود به علاوه کد خود ارسال کنید تا مورد بررسی قرار گیرد.
      با تشکر.

  • سلام خسته نباشین
    سوالی که داشتم اینه که حالا دما رو کجا مشاهده کنم .روی ال سی دی چطور نمایش داده بشه و چطور روی مانیتور کامپیوتر مشاهده کنم . ممنون

    • با سلام و احترام.
      در مورد دیدن دما بر روی مانیتور که کدهای مربوط به ارتباط سریال در همین مطلب آورده شده است. دستور Serial.print مربوط به نمایش خروجی در مانیتور می باشد.
      برای نمایش بر روی LCD نیز باید ابتدا به برد آردوینو خود یک lcd متصل کنید تا بتوانید در خروجی داده ها را مشاهده کنید. ما در جلسه زیر نحوه اتصال یک LCD به برد آردوینو را آورده ایم:
      اتصال LCD به برد آردوینو
      موفق باشید.

  • با سلام و خسته نباشید خدمت شما
    سوال بنده اینه که آیا بدون استفاده از مقاومت 10K مشکلی در مدار پیش میاد . اگه نباشه چه مشکلی پیش میاد .
    ممنون

    • با سلام خدمت شما.
      این مقاومت در نقش یک مقاومت pull up می باشد. البته شما میتوانید از مقاومت pull up داخلی آردوینو هم استفاده کنید که البته ضعیف می باشد و پیشنهاد می شود حتما مقاومت خارجی مثل آنچه در توضیحات گفته شده بود قرار دهید.
      بدون این مقاومت ممکن است مدار شما به درستی کار نکند و یا در محیط های پرنویز از کار بیفتد و پیشنهاد جدی آن است که حتما از آن استفاده کنید.
      در صورتی که با مقاومت pull up آشنایی ندارید ، میتوانید از این لینک استفاده کنید.
      موفق باشید.

  • سلام ببخشید اردینو قابلیت اتصال چند سنسور DHTرا دارد؟

    • با سلام خدمت شما.
      به صورت پیش فرض که چون 13 پایه دیجیتال در اختیار ماست ، پس میتوانیم 13 سنسور را حداقل به آن متصل کنیم. البته در صورتی که این تعداد برای شما کم است میتوانید از مالتی پلکسرها برای افزایش تعداد سنسورهای خود استفاده کنید که بسته به نوع مالتی پلکسر میتوانید تعداد سنسورهای بسیار بیشتر (تا حدود 30) به آردوینو خود متصل کنید.
      موفق باشید.

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