آردوینو آردوینو Arduino Uno پروژه های آردوینو پکیج سنسور آردوینو

DHT11 سنسور دما رطوبت از پکیج سنسور کیت آردوینو Arduino Sensor

نوشته شده توسط علیرضا قربانی

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

 


معرفی سنسور دما رطوبت DHT11


سنسور DHT11 یک سنسور رطوبت و دما دیجیتالی است که توسط شرکت Aosong (Shenzhen) استانداردسازی و تولید می‌شود. این سنسور از دو عنصر حسگر مخصوص دما و رطوبت تشکیل شده است که از آنالوگ به دیجیتال تبدیل می‌شوند. DHT در نام این سنسور مخفف Digital Humidity and Temperature است، که به معنای رطوبت و دمای دیجیتال است. DHT11 از اندازه کوچکی برخوردار است و برای پروژه‌هایی که فضای محدودی دارند، بسیار مناسب است.این سنسور از رابط یکپارچه‌ای برای ارتباط با میکروکنترلرها استفاده می‌کند و ارتباط آن با میکروکنترلر از طریق سه پین دیجیتال امکان‌پذیر است.محدوده اندازه‌گیری دما از ۰ درجه سانتیگراد تا ۵۰ درجه سانتیگراد و محدوده اندازه‌گیری رطوبت از ۲۰٪ تا ۹۰٪ است. دقت اندازه‌گیری دما در حدود ±۲ درجه سانتیگراد و دقت اندازه‌گیری رطوبت در حدود ±۵٪ است. این سنسور برای ارتباط با میکروکنترلرها، سیگنال خروجی دیجیتال استفاده می‌کند که به صورت یک سیگنال دیجیتال با ولتاژ مشخص (اعمال ولتاژ بالای ۳٫۵ ولت به عنوان منطقی “۱” و اعمال ولتاژ کمتر از ۰٫۵ ولت به عنوان منطقی “۰”) اطلاعات دما و رطوبت را منتقل می‌کند. این سنسور در پروژه‌های اتوماسیون منزل، کنترل محیط، رطوبت‌سنج‌ها، اتاق‌های گلخانه و سیستم‌های کنترل هوشمند استفاده می‌شود.

 


مشخصات فنی سنسور DHT11


سنسور DHT11 یک سنسور ارزان قیمت و راه‌اندازی آسان برای اندازه‌گیری دما و رطوبت محیط است. با توجه به دقت متوسط و محدوده محدود اندازه‌گیری، مناسب برای برنامه‌ها و پروژه‌های ساده‌تر است که نیاز به دقت بالا ندارند. به عنوان یک سنسور ارزان قیمت و کارآمد، می‌تواند در بسیاری از برنامه‌ها و پروژه‌های هوشمندی مورد استفاده قرار گیرد.

  • محدوده دما: ۰ درجه سانتیگراد تا ۵۰ درجه سانتیگراد
  • دقت دما: ±۲ درجه سانتیگراد
  • محدوده رطوبت: ۲۰٪ تا ۹۰٪
  • دقت رطوبت: ±۵٪
  • ولتاژ کاری: ۳ تا ۵٫۵ ولت DC
  • سیگنال خروجی: سیگنال دیجیتال یکپارچه با دقت ۱ بیت
  • رابط: دو پین (۳ پین در برخی نسخه‌ها)
  • مصرف انرژی: کمتر از ۱ میلی‌آمپر در حالت آماده‌باش
  • زمان نمونه‌برداری: ۲ ثانیه
  • ابعاد: ۱۵٫۵ میلی‌متر در ۱۲ میلی‌متر
  • قابلیت ارتباط با میکروکنترلرها از طریق سه پین دیجیتال

 


سخت‌افزار مورد نیاز


برد آردوینو UNO

ماژول DHT11 از پکیج سنسور کیت آردوینو

 

 


اتصال ماژول دما رطوبت DHT11 آردوینو


