아두이노 온도 습도 센서의 사용 (DHT11센서)
DHT11 센서를 이용하여 온도 및 습도를 체크해 보기로 한다. 아래의 사진과 같이 내가 가진 센서는 모듈식으로 되어 있어 저항이 이미 모듈에 추가되어 있기 때문에 추가 저항을 연결할 필요는 없다. 만약 저 파란색의 DHT11 센서만 가지고 있다면 Signal과 5V사이에 아래와 같이 5K저항을 달아주면 된다.
DHT11 센서는 소수점 이하의 온도와 습도 값이 넘어오지 않는다. 제조사의 데이터시트에는 표시가 되어 있긴 한데 암튼 넘어오질 않는다.
센서의 동작전압은 3V ~ 5.5V 이므로 아두이노의 3.3V 나 5V 어디에 연결해도 상관이 없다.
5K ohm 저항 연결
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 | #include <DHT11.h> //라이브러리 불러옴 int pin=2; //Signal 이 연결된 아두이노의 핀번호 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(1000); //1초마다 측정 } | cs |
씨리얼 모니터를 열어 확인하면 결과는 아래와 같이 표시된다.
temperature:28.00 C humidity:33.00 %
temperature:28.00 C humidity:33.00 %
temperature:28.00 C humidity:33.00 %
temperature:28.00 C humidity:33.00 %
DHT22 온습도 센서 배우기
아래는 DHT22 ( AM2302) 온습도 센서를 테스트 하는 것이다. DHT11 센서에서 사용하는 프로그램을 그대로 사용하면 결과가 제대로 나오지 않는다.
DHT 온습도 센서 라이브러리는 아래에 있다. 주의할 점은 라이브러리를 다운받아 압축을 풀고 아두이노 라이브러리 폴더에 넣을때 폴더이름을 반드시 DHT22 로 해야 한다.
아래 그림과 소스코드의 출처 : http://www.instructables.com/id/How-to-use-DHT-22-sensor-Arduino-Tutorial/
연결도
소스코드
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 | /* Originally posted on www.bbangpan.com Program Description: DHT22 sensor test code Needed library : DHT Tested on : Arduino 1.0.6, Arduino UNO R3, DHT22(registor integrated) Copyright (c) 2015 www.bbangpan.com. All right reserved. This program can be used for any non-commercial purpose freely. */ #include "DHT.h" #define DHTPIN 2 // data pin to DHT22 #define DHTTYPE DHT22 // using DHT 22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHT22 test:"); dht.begin(); } void loop() { float hum = dht.readHumidity(); float tmp = dht.readTemperature(); // check if returns are valid if (isnan(tmp) || isnan(hum)) { Serial.println("Reading error.."); } else { Serial.print("Temperature: "); Serial.print(tmp); Serial.print(" C\t"); Serial.print("Humidity: "); Serial.print(hum); Serial.println(" %"); } } | cs |
씨리얼 모니터를 열어서 확인하면 아래와 같은 결과를 볼 수 있다.
Humidity: 65.40 %, Temp: 27.70 Celsius
Humidity: 58.20 %, Temp: 27.80 Celsius //입김을 후~ 불었더니 ㅎㅎ
Humidity: 78.70 %, Temp: 30.20 Celsius
Humidity: 91.00 %, Temp: 30.80 Celsius
Humidity: 99.50 %, Temp: 30.10 Celsius
Humidity: 99.90 %, Temp: 29.70 Celsius
'아두이노-스케치' 카테고리의 다른 글
캐릭터 LCD 1602A 다루기 - 글자표시, 온도와 빛 센서 표시 (547) | 2016.08.25 |
---|---|
빛센서 디지털 출력 코드 (949) | 2016.08.07 |
조도센서 모듈을 사용하여 일정 밝기 이상이 되면 HIGH 신호를, 이하가 되면 LOW 신호 (0) | 2016.07.14 |
아두이노 아날로그 입력과 출력 사용하기 - 조도센서와 LED 함께 사용 (0) | 2016.07.14 |
초음파 센서로 음악(도 레 미 ...) 연주하기 소스코드 (0) | 2016.07.10 |