반응형

【 아두이노 센서#17】 DHT11 ·습도 센서 다루기 #1



 이번 시간은 온도와 습도를 같이 나타내 줄 수 있는 DHT11 이라는 매우 유용한 센서에 대해 다루어 보고자 한다. 첫 강좌로 센서의 기본적인 활용에 대해 실습한 다음 두 번째 강좌에서 LCD를 장착하여 온도와 습도를 같이 표시해 볼 것이다. 


▶ 선수 학습 :

  없음


▶ 실습에 사용되는 부품 자료 ( DHT11 ) 


《 DHT11 핀 배열 》


위와 같은 DHT11 센서를 바로 사용하기도 하지만, 보통은 아래 처럼 풀업저항과 LED가 달려 있는 모듈 형태가 사용하기 편해서 많이 사용한다. 




▶ 실습 목표 :  


1. 풀업 저항의 기능에 대해 이해한다. 


2. DHT11 센서의 온도 값과 습도 값을 시리얼 모니터 창을 통해 확인 할 수 있다.



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)



'X' 또는 'NC'(No Connect)는 사용하지 않는 핀이며, 

만약 풀업저항이 달려 있는 모듈을 사용한다면, VCC, GND 연결하고, Data핀만 아두이노의 8단자에 바로 연결하면 더 간단히 연결할 수 있다.


센서에서 데이터 값을 아두이노로 정확히 전달하기 위해서 Data Pin풀업 저항(2.2KΩ~10KΩ)을 달아 주어야 한다.
상기 모듈은 풀업 저항 과 LED를 추가한 것이다



▶ 프로그램 코드 및 설명 : 


/*  DHT11 온습도 센서 값을 읽어 시리얼 모니터 창으로 나타내기 */

#include <DHT.h// DHT.h 헤더파일을 라이브러리에 추가 한다

#define DHTPIN // ·습도 데이터 핀 설정

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

#include <LiquidCrystal.h>


void setup() {

  Serial.begin(9600);

}

void loop() {

  delay(2000);                                   // 센싱을 위한 시간 지연 값을 준다.

  int h = dht.readHumidity();

  int t = dht.readTemperature();

  Serial.print("Humidity: ");        // 시리얼 모니터로 출력

  Serial.print(h);

  Serial.print(" %\t");

  Serial.print("Temperature: ");

  Serial.print(t);

  Serial.println(" C");

}

 

※ 만약 위 코드를 실행할 때 DHT11 센서관련 라이브러리 관련 에러가 난다면, 아두이노 IDE 메뉴의 라이브러리 관리 팝업창에서 <dht.h> 헤더파일을 검색하여 추가(설치)해 주어야 한다. 



① 라이브러리 검색창에서 "dht.h" 검색!

② 설치 클릭!


※ 중요! : 위의 라이브러리 매니저 화면에서 다운로드 받는 DHT.h 는 1.2.3 버전 이하를 사용해야  본문의 코드로 정상 작동 됩니다 !


혹은 첨부되는 라이브러리를 다운로드 받아 설치하세요.

1.2.3버전 이상의 최신버전을 사용하면 에러 나지는 않지만 온도 습도값이 정상적으로 나오지 않습니다.

DHT_sensor_library_1.2.3.zip




▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)






▶ 아두이노 파일(다운) :

01_DHT11_Serial_Basic.ino




반응형