برای اتصال سنسور DHT11 به برد آردوینو، نیاز به استفاده از یک برد آردوینو (Arduino Uno) و سنسور DHT11 دارید. همچنین، شما باید کتابخانه DHT11 را به آردوینو اضافه کنید تا بتوانید با سنسور ارتباط برقرار کنید. دقت کنید که پین‌های سنسور DHT11 ممکن است بر روی برد‌های مختلف آردوینو متفاوت باشد. در اینجا یک راهنمای کلی برای اتصال سنسور DHT11 به آردوینو آورده شده است:

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

  • پین VCC سنسور به پایه ۵V برد آردوینو متصل می‌شود.
  • پین GND سنسور به پایه GND برد آردوینو متصل می‌شود.
  • پین DATA سنسور به یکی از پین‌های دیجیتال برد آردوینو متصل می‌شود، مثلاً پایه ۲٫

نصب کتابخانه DHT11:

برای استفاده از سنسور DHT11، ابتدا باید کتابخانه DHT11 را به آردوینو اضافه کنید. این کتابخانه مربوط به کنترل سنسور DHT11 است و کمک می‌کند تا داده‌های دما و رطوبت را از سنسور بخوانید. برای نصب کتابخانه DHT11 به صورت زیر عمل کنید.وارد نرم‌افزار آردوینو شوید.از منوی Sketch > Include Library > Manage Libraries… را انتخاب کنید.در جعبه جستجو، “DHT11” را تایپ کنید.کتابخانه “DHT sensor library by Adafruit” را پیدا کنید و نصب کنید.

 

DHT11 arduino sensorkit

 


کد آردوینو سنسور دما رطوبت DHT11


 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 


تحلیل کد آردوینو


این کد، برای اندازه‌گیری دما، رطوبت و شاخص گرما (Heat Index) با استفاده از سنسور DHT11 طراحی شده است.

ابتدا کتابخانه DHT.h را اضافه می‌کنیم.

DHTPIN به عنوان شماره پینی که سنسور DHT11 به آن متصل است، تعریف می‌شود. در اینجا، از پین ۲ آردوینو استفاده می‌شود.

DHTTYPE به عنوان نوع سنسور تعیین می‌شود، که در این حالت از DHT11 استفاده می‌شود.

سپس یک شیء از کلاس DHT با نام “dht” ایجاد می‌شود و به عنوان پارامترها، شماره پین (DHTPIN) و نوع سنسور (DHTTYPE) به آن داده می‌شود.

در تابع setup، سرعت ارتباط سریال (Serial) برابر با ۹۶۰۰ بیت بر ثانیه تنظیم می‌شود و عبارت “DHTxx test!” در مانیتور سریال چاپ می‌شود. سپس کتابخانه DHT11 آماده به کار می‌شود با فراخوانی تابع dht.begin().

تابع loop شامل کد اصلی برنامه است که تکراری اجرا می‌شود.

با دستور delay(2000) دو ثانیه صبر می‌کنیم تا مقدار بعدی را از سنسور دریافت کنیم.

با استفاده از توابع dht.readHumidity()، dht.readTemperature() و dht.computeHeatIndex() مقادیر رطوبت (h)، دما به سانتیگراد (t) و دما به فارنهایت (f) به ترتیب اندازه‌گیری می‌شوند.

در قسمت بعد، با استفاده از تابع isnan()، مقادیر رطوبت، دما و شاخص گرما بررسی می‌شود که اگر مقادیری نا‌معتبر بودند، پیغام خطا “Failed to read from DHT sensor!” چاپ می‌شود و برنامه ترکیب می‌شود.

در صورت موفقیت‌آمیز بودن خواندن مقادیر، مقادیر رطوبت، دما و شاخص گرما با استفاده از دستورات Serial.print() در مانیتور سریال چاپ می‌شوند. اطلاعات به صورت متنی برای رطوبت، دما به سانتیگراد و دما به فارنهایت و شاخص گرما به سانتیگراد و فارنهایت چاپ می‌شوند.

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

 

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

 

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

 

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

علیرضا قربانی

علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

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

