본문 바로가기

프로그래밍/아두이노[Arduino]&라즈베리파이[Raspberry Pi]

[아두이노] 디지털 온습도 센서 DHT11로 온도/습도 확인하기!



안녕하세요 오늘은 아두이노 온습도 센서(DHT11)로 

 

온도와 습도를 측정하는 방법을 알아보겠습니다.

 

센서의 모습은 아래 사진과 같습니다

 

부품 목록

 

 

 

회로도

브레드 보드

1. 오렌지보드의 5V을 브레드보드의 +버스에 연결합니다.

 

2. 오렌지보드의 GND핀을 브레드보드의 -버스에 연결합니다.

 

3. 온습도센서 모듈을 그림과 같이 세로로 꽂습니다.

 

4. 온습도센서 모듈의 1번째 핀을 브레드보드의+버스에 연결합니다.

 

5. 온습도센서 모듈의 2번째 핀을 오렌지보드 D2번핀에 연결합니다.

 

6. 온습도센서 모듈의 4번째 핀을 브레드보드의 -버스에 연결합니다.

 

7. I2C_LCD의 GND핀을 브레드보드 -버스에 연결합니다.

 

8. I2C_LCD의 VCC핀을 브레드보드 +버스에 연결합니다.

 

9. I2C_LCD의 SDA핀을 아날로그 A4번핀에 연결합니다.

 

10. I2C_LCD의 SCL핀을 아날로그 A5번핀에 연결합니다.

 

 

라이브러리 설치하기

 1. 스케치 -> 라이브러리 포함하기 -> 라이브러리 관리...' 를 눌러줍니다.

 

 

 

 

 

 2. 라이브러리 매니저 창이 나오면 DHT11을 검색 후 DHT sensor library by Adafruit를 설치해 줍니다.

 

3. 라이브러리 매니저 창에서 adafruit unified sensor를 검색 후 Adafruit Unified Sensor by Adafruit를 설치해 줍니다.

 

소스코드

// DHT11 센서를 쉽게 제어하기 위한 라이브러리를 추가해줍니다.
#include "DHT.h"
// I2C LCD를 쉽게 제어하기 위한 라이브러리를 추가해줍니다.
#include <LiquidCrystal_I2C.h>
 
// 온습도 센서를 디지털 2번 핀에 연결합니다.
#define DHTPIN 2
#define DHTTYPE DHT11
 
DHT dht(DHTPIN, DHTTYPE);
 
// 16X2 크기의 LCD 객체를 생성합니다.
// 만약 LCD 화면이 나오지 않으면 0x3F 대신 0x27를 넣어주세요.
LiquidCrystal_I2C lcd(0x3F, 16, 2);
 
void setup() {
  Serial.begin(9600);
  dht.begin();
 
  // LCD를 초기화 합니다.
  lcd.init();
  // LCD의 백라이트를 켜줍니다.
  lcd.backlight();
}
 
void loop() {
  // 습도와 온도값을 측정하고, 제대로 측정되었는지 확인해줍니다.
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
 
  if (isnan(humidity) || isnan(temperature) ) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
 
  // 온도와 습도값을 시리얼 모니터에 출력해 줍니다.
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" %");
 
  // LCD에 출력할 습도 메세지를 만듭니다.
  String humi = "Humi : ";
  humi += (String)humidity;
  humi += "%";
 
  // LCD에 출력할 온도 메세지를 만듭니다.
  String temp = "Temp : ";
  temp += (String)temperature;
  temp += "C";
 
  // 첫번째 줄, 첫번째 칸부터 "Humi = 000%" 를 출력해 줍니다.
  lcd.setCursor(0, 0);
  lcd.print(humi);
 
  // 두번째 줄, 첫번째 칸부터 "temp = 000C" 를 출력해 줍니다.
  lcd.setCursor(0, 1);
  lcd.print(temp);
 
  delay(1500);
}

 

 

결과

 


이렇게 온도와 습도가 실시간으로 표시가 됩니다!!

 

이상입니다!