온습도 센서 DHT22
DHT22 센서를 이용하여 온도와 습도를 측정한다.
센서 |
DHT11 |
DHT22 (AM2302) |
사진 |
|
|
온도 |
0 ~ 50℃ (오차범위 ±2℃) |
-40 ~ 100℃ (오차범위 ±0.5℃) (해상도 0.1℃) |
습도 |
20 ~ 90% (오차범위 ±5%) |
0 ~ 100% (오차범위 ±2~5%) (해상도 0.1%) |
Pinout
DHT22 |
DAT |
VCC |
GND |
Arduino |
8 |
5V |
GND |
schematic
라이브러리 준비하기
Case1: 위 사진과 같은 형태의 DHT22 모듈을 사용하는 경우
Case2: 위 라이브러리로 동작하지 않는 경우
2개의 라이브러리가 필요합니다.
두 개의 라이브러리를 설치하기만 하면 되기때문에, 순서가 바뀌어도 관계없습니다.
sketch
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
| #include <DHT.h>
#define DHTPIN 8 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE);
void setup() { Serial.begin(9600); dht.begin(); }
void loop() { delay(2000); float temp_hum_val[2] = {0};
if(!dht.readTempAndHumidity(temp_hum_val)){ Serial.print("Temperature: "); Serial.print(temp_hum_val[1]); Serial.print(" *C\t,\t"); Serial.print("Humidity: "); Serial.print(temp_hum_val[0]); Serial.println(" %"); } else{ Serial.println("Failed to get temprature and humidity value."); } }
|
1602 LCD에 온도, 습도 출력하기
schematic
sketch
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include <DHT.h>
#define DHTPIN 8 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE);
#include <Wire.h> #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() { Serial.begin(9600); dht.begin(); lcd.init(); lcd.backlight(); }
void loop() { delay(2000); float temp_hum_val[2] = {0};
if(!dht.readTempAndHumidity(temp_hum_val)){ Serial.print("Temperature: "); Serial.print(temp_hum_val[1]); Serial.print(" *C\t,\t"); lcd.setCursor(0, 0); lcd.print("Temp. : "); lcd.print(temp_hum_val[1]); lcd.print("*C");
Serial.print("Humidity: "); Serial.print(temp_hum_val[0]); Serial.println(" %"); lcd.setCursor(0, 1); lcd.print("Humi. : "); lcd.print(temp_hum_val[0]); lcd.print(" %"); } else{ Serial.println("Failed to get temprature and humidity value."); } }
|