آردوینو, پروژه آردوینو

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

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

در این پروژه می‌خواهیم به شما نحوه راه اندازی سنسور دما و رطوبت DHT11 با آردوینو را آموزش دهیم و بگوییم چگونه اطلاعات به دست آمده را در نمایشگر LCD مشاهده کنید؛ پس با بلاگ بهنام رباتیک همراه باشید.

فهرست مطالب

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

سنسور DHT11 چیست؟

DHT11 یک سنسور تشخیص رطوبت و دمای محیط است که داده‌های به دست آمده را از طریق پین دیتا به میکروکنترلر ارسال می‌کند. این حسگر سه پین دارد که عبارتند از: منبع تغذیه (VCC)، اتصال به زمین (GND) و دیتا. این سنسور با ولتاژ 3 تا 5.5 ولت کار می‌کند و می‌تواند رطوبت را در بازه 20 تا 90 درصد با خطا 5 درصد محاسبه کند. همچنین، دمای قابل اندازه‌گیری توسط DHT11 نیز بین 0 تا 50 درجه با خطای 2 درجه می‌باشد.

سیم‌کشی مدار پروژه راه اندازی سنسور دما و رطوبت DHT11 با آردوینو

در تصویر زیر نحوه سیم‌کشی مدار این پروژه نشان داده شده است. در واقع در اینجا پین دیجیتالی شماره 7 آردوینو به پین دیتا DHT11 وصل و پین‌های 2، 3، 4، 5، 11 و 12 آردوینو نیز به نمایشگر 2×16 زده شده است. منبع تغذیه به کار رفته هم +5 ولت می‌باشد. ضمناً، توجه کنید که LCD، آردوینو و DHT11 باید پین اتصال به زمین (GND) مشترکی داشته باشند. لازم به ذکر است که به پین‌های VCC، VSS و اتصال به زمین (GND) نمایشگر LCD یک پتانسیومتر 10 کیلو اهم متصل شده است.

شماتیک مدار پروژه راه اندازی سنسور دما و رطوبت DHT11 با آردوینو
شماتیک مدار پروژه راه‌اندازی سنسور دما و رطوبت DHT11 با آردوینو

کدنویسی پروژه راه اندازی سنسور دما و رطوبت DHT11 با آردوینو

کدی که در ادامه آمده، برای نمایش مقادیر مربوط به میزان رطوبت و دمای کسب شده از سنسور DHT11 روی LCD می‌باشد.

				
					#include <LiquidCrystal.h>

#include <DHT.h>    //include the DHT library


#define DHTTYPE DHT11 // define dhttype as dht11
#define DHTPIN 7     // Name dhtPin as pin 7


// initialize the LCD library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

DHT dht(DHTPIN, DHTTYPE);   // Initialize DHT sensor

void setup () {
	dht.begin();
	// set up the LCD's number of columns and rows:
	lcd.begin(16, 2);
	// Print a message to the LCD.
	lcd.print("DHT11");
	lcd.setCursor(0, 1);
	lcd.print("Humidity/Temp.");
}


void loop() {
	delay(2000);  // Wait two seconds between measurements
	float H = dht.readHumidity();     //Read Humidity
	float T = dht.readTemperature();    // Read temperature as Celsius

	  // Check if any reads failed and if exit
	  if (isnan(H) || isnan(T)) {
		lcd.print("Failed to read from DHT sensor!");
		return;
	  }

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("Humidity:"); 
	lcd.print(H);
	lcd.print("%");
	lcd.setCursor(0, 1);
	lcd.print("Temp.:"); 
	lcd.print(T);
	lcd.print((char)223);
	lcd.print("C");
}

				
			

توضیحات کد پروژه راه اندازی سنسور دما و رطوبت DHT11 با آردوینو

در کدهایی که ارائه کردیم، دو کتابخانه LiquidCrystal و DHT وجود دارند. کتابخانه اول به صورت پیش‌فرض در نرم‌افزار Arduino IDE نصب است اما کتابخانه دوم را باید به صورت دستی نصب کرد. عناوین فایل‌های این دو کتابخانه در کدهای بالا قابل مشاهده هستند؛ LiquidCrystal.h و DHT.h.

به منظور استفاده از امکانات کتابخانه DHT، باید مشخص کنیم که در حال استفاده از کدام مدل سنسورهای DHT هستیم. کتابخانه‌ای که ما نصب کرده‌ایم، از مدل‌های DHT11، DHT21 و DHT22 پشتیبانی می‌کند. به همین خاطر برای اینکه به برد بگوییم داریم از DHT11 بهره می‌بریم، باید عبارت DHTType DHT11 را به کار بگیریم.

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

در ادامه از توابع LiquidCrystal lcd() و dht() استفاده شده تا کتابخانه‌های مربوط به هر کدام مشخص و پین‌های به کار رفته برای آنها تعیین گردد.

در تابع function() و به منظور شروع پروژه و استفاده از سنسور DHT11، از تابع dht.begin() و برای بهره‌گیری از نمایشگر LCD، از تابع lcd.begin.() سود می‌بریم که در اینجا می‌بایست شماره ستون‌های (16) و شماره ردیف‌های (2) مشخص گردند.

در مرحله بعد، تابع print() را به کار می‌گیریم تا عبارت DHT11 در LCD نمایش داده شود. به علاوه، تابع setCursur(0,1) هم عبارت Humidity یا Temp را پس از آن و در خط دوم LCD قرار می‌دهد.

در قسمت Loop و در تابع loop()، ابتدا تابع function() را به کار می‌گیریم تا به مدت 2 ثانیه منتظر سنسور DHT و LCD بمانیم تا شروع به کار کنند. سپس از ویژگی‌های readHumidity() و readTemperature() سنسور DHT11 استفاده می‌کنیم تا به ترتیب داده‌های مربوط به رطوبت و دما به دست بیاید و با متغیر H و T ذخیره شوند.

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

2 دیدگاه در “راه اندازی سنسور دما و رطوبت DHT11 با آردوینو

  1. مهدی گفت:

    سلام من موقع اجرا ارور زیر رو دریافت میکنم. ممنون میشم راهنمایی فرمایید
    Sketch uses 4416 bytes (13%) of program storage space. Maximum is 32256 bytes.
    Global variables use 155 bytes (7%) of dynamic memory, leaving 1893 bytes for local variables. Maximum is 2048 bytes.

    1. فروشگاه بهنام رباتیک گفت:

      سلام
      میتونین توی ایتا و تلگرام پیام بدین و از اروری ک دریافت کردید عکس بفرستید تا بیشتر راهنمایی‌تون کنیم

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *