본문 바로가기

개발자/Arduino

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

반응형

 

 

온습도 센서(온도와 습도를 동시에 측정할 수 있는 센서)인 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 온도 습도 센서 테스트

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