본문 바로가기
IT/IoT

[ 아두이노 ] DHT22 온/습도 센서를 이용하여 주변환경 값 측정하기

by 미래문 2022. 10. 11.
반응형


 

 

안녕하세요! 미래문 입니다.

 

이번에는 온/습도계 센서(Temperature And Humidity Sensor)를 이용하여 주변 공간의 온도와 습도를 측정하는

예제를 실행해 보도록 하겠습니다.

 

일단 예제에서 제가 사용할 모듈은 DHT22 모듈 입니다.

DHT22 의 데이터 시트는 아래에 있습니다.

 

Digital humidity and temperature sensor AM2302.pdf
0.40MB

 

먼저 회로배치를 살펴보도록 하겠습니다.

 

 

dht22 센서에는 회로도에서 보는 방향대로 왼쪽부터

Vcc

Data

NC(Not Connect)

GND

로 연결하도록 되어있습니다.

 

현재 회로배치에서는 data 를 7번 포트에 연결했으며,

저항은 꼭 10K옴 저항을 연결하셔야 합니다.

 

이번 예제를 사용하기 위해서는 dht센서 라이브러리를 다운로드 받으셔야 합니다.

GitHub에서 받으실 수 있으며, 최신버전으로 다운로드 하시길 권장드립니다.

 

GitHub DHT센서 라이브러리 링크

 

https://github.com/adafruit/DHT-sensor-library

 

다운로드 하신 후, Zip파일 안에 들어있는 폴더를 그대로

아두이노폴더 밑에 있는 libraries 폴더에 넣으시면 됩니다.

 

아두이노 프로그램이 켜져있는 상태에서 이 작업을 수행하셨다면, 

아두이노 프로그램를 재시작해주세요.

 

 

자, 다음은 코드 입니다.

#include "DHT.h"                // DHT센서 라이브러리를 include합니다.

#define DHTPIN 7               // DATA로 받을 포트번호를 7로 정합니다.
#define DHTTYPE DHT22        // DHT22로 DHT 센서 타입을 정합니다.

DHT dht(DHTPIN, DHTTYPE);    // 입력된 포트번호와 센서타입을 통해 객체를 생성합니다.

void setup() {

	Serial.begin(9600);            // 시리얼 통신을 9600 주파수로 시작합니다.
	Serial.println("DHTxx test!");

	dht.begin();                  // DHT센서를 시작합니다.

}

void loop() {

	delay(2000);                  // 2초간 멈춥니다.
  
	float humidity = dht.readHumidity();                // 습도값을 humidity에 저장합니다.
	float temp_C = dht.readTemperature();            // 섭씨 온도 값을 temp_C에 저장합니다.
	float temp_F = dht.readTemperature(true);         // 화씨 온도 값을 temp_F에 저장합니다.

	// 만약 위에서 측정한 값중 Nan값이 측정되면 오류를 출력하고 프로그램을 종료합니다.

  	if (isnan(humidity) || isnan(temp_C) || isnan(temp_F)) {
    	Serial.println("Failed to read from DHT sensor!");
        return;
	}

	float Farenheit = dht.computeHeatIndex(temp_F, humidity);        // 화씨 열지수(체감온도)를 계산합니다.
	float Celcius = dht.computeHeatIndex(temp_C, humidity, false);    // 섭씨 열지수(체감온도)를 계산합니다.

	// 습도를 출력합니다.

	Serial.print("Humidity: ");
	Serial.print(humidity);
	Serial.print(" %\t");

	// 온도를 출력합니다.
	Serial.print("Temperature: ");

 	// 섭씨
	Serial.print(temp_C);
	Serial.print(" *C ");


	// 화씨
	Serial.print(temp_F);
	Serial.print(" *F\t");


	// 열지수(체감온도)를 출력합니다.
	Serial.print("Heat index: ");
    
	// 섭씨
	Serial.print(Celcius);
	Serial.print(" *C ");

	// 화씨
	Serial.print(Farenheit);
	Serial.println(" *F");
}

 

결과는 다음과 같습니다.

Humidity: 67.3 % Temperature: 26.2 *C 79.16 *F Heat index: 27.1 *C 80.78 *C
Humidity: 67.3 % Temperature: 26.2 *C 79.16 *F Heat index: 27.1 *C 80.78 *C
Humidity: 65.6 % Temperature: 26.3 *C 79.34 *F Heat index: 26.8 *C 80.24 *C

 

감사합니다. 도움이 되셨다면 공감버튼 클릭! 한번만 부탁드릴게요!

반응형

'IT > IoT' 카테고리의 다른 글

[ 아두이노 ] 아두이노로 LED ON/OFF 해보기  (0) 2022.10.11

댓글