개발자/Arduino

아두이노 dht22 온도 습도 센서 테스트

지구빵집 2022. 4. 4. 16:59
반응형

 

 

온습도 센서(온도와 습도를 동시에 측정할 수 있는 센서)인 DHT11의 사용법은 다 아실 텐데 이번 포스팅에서는 DHT22 온도 습도 센서에 대해 알아보겠습니다. DHT11 도 싸고 좋은 센서지만 보다 측정범위가 넓고 오차가 적은 정밀한 측정이 가능한 온습도 센서가 있습니다. 바로 DHT22 (AM2302) 입니다. 

 

DHT22 가 dht11 보다 모든면에서 우수한 것 같지만 하나의 단점이 있습니다. DHT11은 1초마다 온습도 값을 측정해서 보내주지만 DHT22는 2초마다 보내줍니다. DHT11과 DHT22 센서의 간단한 비교는 아래 표를 참고하세요. 

 

  DHT11 DHT22
 온도 측정범위  0 ~ 50℃  -40 ~ 80
 온도 측정오차  2  0.5
 습도 측정범위  20 ~ 80%  0 ~ 100%
 습도 측정오차  5%  2%
측정 간격  1초  2초

 

두 센서의 데이터 쉬트를 첨부합니다.

 

DHT11.pdf
0.82MB

 

DHT22(AM2302).pdf
0.40MB

 

 

 

DHT22 센서의 핀배열은 아래 이미지와 같습니다. 3.3V 또는 5V 의 전압이 사용이 가능하며 가운데 핀으로 신호를 전송합니다. 3번핀은 사용하지 않습니다. 흔히 DHT22 라고 부르지만 정식명칭은 AM2302 입니다. AOSONG 은 제조사의 이름 입니다. 

 

DHT22 센서의 핀배열

 

아두이노와 연결은 간단합니다. 중요한 것은 온도 습도 센서의 Data 핀 번호를 프로그램에서 사용하는 번호와 동일하게 해주시면 됩니다. 

 

dht22 센서 연결도

 

 

DHT 온도 습도 센서를 사용하기 위해서 라이브러리를 추가해야 합니다. 아래 라이브러리 다운받아 설치하세요. 라이브러리를 설치하는 방법은 아두이노 라이브러리를 설치하는 3가지 방법을 참고하세요. https://fishpoint.tistory.com/5171

 

아두이노 라이브러리 설치하는 방법 3가지

Arduino 라이브러리 설치 Arduino 소프트웨어에 익숙해지고 내장 기능을 사용하는 경우 추가 라이브러리로 Arduino의 기능을 확장할 수 있습니다. 라이브러리란? 라이브러리는 센서, 디스플레이, 모듈

fishpoint.tistory.com

 

DHT.zip
0.00MB

 

동작 소스코드는 아래와 같습니다.

 

#include "DHT.h"
 
#define DHTPIN 2        // 데이터 입력 핀의 설정
#define DHTTYPE DHT22   // DHT22 (AM2302) 센서종류 설정
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  	Serial.begin(9600); 
 	Serial.println("DHT22 TEST !!!");
 
  	dht.begin();
}
 
void loop() {
  	// 센서의 온도와 습도를 읽어온다.
  	float h = dht.readHumidity();
  	float t = dht.readTemperature();
 
  	if (isnan(t) || isnan(h)) {
    	//값 읽기 실패시 시리얼 모니터 출력
    	Serial.println("Failed to read from DHT");
  	}
    else 
    {
    	//온도, 습도 표시 시리얼 모니터 출력
    	Serial.print("Humidity: "); 
    	Serial.print(h);
    	Serial.print(" %\t");
    	Serial.print("Temperature: "); 
    	Serial.print(t);
    	Serial.println(" *C");
  	}
  	delay(2000); // 2초 디레이 타임
}

 

다음은 아두이노 라이브러리 관리자에서 라이브러리를 설치하여 테스트 하는 코드를 살펴보겠습니다. 아두이노 IDE를 실행시키고 메뉴에서 스케치 - 라이브러리 포함하기 - 라이브러리 관리를 선택합니다.. DHT22를 검색하여 DHT sensor library를 설치합니다.  

 

DHT sensor library 설치

 

소스코드는 아래와 같습니다.

 

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
 
#include "DHT.h"
 
#define DHTPIN 2    //센서가 연결된 디지털핀
 
//사용하려는 센서만 주석을 제거한다. 
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
 
 
//DHT 센서 초기화
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
 
  dht.begin();
}
 
void loop() {
 
  //측정하는 시간사이에 2초간의 딜레이를 줌
  delay(2000);
 
 
  float h = dht.readHumidity(); //습도값을 읽어옴.
 
  float t = dht.readTemperature();//온도값을 읽어옴
 
  //에러 검사
  if (isnan(h) || isnan(t) ) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
 
  // 열지수 계산
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);
 
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.println(" *C ");
 
}

 

위 소스코드를 실행하여 아래 이미지와 같이 실행결과 습도, 온도, 열지수를 얻을 수 있습니다.. 

 

습도, 온도, 열지수

 

참고

Arduino UNO에서 dht-22 온도 / 습도 센서 사용하기 

정밀한 온습도 센서 DHT22 (AM2302) 의 사용 

 

 

아두이노 dht22 온도 습도 센서 테스트

 

 

 

반응형