۲۵ دیدگاه

  • من فقط سنسورشو دارم،ماژول نیست، این کدی که نوشتید ارور میده
    ‘class DHT’ has no member named ‘ComputeHeatIndex’

  • سلام عرض ادب ، با عرض تشکر فراااااااوان از سایت عالی شما ، مهندسین این ماژول ، راه اندازی برای برد آردینو لئوناردو نیز همینگونه است؟ یا تفاوت دارد؟
    اگر ممکنه برای راه اندازی با برد آردینو لئوناردو نیز یک توضیح بگید

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

      • تشکر مهندس ، قربان فقط طریقه نصب سخت افزاری این سنسور با ماژول لئوناردو هم همینگونه است ؟ طریقه نصب پین ها رو منظورمه که نصب این سنسور با ماژول های دیگر هم فرقی می کند؟

  • سلام..متاسفانه تمامی اتصالات چک و کد ها در برنامه paste شد این ارور مشاهده میشه ممنون میشم کمک کنین ..هرکاری کردم درست نشد
    Arduino: 1.8.0 (Windows 8.1), Board: “Arduino/Genuino Uno”
    tal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    Multiple libraries were found for “DHT.h”
    در مورد کتابخانه adafruit هم تمامی کتابخانه ها دانلود شده..حتی زیپ فایل هم نصب شده
    ممنون

  • با سلام
    من این پروژه رو انجام دادم.ولی توی کنسول ،خروجی رو درست نشون نمیده.
    j⸮⸮⸮<⸮DHTxx test!
    Z⸮*⸮⸮^⸮⸮DHTxx test!
    ⸮⸮^⸮⸮۹⸮⸮⸮DHTxx test!
    ⸮⸮')⸮⸮⸮⸮DHTxx test!

    هم توی برنامه و هم توی کنسول باد ریت ۹۶۰۰ هست

  • با سلام و خسته نباشید ممنون میشم در این مورد راهنماییم کنید
    من میخوام اطلاعات دماو رطوبت را هر چندثانیه اندازه گیری کنم و روی رم اس دی ذخیره کنم برنامشو نوشتم اما کار نمیکنه ممنون میشم راهنماییم کنید
    #include
    #include
    #include “DHT.h”

    #define DHTPIN 8
    #define DHTTYPE DHT22

    long seconds=00;
    long minutes=00;
    long hours=00;

    int CS_pin = 10;

    DHT dht(DHTPIN, DHTTYPE);
    File sd_file;

    void setup() {
    Serial.begin(9600);
    pinMode(CS_pin, OUTPUT);
    dht.begin();
    // SD Card Initialization
    if (SD.begin()) {
    Serial.println(“SD card is initialized. Ready to go”);
    }
    else {
    Serial.println(“Failed”);
    return;
    }

    sd_file = SD.open(“data.txt”, FILE_WRITE);

    if (sd_file) {
    Serial.print(“Time”);
    Serial.print(“,”);
    Serial.print(“Humidity”);
    Serial.print(“,”);
    Serial.print(“Temperature_C”);
    Serial.print(“,”);
    Serial.print(“Temperature_F”);
    Serial.print(“,”);
    Serial.println(“Heat_index”);

    sd_file.print(“Time”);
    sd_file.print(“,”);
    sd_file.print(“Humidity”);
    sd_file.print(“,”);
    sd_file.print(“Temperature_C”);
    sd_file.print(“,”);
    sd_file.print(“Temperature_F”);
    sd_file.print(“,”);
    sd_file.println(“Heat_index”);
    }
    sd_file.close(); //closing the file
    }

    void loop() {
    sd_file = SD.open(“data.txt”, FILE_WRITE);
    if (sd_file) {
    senddata();
    }
    // if the file didn’t open, print an error:
    else {
    Serial.println(“error opening file”);
    }
    delay(1000);
    }

    void senddata() {
    for(long seconds = 00; seconds =58) {
    minutes= minutes + 1;
    }

    if (minutes>59) {
    hours = hours + 1;
    minutes = 0;
    }

    sd_file.flush(); //saving the file

    delay(2000);
    }
    sd_file.close(); //closing the file
    }

  • سلام مهندس من میخواسم با LCD دما و رطوبت رو نمایش بدم و به یه رله کنترل کنم وقتی دما یا رطوبت به حدی رسید وبه همراه یه بیزر و پوش باتون برا تعین حد بالا و پایین برنامش و کدش تو آردوئینو رو از کجا بگیرم ؟ممنون میشم راهنمایی کنید