پروژه راه اندازی سنسور رطوبت و دما DHT22

پروژه راه اندازی سنسور رطوبت و دما DHT22

در این مقاله جهت راه اندازی سنسور رطوبت و دما DHT22 توسط میکروکنترلر AVR از برد آموزشی AVR WIZZARD مدل KC-Vela (برای مشاهده مشخصات اینجا کلیک کنید) و شیلد آموزشی سنسورها مدل  KC-Norma (برای مشاهده مشخصات اینجا کلیک کنید) استفاده شده است.

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

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

برد آموزشی AVR WIZZARDمدل KC-Vela

برد آموزشی AVR WIZZARD مناسب برای فراگیری تمامی پریفرالهای میکروکنترلر AVR سری Atmega16-32 طراحی شده است. در این برد اموزشی هر آن چه را که برای آموزش این میکروکنترلر به ان نیاز دارید مانند  SPI   , I2C , UART, PWM , ADC و کار با ال سی دی کاراکتری را خواهید اموخت. از دیگر امکانات این برد می توان به وجود ۳ عدد پوش باتن (کلید) پول اپ ، ۲ عدد LED ، یک عدد بازر ،تغذیه سوئیچینگ LM2576 و سوکت مربوط به LCD کاراکتری اشاره کرد.

شکل۱ : برد شیلد سنسورهای مختلف SENSOR SHIELD مدل KC-Norma

برد شیلد سنسورهای مختلف SENSOR SHIELD مدل  KC-Norma

برد شیلد سنسورهای مختلف SENSOR SHIELD متناسب برد اموزشی AVR WIZZARD مناسب برای فراگیری  پریفرال های TIMER  , ADC  , UART و کار با پورت های IO انواع میکروکنترلرهای مختلف می باشد. این برد توسعه دارای سنسور های دمای LM35 و  SMT172  سنسور رطوبتHS1101  و دو عدد رله برای کنترل وسایل الکتریکی مختلف می باشد . همچنین قابلیت اتصال ماژول های  PT100 و  DHT11/22 و سنسور رطوبت خاک  ۶۹-YL در این برد وجود دارد.

از ویژگی مهم این برد قابلیت اتصال ماژول وای فای  ESP8266 _ ۰۱ بوده تا با استفاده از ان به صورت بی سیم با برد توسعه ارتباط بر قرار کرده و با استفاده از گوشی و یا تبلت خود رله ها را کنترل و اطلاعات دریافتی از سنسور ها را مانیتور کنیم.همچنین از ویژگی های دیگر ان قابلیت اتصال به اردوینو و دیگر برد های میکروکنترلی می باشد.

شکل۲: برد شیلد سنسورهای مختلف SENSOR SHIELD مدل KC-Norma

ماژول سنسور دما و رطوبت DHT22

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

ماژول سنسور DHT22 برای سنجش رطوبت و دما می با شد و خروجی ان دیجیتال بوده که با برچسب DH11 یا DHT22 بر روی برد مشخص شده است است . محل قرارگیری این ماژول درتصویر ۳ نشان داده شده است:

شکل۳ : محل قرارگیری سنسور DHT22
شکل ۴ : نتایج اندازه رطوبت و دما در نمایشگر AVR WIZZARD

 برای دانلود PDF کدهای مربوط به این پروژه اینجا کلیک کنید

به زودی ویدئوی آموزشی این پروژه در سایت بارگذاری می شود

/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 05/07/2019
Author :
Company :
Comments:
Chip type : ATmega16A
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*******************************************************/
#include <mega16a.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <delay.h>
#include <alcd.h>
#include “DHT22.h”
// Declare your global variables here
void main(void)
{
float temperature,humidity;
char str[10],temp[10],hum[10];
lcd_init(16);
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) |
(۰<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) |
(۰<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) |
(۰<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) |
(۰<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) |
(۰<<DDC0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) |
(۰<<PORTC1) | (0<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (1<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) |
(۰<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) |
(۰<<PORTD1) | (0<<PORTD0);
lcd_init(16);
lcd_putsf( ” HI Wellcom ” ) ;
lcd_gotoxy( 0 , 1 );
lcd_putsf( “TO REDRONIC.COM” ) ;
delay_ms(2000);
lcd_clear();
// Global enable interrupts
#asm(“sei”)
while (1)
{
lcd_putsf(“www.redronic.com”);
if(dht22_read(&temperature,&humidity) == -40)
{
lcd_putsf(“DHT22 ERROR”);
}
else
{
ftoa(temperature,1,temp);
ftoa(humidity,1,hum);
lcd_gotoxy(0,1);
sprintf(str,”Tmp=%sHum=%s %”,temp,hum); // cast temprature and humidity value to char
// lcd_clear();
//lcd_gotoxy(0,0);
lcd_puts(str);
}
if(temperature>38) //if temp goes higher than 38 the buzzer and relay will be on
{
PORTC.7=1;
PORTC.6=1;
PORTD.5= 1;
}
else
{
PORTC.7=0;
PORTC.6=0;
PORTD.5= 0;
}
if(humidity>50) //if humidity goes higher than 50 the buzzer and relay will be on
{
PORTC.7=1;
PORTC.5=1;
PORTB.5= 1;
}
else
{
PORTC.7=0;
PORTC.5=0;
PORTB.5= 0;
}
delay_ms(2000);
}

}

اشتراک گذاری:

یک دیدگاه بگذارید

آدرس ایمیل شما منتشر نمیشود.

14 − 11 =

0

بالا