라즈베리파이, 아두이노

[간단한 아두이노 코딩] 6. 온습도 센서 사용하기(DHT11)

포도알77 2020. 11. 24. 10:10

온습도 센서 사용하기(DHT11)

 

1. 온습도 센서(DHT11)

 DHT11은 직전 포스팅인 온도센서 DS18B20과 같이 디지털 센서이다. 일반적으로 습도 센서를 알아보다가 온도와 합쳐져 있어서 DHT11을 많이 사용한다. 아두이노 특성상 어떤 프로젝트를 하다보면 전체적인 핀 사용 갯수를 줄여야 하는 경우가 많기도 하고, 모듈로 구성되어 있는 센서가 풀업 회로등을 신경쓰지 않아서 편리하기 때문이다.

 

 DHT11은 정전식 습도 센서와 써미스터(온도에 따라 저항이 변하는 장치)를 사용하는데, 습도는 20~90%(오차 5%), 온도는 0~50(오차 2도) 그리고 반응 속도는 50ms이하이다.

 

 

2. 회로의 구성

 회로도 프로그램에 DHT11이 없어서 우선 RTH03의 회로를 그렸다. RHT03과 다른 것은 없고, DTH11은 단순히 풀업 저항이 포함된 RHT03 모듈이라고 생각하면 된다. 연결 핀도 Vcc, GND 그리고 데이터 라인 총 3개이다.

 

 특이하게 DHT11은 3.3v ~ 5.5v 동작인데, 5V에 연결하니 센싱이 잘 안되서 3.3v 연결하였더니 정상동작 하였다.

 

3. 소스코드

 이 DHT11 센서도 DS18B20과 동일하게 라이브러리를 활용한다. 라이브러리는 DHT11으로 검색하면 adafruit의 라이브러리가 있는데 이를 사용하면 된다.

  

// DHT 헤더 추가
#include "DHT.h"

// GPIO Digital 2번 핀 사용
// 센서 종류는 DHT11
#define DHT11_SENSOR 2
#define DHTTYPE DHT11

// DHT 객체 생성
DHT dht(DHT11_SENSOR, DHTTYPE);

void setup() {
  // UART 통신 및 dht 객체 초기화
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  // 습도, 온도 정보를 가져옴
  // 화씨의 경우 readTemperature(true)로 처리
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // 출력
  Serial.print("Humidity: "); Serial.print(h);
  Serial.print(",  Temperature: "); Serial.println(t);
  delay(1000);
}

 

 생각보다 집안 습도가 매우 건조하다. 

 

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사