1. صفحه نخست
  2. راهنمای سنسورها
  3. راهنمای کامل سنسور رطوبت و دما DHT11/DHT22 با Arduino

راهنمای کامل سنسور رطوبت و دما DHT11/DHT22 با Arduino

در این مقاله قصد داریم نحوه استفاده از سنسورهای محبوب دما و رطوبت DHT11 و DHT22 با آردوینو را آموزش دهیم. نحوه عملکرد و مشخصات این سنسور را توضیح خواهیم داد سپس یک مثال از پروژه آردوینو را قرار می دهیم که شما با تغییرات مد نظرتان می توانید به عنوان پروژه خودتان استفاده کنید.

حسگر دما و رطوبت DDHT11-DHT22
حسگر دما و رطوبت DDHT11-DHT22

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

معرفی سنسور های DHT11 و DHT22

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

حسگر دما و رطوبت DDHT11-DHT22
حسگر دما و رطوبت DDHT11-DHT22

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

حسگر رطوبت سنج
شماتیکی از سنسور رطوبت سنج DHT11 و میکروکنترلر

 مقایسه سنسور DHT11 و DHT22

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

DHT11 DHT22
سنسور dht11
بازه دما 0 to 50 ºC +/-2 ºC -40 to 80 ºC +/-0.5ºC
بازه رطوبت 20 to 90% +/-5% 0 to 100% +/-2%
دقت Humidity: 1%
Temperature: 1ºC
Humidity: 0.1%
Temperature: 0.1ºC
ولتاژ 3 – 5.5 V DC 3 – 6 V DC
جریان الکتریکی ساکن 0.5 – 2.5 mA 1 – 1.5 mA
دوره (period) 1 second 2 seconds

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

  • نتایج حاصل از DHT22 به دلیل بازه گسترده ای که از اندازه دما و رطوبت ارائه می دهد،به نسبت بهتر می باشد همچنین رزولوشن اندازه گیری 10 برابر بهتر از DHT11 می باشد .اگرچه از نظر هزینه گران تر بوده و زمان بیشتری جهت ارایه نتیجه نیاز دارند.( 2 ثانیه )
  • سنسور DHT11 بازه کمتری را ارائه می دهد و دقت به نسبت کمتری دارد اما شما می توانید هر ثانیه داده های خروجی را بخوانید و قیمت به نسبت ارزان تری دارد.

درست است که اختلافاتی در ویژگی هایشان دارند اما هر دو در روند پروژه پاسخگوی نیاز شما خواهند بود و با کدی یکسان می توانید داده های دما و رطوبت را بخوانید.

پایه های سنسور DHT

همانطور که در شکل زیر مشاهده می کنید؛ DHT sensor  داری 4 پین می باشد. اگر شما سنسور DHT را در یک برد توسعه خریداری کرده اید یا در اختیار دارید، تنها با سه پایه و یک مقاوت pull-up داخلی روی پین 2 اتصال انجام می شود.

پایه های DHT22
پایه های DHT

 

نحوه اتصال پین ها را به صورت شماره گذاری شده برای شما در متن ذیل قرار دادیم  و شما همانطور که سنسور DHT11 و DHT22 را مقابلتان دارید از شماره 1 از سمت چپ به راست اتصال را شروع کنید.

DHT Pinout

DHT pin1: اتصال به مثبت 5 ولت

DHT pin2: اتصال به دیجیتال GPIO;اتصال به مقاوت کششی 10k اهم

DHT pin3: متصل نشود

DHT pin4: پایه زمین یا ولتاژ 0

از کجا ماژول DHT را تهیه کنیم ؟

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

DHT11 با برد Arduino

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

قطعات مورد نیاز

برای تکیمل آموخته هایتان در این مقاله و شروع پروژه تان به قطعات زیر نیاز دارید:

  1. Arduino UNO / آردوینو uno
  2. DHT11/ ماژول دما و رطوبت DHT11
  3. Breadboard
  4. 4.7k Ohm Resistor /مقاومت 4.7 کیلو اهم
  5. جامپر وایر یا سیم جامپر

شماتیک مدار

در شمای مدار زیر شما اتصال سنسور DHT11 (یا DHT22) به برد Arduino را ملاحظه می کنید.

اتصال برد آردوینو به ماژول DHT11
اتصال برد آردوینو uno به ماژول DHT11
اتصال سنسور DHT به Arduino-uno

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

