در ادامهی آموزشهای سنسورکیتآردوینو در این بخش قصد داریم طریقهی راهاندازی سنسور دما و رطوبت DHT11 را از پکیج سنسورکیت آردوینو آموزش دهیم. سنسورهای سری DHT یکی از ارزان ترین سنسورهای رطوبت و دما موجود در بازار میباشند. این سنسورها بسیار مبتدی و کند میباشند از این رو برای استفاده در پروژههای صنعتی به هیچ عنوان توصیه نمیشود ولی برای کسانی که علاقمند به ثبت دما و محیط خود هستند مناسب است. این گونه سنسورها از دو قسمت ترمیستور ، برای اندازهگیری دما و سنسور رطوبت خازنی ، جهت اندازهگیری رطوبت تشکیل شدهاند. درون این سنسورها یک تراشه بسیار ساده جهت تبدیل مقادیر آنالوک بدست آمده از سنسور به مقدیر دیجیتال استفاده شده است از این رو خروجی این سنسور دیجیتال میباشد و نسبتا خواندن این سیگنال کار سادهای میباشد.در ادامه آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.
معرفی سنسور دما رطوبت DHT11
سنسور DHT11 یک سنسور رطوبت و دما دیجیتالی است که توسط شرکت Aosong (Shenzhen) استانداردسازی و تولید میشود. این سنسور از دو عنصر حسگر مخصوص دما و رطوبت تشکیل شده است که از آنالوگ به دیجیتال تبدیل میشوند. DHT در نام این سنسور مخفف Digital Humidity and Temperature است، که به معنای رطوبت و دمای دیجیتال است. DHT11 از اندازه کوچکی برخوردار است و برای پروژههایی که فضای محدودی دارند، بسیار مناسب است.این سنسور از رابط یکپارچهای برای ارتباط با میکروکنترلرها استفاده میکند و ارتباط آن با میکروکنترلر از طریق سه پین دیجیتال امکانپذیر است.محدوده اندازهگیری دما از ۰ درجه سانتیگراد تا ۵۰ درجه سانتیگراد و محدوده اندازهگیری رطوبت از ۲۰٪ تا ۹۰٪ است. دقت اندازهگیری دما در حدود ±۲ درجه سانتیگراد و دقت اندازهگیری رطوبت در حدود ±۵٪ است. این سنسور برای ارتباط با میکروکنترلرها، سیگنال خروجی دیجیتال استفاده میکند که به صورت یک سیگنال دیجیتال با ولتاژ مشخص (اعمال ولتاژ بالای ۳٫۵ ولت به عنوان منطقی “۱” و اعمال ولتاژ کمتر از ۰٫۵ ولت به عنوان منطقی “۰”) اطلاعات دما و رطوبت را منتقل میکند. این سنسور در پروژههای اتوماسیون منزل، کنترل محیط، رطوبتسنجها، اتاقهای گلخانه و سیستمهای کنترل هوشمند استفاده میشود.
مشخصات فنی سنسور DHT11
سنسور DHT11 یک سنسور ارزان قیمت و راهاندازی آسان برای اندازهگیری دما و رطوبت محیط است. با توجه به دقت متوسط و محدوده محدود اندازهگیری، مناسب برای برنامهها و پروژههای سادهتر است که نیاز به دقت بالا ندارند. به عنوان یک سنسور ارزان قیمت و کارآمد، میتواند در بسیاری از برنامهها و پروژههای هوشمندی مورد استفاده قرار گیرد.
- محدوده دما: ۰ درجه سانتیگراد تا ۵۰ درجه سانتیگراد
- دقت دما: ±۲ درجه سانتیگراد
- محدوده رطوبت: ۲۰٪ تا ۹۰٪
- دقت رطوبت: ±۵٪
- ولتاژ کاری: ۳ تا ۵٫۵ ولت DC
- سیگنال خروجی: سیگنال دیجیتال یکپارچه با دقت ۱ بیت
- رابط: دو پین (۳ پین در برخی نسخهها)
- مصرف انرژی: کمتر از ۱ میلیآمپر در حالت آمادهباش
- زمان نمونهبرداری: ۲ ثانیه
- ابعاد: ۱۵٫۵ میلیمتر در ۱۲ میلیمتر
- قابلیت ارتباط با میکروکنترلرها از طریق سه پین دیجیتال
سختافزار مورد نیاز
ماژول 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
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
تحلیل کد آردوینو
این کد، برای اندازهگیری دما، رطوبت و شاخص گرما (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 اندازهگیری کنید و نتایج را از طریق مانیتور سریال مشاهده کنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام، ضمن تشکر از آموزشتان آیا پایه هاى سیگنال دما و سیگنال رطوبت از هم جدا هستند؟
درود
خیر
این آموزش بر ARDUINO UNO R3 عملی است.
سلام بله
سلام با زبان c برای avr هم این مطلبو قرار بدید . من گیر کردم توی راه اندازیش
من فقط سنسورشو دارم،ماژول نیست، این کدی که نوشتید ارور میده
‘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 هم تمامی کتابخانه ها دانلود شده..حتی زیپ فایل هم نصب شده
ممنون
با سلام و تشکر از شما
این ارور مربوط به عدم نصب کتابخانه Adafruit_Sensor.h میباشد. کتابخانه را نصب، سپس موارد را اطلاع رسانی کنید.
با سلام
من این پروژه رو انجام دادم.ولی توی کنسول ،خروجی رو درست نشون نمیده.
j⸮⸮⸮<⸮DHTxx test!
Z⸮*⸮⸮^⸮⸮DHTxx test!
⸮⸮^⸮⸮۹⸮⸮⸮DHTxx test!
⸮⸮')⸮⸮⸮⸮DHTxx test!
هم توی برنامه و هم توی کنسول باد ریت ۹۶۰۰ هست
من توی برنامه شماره پین رو یه چیزی غیر از اون که ماژول بهش وصله میزنم.تو این حالت توی خروجی متن هارو درست میاره فقط متغیر هایی که تعریف کردیم رو نشون نمیده.چون نمیتونه از اون پینها چیزی بخونه.ولی وقتی شماره پین رو همونی که بهش وصلکردم میزنم همه دستورات پرینت که داخل لوپ قرار میدم و عجق وجق نشون میده.
پینها رو هم بررسی کردم درست وصل کردم.البته من از سنسور dht11 استفاده میکن نه ماژول
سلام مجدد
لطفا طبق آموزشهای لینک ارسال شده موارد را اجرا کنید و سپس از همان طریق ادامه دهید.
با سلام
لطفا جهت دریافت راهنمایی به آموزش ماژول دما و رطوبت DHT11 از پکیج ۳۷ سنسور آردوینو با LCD مراجعه کنید.
با سلام و خسته نباشید ممنون میشم در این مورد راهنماییم کنید
من میخوام اطلاعات دماو رطوبت را هر چندثانیه اندازه گیری کنم و روی رم اس دی ذخیره کنم برنامشو نوشتم اما کار نمیکنه ممنون میشم راهنماییم کنید
#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 دما و رطوبت رو نمایش بدم و به یه رله کنترل کنم وقتی دما یا رطوبت به حدی رسید وبه همراه یه بیزر و پوش باتون برا تعین حد بالا و پایین برنامش و کدش تو آردوئینو رو از کجا بگیرم ؟ممنون میشم راهنمایی کنید
با سلام
از آموزش های زیر میتوانید استفاده کنید.
ساخت ترموستات آردوینو با امکان تنظیم حد بالا و پایین دما سنسور DS18B20
آموزش ساخت ترموستات با آردوینو و ماژول دما رطوبت DHT11 و نمایش LCD