□ 실물사진
□ 센서 특징
특징 |
내용 |
모델 |
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; } } |
□ 라이브러리 파일
'아두이노 > 센서' 카테고리의 다른 글
복합 센서 (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 |