1. DHT11 온도 습도 센서

DHT11은 상대 습도와 온도를 측정해 주는 센서로 장시간 사용해도 변화율이 낮은 제품입니다. 온도는 2 °C, 습도는 ± 5% 정도의 오차범위를 갖습니다. 자세한 성능은 아래와 같습니다.

동작전압: +5 V
온도 범위 :0-50 °C ± 2 °C
습도 범위 :20-90% RH ± 5%

2. 연결방법

1365485508

DHT11 Pin 1 (Vss) –> Arduino +5V
DHT11 Pin 2 (Signal) –> Arduino Pin 2
DHT11 Pin 2 (Signal) –> Arduino +5V via Resistor 4.7K
DHT11 Pin 3 –> N/C
DHT11 Pin 4 (GND) –> Arduino Ground

Pin 2 를 아두이노 디지털 핀과 전원 두 갈래로 연결하고 저항(5K)을 달아줍니다. Pin 3 은 사용하지 않습니다.

Pin2를 통해 전송되는 데이터는 아래와 같은 형식으로 전달됩니다. 굳이 이 형식을 모르더라도 라이브러리를 통해 간편하게 사용하실 수 있습니다.

Data format: [8bit integral RH data] + [8bit decimal RH data] + [8bit integral T data] + [8bit decimal T data] + [8bit check sum]

3. 코드 (스케치)

DHT11 라이브러리를 사용하지 않는 소스가 제대로 동작하질 않아서 DHT11 라이브러리를 사용했습니다. 라이브러리를 소스 아래 링크에서 다운로드 받아서 설치하세요. (아두이노 설치 폴더 / libraries 폴더에 복사)

#include <DHT11.h>
int pin=2;    // 연결한 아두이노 디지털 핀 번호
DHT11 dht11(pin); 
void setup()
{
   Serial.begin(9600);
}

void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.println();
  }
  else
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println();    
  }
  delay(DHT11_RETRY_DELAY); //delay for reread
}

배선만 정확하다면 에러없이 Serial Monitor 창에 온도와 습도가 표시될 것입니다. 사용된 DHT11 라이브러리는 아래 링크에서 받으세요.

[wpdm_file id=15]