본문 바로가기

아두이노-스케치

아두이노 온도 습도 센서의 사용 3핀 DHT11센서와 4핀 DHT22 온습도 센서





아두이노 온도 습도 센서의 사용 (DHT11센서)


DHT11 센서를 이용하여 온도 및 습도를 체크해 보기로 한다. 아래의 사진과 같이 내가 가진 센서는 모듈식으로 되어 있어 저항이 이미 모듈에 추가되어 있기 때문에 추가 저항을 연결할 필요는 없다. 만약 저 파란색의 DHT11 센서만 가지고 있다면 Signal과 5V사이에 아래와 같이 5K저항을 달아주면 된다. 


DHT11 센서는 소수점 이하의 온도와 습도 값이 넘어오지 않는다. 제조사의 데이터시트에는 표시가 되어 있긴 한데 암튼 넘어오질 않는다.


센서의 동작전압은 3V ~ 5.5V 이므로 아두이노의 3.3V 나 5V 어디에 연결해도 상관이 없다. 


데이터쉬트 다운 :

5K ohm 저항 연결




아두이노와의 연결 방법 센서의 핀 좌측부터 Signal, 5V, GND 이다.

먼저 아래의 DHT11 센서의 라이브러리를 다운로드 받아서 압축을 해제한 다음 
아두이노 IDE 설치폴더의 라이브러리 폴더에 복사해야 한다.

라이브러리 다운 :  







소스코드 다운 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <DHT11.h>    //라이브러리 불러옴
int pin=2;            //Signal 이 연결된 아두이노의 핀번호
DHT11 dht11(pin);        
 
void setup()
{
       Serial.begin(9600); //통신속도 설정
}
 
void loop()
{
      int err;
      float temp, humi;
      if((err=dht11.read(humi, temp))==0//온도, 습도 읽어와서 표시
      {
        Serial.print("temperature:");
        Serial.print(temp);
        Serial.print(" humidity:");
        Serial.print(humi);
        Serial.println();
      }
      else                                //에러일 경우 처리
      {
        Serial.println();
        Serial.print("Error No :");
        Serial.print(err);
        Serial.println();    
      }
      delay(1000);                        //1초마다 측정
}
cs

용도 : 온도와 습도가 구해지므로 불쾌지수, 이슬점, 결로방지, 실내 환경 제어

자료 출처 : http://deneb21.tistory.com/207


씨리얼 모니터를 열어 확인하면  결과는 아래와 같이 표시된다.



temperature:28.00 C humidity:33.00 %

temperature:28.00 C humidity:33.00 %

temperature:28.00 C humidity:33.00 %

temperature:28.00 C humidity:33.00 %




DHT22 온습도 센서 배우기


아래는 DHT22 ( AM2302) 온습도 센서를 테스트 하는 것이다. DHT11 센서에서 사용하는 프로그램을 그대로 사용하면 결과가 제대로 나오지 않는다. 


DHT 온습도 센서 라이브러리는 아래에 있다. 주의할 점은 라이브러리를 다운받아  압축을 풀고 아두이노 라이브러리 폴더에  넣을때 폴더이름을 반드시 DHT22 로 해야 한다.



DHT-sensor-library-master.zip




아래 그림과 소스코드의 출처 : http://www.instructables.com/id/How-to-use-DHT-22-sensor-Arduino-Tutorial/




연결도 






소스코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* Originally posted on www.bbangpan.com
Program Description: DHT22 sensor test code
Needed library : DHT
Tested on : Arduino 1.0.6, Arduino UNO R3, DHT22(registor integrated)
Copyright (c) 2015 www.bbangpan.com. All right reserved.
This program can be used for any non-commercial purpose freely. */
 
#include "DHT.h"
#define DHTPIN 2 // data pin to DHT22
#define DHTTYPE DHT22 // using DHT 22
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() 
{
    Serial.begin(9600);
    Serial.println("DHT22 test:");
    dht.begin();
}
 
void loop() 
{
    float hum = dht.readHumidity();
    float tmp = dht.readTemperature();
 
    // check if returns are valid
    if (isnan(tmp) || isnan(hum)) 
    {
        Serial.println("Reading error..");
    } 
    else 
    {
        Serial.print("Temperature: ");
        Serial.print(tmp);
        Serial.print(" C\t");
        Serial.print("Humidity: ");
        Serial.print(hum);
        Serial.println(" %");
    }
}
cs




씨리얼 모니터를 열어서 확인하면 아래와 같은 결과를 볼 수 있다.


Humidity: 65.40 %, Temp: 27.70 Celsius

Humidity: 58.20 %, Temp: 27.80 Celsius  //입김을 후~ 불었더니 ㅎㅎ

Humidity: 78.70 %, Temp: 30.20 Celsius

Humidity: 91.00 %, Temp: 30.80 Celsius

Humidity: 99.50 %, Temp: 30.10 Celsius

Humidity: 99.90 %, Temp: 29.70 Celsius