رباتیک و هوافضا

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

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

به نام خدا

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

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

 

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

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

  • بازه رطوبت سنجی : ۰ تا ۱۰۰ % RH
  • دقت رطوبت سنجی : % ۲ ± (حداکثر تا % ۵ ± )
  • بازه دما : ˚۴۰ – تا ˚۸۰ سانتی گراد
  • دقت دما :±۰٫۵ ° سانتی گراد
  • ولتاژ تغذیه : ۳٫۳ ولت تا ۵٫۵ ولت
  • وضوح : ۰٫۱

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

  • برد آردوینو
  • سنسور DHT22
  • مقاومت ۴٫۷ اهم
  • پتانسیومتر ۱۰ کیلو اهم
  • مقاومت ۳۳۰ اهم
  • بردبورد
  • سیم بردبورد

اتصالات مدار :

مدار را مانند شکل زیر می بندیم.

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

 

سنسور DHT22 چهار پایه دارد که این پایه ها از چپ به راست، پایه اول (VCC (+ 5  ,پایه دیتا , NC (که متصلش نمی کنیم) و زمین می باشد. یک مقاومت پول آپ باید برای پایه دیتای این سنسور گذاشته شود که مقدار آن می تواند بین ۴٫۷ تا ۱۰ کیلو باشد.

پتانسیومتر ۱۰ کیلو اهم برای کنترل وضوح LCD می باشد و مقاومت ۳۳۰ اهم نور پس زمینه LCD را فراهم می کند.

کد های پروژه نمایش دما و رطوبت روی lcd بوسیله آردوینو و سنسور DHT22 :

برای برنامه نویسی این پروژه از کتابخانه سنسور DHT استفاده می کنیم(این کتابخانه برای سنسور های DHT11, DHT21 و DHT22 مورد استفاده است). این کتابخانه مقدار رطوبت و دما را می خواند و به صورت عددی اعشاری به آردوینو می فرستد. از انجا که وضوح سنسور ۰٫۱ است عدد اعشاری روی LCD تا یک رقم اعشار نمایش داده می شود. دو متغییر به نام های RH و Temp از جنس عدد صحیح (int) تعریف می کنیم. با ۱۰ برابر کردن مقدار عدد اعشاری خوانده شده از سنسور مقدار صحیح مورد نیازمان را خواهیم داشت.

بیشتر بخوانید...  برنامه نویسی به زبان پایتون برای رزبری پای

کتابخانه ی سنسور DHT را می توانید از لینک زیر دانلود نمایید.
Download

شبیه سازی پروتئوس :

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);
}

دیدگاه‌ها (6)

*
*

    محمد مهمان مهر 12, 1398 پاسخ

    سلام من کدتون رو چک کردم میشه کمکم کنید تا رفع کنم این مشکل رو

    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.

      Admin مدیر کل آبان 14, 1399 پاسخ

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

    علیرضا مهمان فروردین 9, 1399 پاسخ

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

      Admin مدیر کل آبان 16, 1399 پاسخ

      سلام با پشتیبانی تماس بگیرید

    علیرضا مهمان اردیبهشت 12, 1399 پاسخ

    سلام
    سپاس از آموزش و سایت عالی

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

      Admin مدیر کل آبان 16, 1399 پاسخ

      سلام
      ممنون از حمایتتون
      به جای آردوینو باید از ماژول ESP استفاده کنید و وقتی توی مرورگرتون آی پی رو میزنید میتونید داده ها رو ببینید
      کلیت برنامه همین هست و با آردوینو هست ولی قیمت وای فای رو خودتون باید کد بزنید