
به نام خدا
نمایش دما و رطوبت روی lcd بوسیله آردوینو و سنسور DHT22

ماژول DHT22 یک سنسور دما و رطوبت هوا است. این ماژول از دو سنسور تشکیل شده است ، یک سنسور رطوبت خازنی و یک مقاومت گرمایی. یک تراشه بسیار ساده نیز درون آن وجود دارد که تبدیل آنالوگ به دیجیتال را انجام می دهد و خروجی دیجیتال را تولید می کند.
مشخصات فنی سنسور DHT22 :
- بازه رطوبت سنجی : ۰ تا ۱۰۰ % RH
- دقت رطوبت سنجی : % ۲ ± (حداکثر تا % ۵ ± )
- بازه دما : ˚۴۰ – تا ˚۸۰ سانتی گراد
- دقت دما :±۰٫۵ ° سانتی گراد
- ولتاژ تغذیه : ۳٫۳ ولت تا ۵٫۵ ولت
- وضوح : ۰٫۱
قطعات مورد نیاز :
- برد آردوینو
- سنسور DHT22
- مقاومت ۴٫۷ اهم
- پتانسیومتر ۱۰ کیلو اهم
- مقاومت ۳۳۰ اهم
- بردبورد
- سیم بردبورد
اتصالات مدار :
مدار را مانند شکل زیر می بندیم.

سنسور DHT22 چهار پایه دارد که این پایه ها از چپ به راست، پایه اول (VCC (+ 5 ,پایه دیتا , NC (که متصلش نمی کنیم) و زمین می باشد. یک مقاومت پول آپ باید برای پایه دیتای این سنسور گذاشته شود که مقدار آن می تواند بین ۴٫۷ تا ۱۰ کیلو باشد.
پتانسیومتر ۱۰ کیلو اهم برای کنترل وضوح LCD می باشد و مقاومت ۳۳۰ اهم نور پس زمینه LCD را فراهم می کند.
کد های پروژه نمایش دما و رطوبت روی lcd بوسیله آردوینو و سنسور DHT22 :
برای برنامه نویسی این پروژه از کتابخانه سنسور DHT استفاده می کنیم(این کتابخانه برای سنسور های DHT11, DHT21 و DHT22 مورد استفاده است). این کتابخانه مقدار رطوبت و دما را می خواند و به صورت عددی اعشاری به آردوینو می فرستد. از انجا که وضوح سنسور ۰٫۱ است عدد اعشاری روی LCD تا یک رقم اعشار نمایش داده می شود. دو متغییر به نام های RH و Temp از جنس عدد صحیح (int) تعریف می کنیم. با ۱۰ برابر کردن مقدار عدد اعشاری خوانده شده از سنسور مقدار صحیح مورد نیازمان را خواهیم داشت.
کتابخانه ی سنسور DHT را می توانید از لینک زیر دانلود نمایید.
Download
شبیه سازی پروتئوس :
شبیه سازی آردوینو + ال سی دی + سنسور DHT :
Download
دو آرایه برای نمایش مقادیر صحیح دما و رطوبت روی lcd ، از جنس کاراکتر( char ) به صورت زیر تعریف شده.
(;"temperature = (char temperature[] = “Temp = 00.0 C (;"humidity = (char humidity[] = “RH = 00.0
دما و رطوبت قبل از نمایش داده شدن روی lcd درون این آرایه ها بوسیله دستورات زیر کپی می شود:
temperature[7] = (Temp / 100) % 10 + 48;
این کد برای قرار دادن قسمت صدگان دما در هفتمین قسمت آرایه است.
temperature[8] = (Temp / 10) % 10 + 48;
این کد برای قرار دادن قسمت دهگان دما در هشتمین قسمت آرایه است.
temperature[10] = Temp % 10 + 48;
این کد برای قرار دادن قسمت یکان دما در دهمین قسمت آرایه است.
برای مثال اگر ۳۷٫۲ مقداری باشد که ماژول برای آردینو می فرستد بعد از ۱۰ برابر شدن این مقدار، اتفاقات زیر رخ می دهد.
۳ = ۱۰ % (۳۷۲/۱۰۰)
۳ = ۱۰ % (۳۷۲/۱۰)
۳ = ۱۰ % ۳۷۲
عدد ۴۸ در آخر کد برای تبدیل عدد دسیمال به اسکی است چون lcd در فورم اسکی کار می کند.
این کد نیز برای نمایش علامت “˚” است.; temperature[11] = 223
دانلود کد های پروژه نمایش دما و رطوبت روی lcd بوسیله آردوینو و سنسور DHT22 :
دانلود فایل// Interfacing Arduino with DHT22 humidity and temperature sensor
// include LCD library code
#include <LiquidCrystal.h>
// include DHT library code
#include "DHT.h"
#define DHTPIN 8 // DHT22 data pin is connected to Arduino pin 8
// LCD module connections (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#define DHTTYPE DHT22 // DHT22 sensor is used
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT library
char temperature[] = "Temp = 00.0 C";
char humidity[] = "RH = 00.0 %";
void setup() {
// set up the LCD's number of columns and rows
lcd.begin(16, 2);
dht.begin();
}
void loop() {
delay(1000); // wait 1s between readings
// Read humidity
int RH = dht.readHumidity() * 10;
//Read temperature in degree Celsius
int Temp = dht.readTemperature() * 10;
// Check if any reads failed and exit early (to try again)
if (isnan(RH) || isnan(Temp)) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Error");
return;
}
if(Temp < 0){
temperature[6] = '-';
Temp = abs(Temp);
}
else
temperature[6] = ' ';
temperature[7] = (Temp / 100) % 10 + 48;
temperature[8] = (Temp / 10) % 10 + 48;
temperature[10] = Temp % 10 + 48;
temperature[11] = 223; // Degree symbol ( °)
if(RH >= 1000)
humidity[6] = '1';
else
humidity[6] = ' ';
humidity[7] = (RH / 100) % 10 + 48;
humidity[8] = (RH / 10) % 10 + 48;
humidity[10] = RH % 10 + 48;
lcd.setCursor(0, 0);
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.print(humidity);
}
سلام من کدتون رو چک کردم میشه کمکم کنید تا رفع کنم این مشکل رو
Sketch uses 4294 bytes (13%) of program storage space. Maximum is 32256 bytes.
Global variables use 97 bytes (4%) of dynamic memory, leaving 1951 bytes for local variables. Maximum is 2048 bytes.
سلام برنامه تست شده مشکلی نداره. میخواید توی تلگرام فیلم بفرستید تا مشکل رو بر طرف کنیم
سلام و تشکر فراوان از سایت ارزشمندتون.درخواست بنده کنترل دما و رطوبت برای دستگاه جوجه کشی می باشد.اگه ممکنه راهنمایی کنید.هزینه ی وارده را متقبل می شوم
سلام با پشتیبانی تماس بگیرید
سلام
سپاس از آموزش و سایت عالی
یک سوال دارم
اگر بخواهیم اطلاعات خروجی که بروی صفحه نمایش چاپ میشود را در کامپیوتر به صورت وای فای یا بلوتوث یا ... ببینیم به صورت همزمان یا جداگانه چطور است ؟؟؟
ممنون از شما
سلام
ممنون از حمایتتون
به جای آردوینو باید از ماژول ESP استفاده کنید و وقتی توی مرورگرتون آی پی رو میزنید میتونید داده ها رو ببینید
کلیت برنامه همین هست و با آردوینو هست ولی قیمت وای فای رو خودتون باید کد بزنید