اتصال سنسور DHT به Arduino-uno

  • DHT Pin1: به سر 5 ولت آردوینو متصل شود
  • DHT Pin2: به D2 یا هر یک از پایه های دیجیتال
  • DHT Pin3: متصل نشود
  • DHT pin4: پایه زمین یا ولتاژ 0

نکته

معمولا سنسور DHT  همراه با 3 پین است. تعدادی زیادی از این ماژول ها با یک مقاومت pull-up داخلی عرضه می شود .در نتیجه طبق آموزش هایی که در این مقاله برای اتصال فرا گرفتید، نیازی نیست یکی از پین ها را به مدار اضافه کنید.

نصب libraries

برای نصب سنسور DHT از کتابخانه DHT موجود در گیت هاب DHT library  استفاده می کنیم. در ادامه مراحل نصب را به ترتیب برایتان شرح خواهیم داد:

  • نرم افزار Arduino IDE را باز کنید به منوی Sketch بروید سپس به زیر منوی Include Library پس از آن به Manage Libraries وارد شوید،عبارت “DHT” را در باکس جستجو تایپ کنید و نصب کتابخانه DHT را از توسعه دهنده Adafruit شروع کنید.
نصب DHT library از Adafruit
نصب کتابخانه DHT

 

  • پس از نصب عبارت “Adafruit Unified Sensor” را سرچ کنید و صفحه مقابلتان را اسکرول کرده تا کتابخانه را پیدا  کنید.

در مرحله آخر Arduino IDE خود را ببندید و دوباره بازکنید.

شرح کد

پس از نصب library، شما میتوانید کد پروژه را آپلود کنید.

در Arduino IDE به File بروید، پس از آن به زیر منوی examples و پس از آن به DHT Sensor library و سپس به DHTtester بروید.

پس از بارگذاری کد زیر، دما و رطوبت در سریال مانیتور نمایش داده می شود.

شرح کد

کتابخانه DHT را فراخوانی می کنیم:

سپس شما پایه ای که سنسور DHT به آن متصل است، را تعریف کنید در اینجا به پین 2 دیجیتال وصل شده است :

شما باید نوع سنسوری را که استفاده می کنید تعریف کنید. به عنوان مثال در این پروژه ما از سنسور DHT11  استفاده کردیم:

اگر شما از مدل دیگری از سنسورهای DHT استفاده می کنید، باید خط دستوری قبلی را کامنت و دستور زیر را uncomment کنید:

شی DHT که dht نام دارد، با دستور زیر مقدار دهی می شود:(تعریف پین و مدل سنسور را در مراحل فوق انجام داده اید.)

در ()setup, مانیتور سریال را با بادریت 9600 مقدار دهی اولیه می کنیم:

برای شروع کار سنسور DHT از متد ()begin. استفاده کنید:

در ()loop, با دو ثانبه تاخیر مواجه می شوید. به دلیل اینکه سنسور نیاز به زمان برای برای خواندن مقادیر را دارد!که ماکزیمم 2 ثانیه برای DHT22 و 1 ثانیه برای سنسور DHT11 است .

خواندن دما و رطوبت بسیار کار ساده ای است. از متد ()readhumidity در شی dht استفاده می کنیم.اینجا ما humidity را در متغیر h ذخیره کرده ایم. متد ()readhumidity از نوع float می باشد:

به طور مشابه برای خواندن دما ()readTemperature دستور  را وارد کنید:

اگر می خواهید دما برحسب درجه فارنهایت برای شما نمایش داده شود. دستور زیر را وارد کنید:

در این کتابخانه متدهایی برای محاسبه دما بر حسب درجه فارنهایت و سلسیوس وجود دارد:

در آخر, نتایج در مانیتور سریال نمایش داده می شود:

نمایش

بعد از آپلود کد در آردوینو، سریال مانیتور با بادریت 9600 را باز کنید. اگر این آموزش را کامل پیش گرفته باشید اکنون در سریال مانیتور  Arduino IDE هر 2 ثانیه داده های دما و رطوبت را مشاهده می کنید.

مانیتور سریال
serial_monitor/مانیتور سریال

رفع خطا

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

“Failed to read from DHT sesnsor” یا Nan readings

اگر در کار با سنسور DHT مطابق شکل زیر با با خطای        “Failed to read from DHT sensor!” یا “Nan” مواجه شدید.یکی از موارد زیر دلیل خطای شما است.سعی کنید هر کدام از دلایل زیر را در روند خود بررسی کنید،تا عیب پیدا و رفع شود:

خطای (Failed to read from DHT sensor)
خطای (Failed to read from DHT sensor)

 

wiring اتصال سیم های پایه : وقتی شما در حال ساختن یک پروژه الکترونیکی هستید، بدون شک نیاز هست که سیم و اتصالات پین (محل اتصال) را دوباره مورد بررسی قرار دهید.بعد از چک کردن و تست کردن مطعمن شوید مدار شما کاملاً وصل است! اگر همچنان خطا رفع نشد،به سراغ موارد بعدی رفع عیب بروید.

power (منبع تغذیه) : عملکرد سنسور DHT در بازه 3 تا 5.5 ولت برای DHT11 و 3 تا 6 ولت برای DHT22 است. اگر منبع تغذیه سنسور شما روی 3.3 ولت تنظیم شده باشد. در برخی موارد با تغییر منبع تغذیه به 5V مشکل رفع خواهد شد.

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

 منبع تغذیه جداگانه :  با توجه به پاراگراف قبلی آردوینو شما ممکن است انرژی کافی را برای خواندن سنسور DHT تامین نکند. در بعضی موارد شما باید آردوینو را با منبع تغذیه ای تامین کنید که جریان الکتریکی بیشتری را تولید کند.

نوع سنسور : در کدنویسی دوباره uncommented/commented را چک کنید،که سنسور را درست وارد کرده باشید. در این پروژه ما از DHT22  استفاده کردیم.

سرعت نمایش نمونه داده ها ( نرخ نمونه برداری): سنسور DHT کُند داده ها را میخواند! ( بیش از 2 ثانیه طول بکشد.) در بعضی از موارد بالا بردن، زمان ارسال درخواست مقدار سنسور یا سرعت ریدینگ ( بخش delay ) می تواند مشکل شما را حل کند.

سنسور شما شکسته یا سوخته : متاسفانه ممکن است چیپ سنسورها به نظر کاملاً سالم بیایند اما در بعضی موارد سوخته یا شکسته اند. در نتیجه درسته که شما کد نویسی و مدار خود را به درستی انجام داده اید اما خواندن داده های دما و رطوبت به درستی انجام نخواهد شد! توصیه می شود برای رفع عیب سنسور خود یک ماژول جدید و سالم را امتحان کنید، که در اغلب موارد می تواند مشکل شما را رفع کند.

بادریت شما نادرست بوده و یا در آپلود کد موفق نبودید : اگر شما هیچ داده ای را از سنسور خود در سریال مانیتور Arduino IDE مشاهده نمی کنید، باد ریت، پورت COM یا فرآیند آپلود را دوباره چک کنید.

♦ تجربه پروژه های ساخته شده به ما ثابت کرده که در موارد مشابه ای که با DHT داشتیم،اجرای یکی از موارد فوق در پروژه تان مشکل شما را حل خواهد کرد.

 خطای دردسر ساز!                                                            (Fatal error: Adafruit_Sensor.h: No such file or directory )

این خطا اغلب زمانی پیش می آید که می خواهید کد را آپلود کنید!

اگر شما با این خطا مواجه شدید، دستور زیر را اجرا کنید:

شما باید کتابخانه Adafruit Unified Sensor را در Arduino IDE نصب کنید. و عبارت “Adafruit Unified Sensor“ را سرچ کرده سپس library را پیدا و نصب کنید.

نصب Adafruit Unified Sensor driver library
نصب کتابخانه Adafruit Unified Sensor

 

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

جمع بندی مطالب فوق

استفاده ازسنسور DHT11/DHT22  یک روش آسان و به صرفه برای اندازه گیری دما و رطوبت است که اندازه گیری های خود را با آردوینو انجام می دهد . وایرینگ آن (اتصال سیم ) بسیار ساده بوده و فقط باید پایه های دیتا DHT را به پایه های یک برد Arduino وصل کنید.

بعد از نصب کتابخانه DHT کدنویسی این سنسورها بسیار ساده تر صورت می گیرد. با اجرای دو متد ()readTemperature و ()readHumidity، دما و رطوبت به دست می آید.

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

آیا نیاز به آموزش بیشتر جهت راه اندازی DHT11/DHT22 دارید؟ به آدرس ewink.ir/wiki مراجعه کنید.

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

در قسمت نظرات ایده ها و مطالب پیشنهادی خود را با ما به اشتراک بگذارید.

آخرین آپدیت در فوریه 17, 2021

آیا این مقاله آموزشی مفید بود ؟

نوشته های مرتبط

لطفا نظر خود را بنویسید، این نظر میتواند تنها یک تشکر باشد.