반응형

 

 

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명령들을 수행하는 목적이 많죠 ^^ 여기서 '어떤 조건'을 정량화하는 과정에서 센서를 많이 사용하게 됩니다.

 

센서의 종류는 너~~무 다양한데 그중 '온습도 센서(Temperature and Humidity sensor)'는 단순하면서도 많은 곳에서 중요하게 사용됩니다. 그래서 오늘은 센서 동작의 입문이라고 할 수 있는 온습도 센서를 아두이노에 장착하고 동작하는 방법을 알아보겠습니다.

 


아두이노(Arduino)로 쉽게 사용할 수 있고 온라인에서 흔하게 구할 수 있는 온습도 센서는 몇 가지 종류가 있지만, 우선 네이버나 구글에서 ‘온습도 센서’라고 검색하면 모델명 DHT11이라는 제품을 가장 먼저 볼 수 있습니다. 저렴한 가격에 비해 실내 일상 환경의 온도나 습도를 측정하는데 무리가 없고 사용하기 쉬워서 많이 사용되는 모델입니다. 추가로 쓸만한 온습도 센서 및 동작원리에 관해서는 아래 정리한 내용 링크 참고 부탁드려요 ^^

 

Arduino 아두이노 온도 습도 센서(Temperature and Humidity sensor) 종류 및 사용법

온습도 센서는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 흔하면서도 중요한 센서라 다양한 종류의 제품이 있고 기능적으로 큰 차이 나지 않습니다. 그렇기 때문에 사용 장소나 측정 목적에..

it-g-house.tistory.com

  • DHT11 온습도 센서

온습도 센서(DHT11)
온습도 센서 모듈(DHT11 module)

 

DHT11 온습도 센서는 단일품과 모듈 형태로 판매를 합니다. 단품으로 구매를 하면 아두이노에 연결할 때 저항을 따로 연결해야 하고 그러면 빵판도 필요하고 번거롭기 때문에 모듈형으로 구매하는 것이 최선입니다. 센서는 몸통과 4 pin으로 구성되어 있고 사진에 표기되어 있듯이 VCC, OUT (data), NC (not connect), GND 순서로 되어 있습니다. 모듈형 같은 경우는 판매사마다 조금은 다르지만 대부분 보드에 DHT11 센서가 실장 되어 있고 3 pin (OUT, VCC, GND)으로 구성되어 있습니다. 추후 완성품을 만들 때도 모듈형이 여러모로 편하기 때문에 모듈형을 위주로 포스팅하도록 하겠습니다. 

 

