□ 실물사진


□ 센서 특징

 특징

 내용

 모델

 DHT22 / AM2302

 정밀도

 0.1

 습도 측정 범위

 0 ~ 100% RH ( +- 2% RH)

 온도 측정 범위

 섭씨 -40 ~ 80 도 ( +- 0.5 도 )

 기타

 저전력, 부가회로 불필요

 사용 전압

 3.3 ~ 5V DC 

 응답시간

 2s 

 

□ 회로구성도



□ 연결방법

DHT PIN1 → Arduino 5V

DHT PIN2 → 10K Resistor Arduino 5V (Full up Resistance)
DHT PIN2 → Arduino Digital Pin 2
DHT PIN3 → Not Used
DHT PIN4 → Arduino GND

 

□ 구현 시 주의사항

마이크로 컨트롤러의 I/O 포트와 DHT22 온습도 센서의 출력과 연결하여 풀업저항을 하나 설치

1. 센서와의 길이는 가급적 짧게 하여 전압강하로 인한 오류  예방

2. 센서로 부터 데이터 리딩 시에는 최소 5초 간격 필요

 

□ 전송 데이터 포맷

습도 정수 데이터( 8bit ) + 습도 소수점 데이터( 8bit ) + 온도 정수 데이터( 8bit ) + 온도 소수점 데이터( 8bit )
+ 패리티 비트( 8bit )


□ Sample


#include <DHT22.h> 

// Only used for sprintf 

#include <stdio.h>


// Data wire is plugged into port 7 on the Arduino 

// Connect a 4.7K resistor between VCC and the data pin (strong pullup) 

#define DHT22_PIN 7


// Setup a DHT22 instance 

DHT22 myDHT22(DHT22_PIN); 

 

void setup(void) { 

    // start serial port 

    Serial.begin(9600); 

    Serial.println("DHT22 Library Demo"); 

 

void loop(void) {  

    DHT22_ERROR_t errorCode; 

    

    // The sensor can only be read from every 1-2s, and requires a minimum 

    // 2s warm-up after power-on. 

    delay(2000); 

    

    Serial.print("Requesting data..."); 

    errorCode = myDHT22.readData(); 

    switch(errorCode) { 

        case DHT_ERROR_NONE: 

            Serial.print("Got Data "); 

            Serial.print(myDHT22.getTemperatureC()); 

            Serial.print("C "); 

            Serial.print(myDHT22.getHumidity()); 

            Serial.println("%"); 

            // Alternately, with integer formatting which is clumsier but more compact to store and 

            // can be compared reliably for equality: 


            char buf[128]; 

            sprintf(buf, "Integer-only reading: Temperature %hi.%01hi C, Humidity %i.%01i %% RH", 

                         myDHT22.getTemperatureCInt()/10, abs(myDHT22.getTemperatureCInt()%10), 

                         myDHT22.getHumidityInt()/10, myDHT22.getHumidityInt()%10); 

            Serial.println(buf); 

            break; 

        case DHT_ERROR_CHECKSUM: 

            Serial.print("check sum error "); 

            Serial.print(myDHT22.getTemperatureC()); 

            Serial.print("C "); 

            Serial.print(myDHT22.getHumidity()); 

            Serial.println("%"); 

            break; 

        case DHT_BUS_HUNG: 

            Serial.println("BUS Hung "); 

            break; 

        case DHT_ERROR_NOT_PRESENT: 

            Serial.println("Not Present "); 

            break; 

        case DHT_ERROR_ACK_TOO_LONG: 

            Serial.println("ACK time out "); 

            break; 

        case DHT_ERROR_SYNC_TIMEOUT: 

            Serial.println("Sync Timeout "); 

            break; 

        case DHT_ERROR_DATA_TIMEOUT: 

            Serial.println("Data Timeout "); 

            break; 

        case DHT_ERROR_TOOQUICK: 

            Serial.println("Polled to quick "); 

            break; 

    } 

}


□ 라이브러리 파일 

Arduino-DHT22-master.zip

 

  

반응형

'아두이노 > 센서' 카테고리의 다른 글

복합 센서  (0) 2014.11.19
GP2Y1010AU0F : 먼지 센서  (0) 2014.11.18
Piezo Disk Sensor  (0) 2014.11.18
사운드 감지 센서  (0) 2014.11.17
MPU-6050 : 6축 센서 ( 가속도, 자이로 )  (0) 2014.11.12

+ Recent posts