아두이노 강좌 #40 온습도 센서 DHT11 Adafruit 라이브러리 사용 방법
Lucy Archive
Lucy / Facilitate4U
2020. 9. 24. 00:22

Arduino Uno DHT11Arduino Uno DHT11

Arduino Uno : DHT Adafruit Library for DHT11 Series

지난 포스트에서는 DHT11의 동작 방식에 대해 알아보고, 라이브러리 없이 DHT11로 온도와 습도를 측정하는 법을 소개하였습니다. DHT11 동작 방식이 궁금하신 분은 하단의 관련 포스트를 참조해주세요. 이번 포스트는

Adafruit 에서 제공되는 DHT.h 라이브러리 사용 방법과 예시를 소개

합니다. 

DHT11 라이브러리 by Adafruit

DHT11를 사용하기 위한 라이브러리는 여러 가지가 있는 것으로 확인됩니다. 이 중에 Arduino IDE에서 편리하게 검색 후 설치 할 수 있는 Adafruit 라이브러리를 사용하는 방법을 소개하겠습니다. DHT11을 사용하기 위해 아래의 2가지 라이브러리를 설치해야 합니다.

Adafruit Library

  • Adafruit Unified Sensor by Adafruit <info@adafruit.com>
  • DHT sensor library by Adafruit

라이브러리를 설치하기 위해 Arduino IDE에서 Adafruit Unified Sensor를 검색 후 설치하고, DHT11로 검색하여 DHT sensor Library를 설치합니다.

DHT11 라이브러리 설치DHT11 라이브러리 설치

라이브러리 제공 함수

DHT11을 사용하기 위해 #include <DHT.h> 라이브러리를 참조해야 합니다. DHT.h 에서 제공되는 DHT 클래스에서 자주 사용하는 함수는 아래와 같습니다. DHT는 클래스 이름입니다.

  • DHT(uint8_t pin, uint8_t type, uint8_t count = 6) : DHT 객체를 생성합니다. 
    • pin : DHT 연결 핀 번호
    • type : 센서 Type으로 DHT11, DHT12, DHT22, DHT21, AM2301 중의 하나
    • count : 센서의 갯수
  • DHT.begin() : DHT 사용 선언
  • float DHT.readTemperature(bool S = fasle, bool force = false) : 화씨, 섭씨 중 선택된 온도 단위 값을 반환
    • S : true 입력 시 화씨, false 입력 시 섭씨
  • float DHT.converCtoF(float) : 섭씨를 화씨로 반환
  • float DHT.converFtoC(float) : 화씨를 섭씨로 반환
  • float computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit = true) : 열파지수 반환
    • temperature : 온도 값
    • percentHumidity : 습도 값
    • isFahrenheit : true 입력 시 화씨, false 입력 시 섭씨
  • float readHumidity(bool force = false) : 습도를 %단위로 반환

📌 [각주:1]열파지수(Heat Index)

기온과 습도에 따라 사람이 실제로 느끼는 더위를 나타내는 지수

  • 54 이상 : 매우 높음, 지속적으로 노출되면 열사병 위험 매우 높음
  • 41 ~ 54 미만 : 높음, 지속적으로 노출된 환경에서 신체활동시 열사병 위험 높음
  • 32 ~ 41 미만 : 보통, 지속적으로 노출된 환경에서 신체활동시 열사병 가능성 있음
  • 32 미만 : 낮음, 지속적으로 노출된 환경에서 신체활동시 피곤할 수 있음


아두이노 우노로 DHT11 사용하기

회로 구성

아두이노 우노에서 DHT1를 사용하기 위해 아래와 같이 회로를 연결하였습니다. DHT11의 2번 데이터 핀은 D4가 아닌 다른 핀으로 연결해도 사용할 수 있습니다.

코드 작성

아두이노 우노보드를 사용하여 DHT11로부터 섭씨온도 화씨온도, 습도, 열지수를 불러오는 예제입니다.

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
#include <DHT.h>
 
#define DATAPIN 4 //DHT11 Datapin Number
 
DHT myDHT11(DATAPIN, DHT11);
 
void setup(){
    Serial.begin(115200);
    Serial.println("DHT11 Start..");
 
    myDHT11.begin();
}
 
void loop(){
 
    float fTempC;
    float fTempF;
    float fHumid;
    float fHeatIndex;
 
    fTempC = myDHT11.readTemperature(false);
    fTempF = myDHT11.readTemperature(true);
    fHumid = myDHT11.readHumidity(false);
    fHeatIndex = myDHT11.computeHeatIndex(fTempC,fHumid,false);
 
    Serial.print("Temp C : ");
    Serial.println(fTempC);
    Serial.print("Temp F : ");
    Serial.println(fTempF);
    Serial.print("Humid % : ");
    Serial.println(fHumid);
    Serial.print("Headt Index : ");
    Serial.println(fHeatIndex);
    Serial.println("================================");
 
    delay(2000);
}
cs


실행 결과

프로그램을 실행하면 시리얼 터미널에서 아래와 같이 온도, 습도, 열화 지수가 출력되는 것을 확인 할 수 있습니다.


마무리

이번 포스트에서는 adafruit 의 DHT Sensor Library를 사용하여 DHT11을 동작하는 방법과 예제를 소개하였습니다. 끝까지 읽어 주셔서 감사합니다.😄

관련포스트

👉 아두이노 온도센서 관련글 목록 보기

👉 아두이노 센서 관련글 목록 보기

👉 아두이노 관련글 전체 목록 보기


  1. 열파지수: https://www.kma.go.kr/HELP/basic/help_01_04.jsp [본문으로]