동작 전압 (Power) 3~5 V
온도 측정 범위 (Temperature range) 0 ~ 50 ℃ (±2 ℃)
습도 측정 범위 (Humidity range) 20 ~ 80 % (±5 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz

 

  • 아두이노와 DHT11 센서 연결

센서를 동작하기 위해서는 기본적으로 센서가 필요한 전원이 공급되어야 합니다. DHT11의 동작 전압이 3~5V로 아두이노의 3.3V나 5V pin 어디에나 연결해도 괜찮습니다. 그림과 같이 VCC(+) 핀은 아두이노의 3.3V 또는 5V 핀에 연결하고 GND는 GND핀에 연결합니다. 그리고 센서가 측정한 데이터를 아두이노가 받아야 하기 때문에 Data output 핀과 아두이노의 디지털(DIGITAL) 핀과 연결합니다. 저는 디지털 2번 핀과 연결하였는데 이 부분은 프로그램에서 바꿀 수 있기 때문에 2번부터 13번까지 어디에 연결해도 상관은 없습니다.

 

만약에 센서를 여러개 사용하시면 각 센서의 Data output 핀을 아두이노의 디지털 핀에 번호를 다르게 각각 연결하면 됩니다. 동작전압 공급은 VCC는 한꺼번에 3.3V 또는 5V에 연결하고, GND 역시 한꺼번에 아두이노의 GND에 연결하면 되는데.. 이는 병렬연결(한꺼번에 연결) 일 때 동일하게 Voltage가 공급되기 때문입니다. 주의하실 부분은 아두이노가 제공할 수 있는 Power 출력 범위보다 많은 수의 센서 또는 전력을 많이 먹는센서를 사용하면 센서가 정상적으로 작동이 안 될 수 있습니다. (집에 와트(W)수 높은 가전제품을 한 번에 꼽으면 안 되는 것과 같은 원리입니다.) 

   

온습도 센서(DHT11) 회로도

 

 

 

 

 

  • 스케치(sketch)로 프로그램 코딩

DHT11 센서를 동작하고 온도와 습도 data를 불러오는 프로그램을 스케치를 통해서 코딩합니다. 스케치를 아직 설치하지 않으신 분은 아래 링크 참조하셔서 설치 부탁드려요~

 

아두이노(Arduino) 시작하기 - 통합개발환경(IDE): 스케치(sketch)

아두이노(Arduino)는 마이크로 컨트롤러(Micro-controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤할 수 있습니다. 구상하는 대로..

it-g-house.tistory.com

아래와 같이 코딩 후에 한가지 추가해야 하는데... 그건 '라이브러리(Library)'라고 하는 파일입니다. 여기서 '라이브러리'를 간단히 설명하면 이미 코딩된 프로그램을 인용해서 사용하는 개념 정도로 이해하시면 됩니다. 아래 명령어에서 첫 줄에 있는 #include <dht.h>가 'dht.h' 라이브러리를 사용하겠다는 내용입니다. 

 

아두이노 스케치를 이용한 DHT11 센서 프로그램 코딩

 

라이브러리가 필요한 것은 DHT11 센서에서 측정되는 값은 대부분 센서가 그렇듯 단순 전기적인 voltage 값입니다. 이를 우리가 알아볼 수 있게 calibration 된 값으로 변경하고 디지털 값으로 변화시켜 하나의 output선으로 출력해주는 과정과 같은 센서가 측정하는데 필요한 프로그램들이 'dht.h' 라이브러리에 녹아져 있는 것입니다. 덕분에 우리는 편하게 라이브러리만 인용하여 위와 같은 간단한 코딩이 가능한 것입니다. (코딩 블록은 본문 맨 아래 첨부해 두겠습니다.)

 

라이브러리는 인터넷 검색으로 쉽게 찾을 수 있으며 라이브러리 추가하는 방법은 파일을 아두이노 라이브러리 폴더에 넣어 두시면 됩니다. 대부분 C:\Users\Documents\Arduino\libraries 경로로 예상하나 다들 설치한 곳에 따라 다를 수도 있으니 라이브러리 폴더를 찾아주세요~ 그리고 폴더에 압축 푼 파일을 옮겨두고 스케치를 다시 켜주세요~ 스케치를 껐다가 다시 켜야 스케치가 인식을 하니 참고하세요 ^^ 제가 사용하는 라이브러리 파일은 여기 첨부하겠습니다. 

DHT_Library.zip
0.01MB

 

  • 아두이노에 프로그램 업로드(Upload)

코딩이 완료되었으면 메뉴 상단의 '체크' 표시를 눌러 프로그램이 이상이 없는지 Compile을 실행합니다.

 

Compile 실행

이상이 없으면 아래와 같이 "Done compiling"이라고 완료됩니다.

 

Compile 완료

그리고 메뉴 상단의 Upload를 눌러주면 코딩한 프로그램이 아두이노로 업로드됩니다. 업로드 완료 메세지가 정상적으로 나타나면 모두 완료되었습니다. 그럼 온습도 센서가 정상적으로 동작하고 있는지 확인해야겠죠? 센서가 수집하고 있는 데이터를 보기 위해 시리얼 통신(Serial communication)을 통해 컴퓨터에서 볼 수 있습니다. 스케치에서 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 창이 뜨고 온도와 습도 데이터를 확인할 수 있습니다.

 

프로그램 업로드(Upload) 하기
아두이노(Arduino) 시리얼 모니터(Serial Monitor) 실행
아두이노(Arduino) 시리얼 모니터(Serial Monitor)를 통해 온습도 데이터 확인하기

 

 

 

 

 


여기까지 아두이노(Arduino)에 온습도 센서(DHT11)를 설치하고 동작하는 프로그램까지 코딩해 보았습니다. 처음 정상적으로 구동될 때 엄청 신기하고 신났던 게 기억나네요 ㅎㅎ 간단한 센서 동작을 응용하여 여러 개의 센서를 동작하면 복잡한 프로젝트도 진행할 수 있습니다.   

 

이제 온습도 센서(Temperature and Humidity sensor)가 수집하는 데이터를 활용하기 위해서 우선 컴퓨터로 데이터를 받아야겠죠? 다음 시간에는 시리얼 통신(Serial communication)으로 들어오는 데이터를 저장하는 방법에 대해 알아보겠습니다. 의견이나 질문 있으시면 언제든지 댓글로 남겨주세요~ ^^

 

한걸음 한걸음씩!!

 

#include<dht.h>
dht DHT;
#define DHT11_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

void setup() {
Serial.begin(9600);
}

void loop() {
DHT.read11(DHT11_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(2000); //Delay 2 sec.
}

 

▼ 온도 습도 센서 사러가기!! ▼

 

DHT21 아두이노 온도 습도 디지털 센서 / AM2301 sensor : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

* 프로그램 코딩에 관해 처음이신 분은 아래 정리한 내용 참고 부탁드립니다. 질문사항이나 추가적으로 필요한 내용 있으면 언제든지 댓글로 남겨주세요 ^^

 

Arduino (아두이노) 스케치 프로그램 코딩 입문

아두이노(Arduino)는 프로그램에 의해 동작하는 Micro-controller입니다. 그렇기 때문에 프로그램 코딩을 어느 정도 할 수 있어야 원하는 홈 IoT (사물인터넷) 같은 프로젝트를 진행할 수 있습니다. 저처럼 프로그..

it-g-house.tistory.com

명령어 기능 사용법
  include 외부 라이브러리를 스케치 안에 포함할 때 사용 #include <라이브러리 파일명>
define 매크로 상수와 함수를 정의할 때 사용 #define 변수 상수(함수)
serial.begin 아두이노의 시리얼 통신(Serial communication)을 시작할 때 사용 Serial.begin(통신속도);
serial.print 아두이노 시리얼 통신의 데이터 값을 출력할 때 사용  Serial.print("출력내용");
delay 프로그램을 진행을 원하는 시간만큼 일시적으로 멈출 때 사용 delay(msec.);

 

 

 

반응형

+ Recent posts