08. 아두이노 DHT11 온도습도센서 사용하기
안녕하세요.
이번 시간에는 DHT11 온습도 센서를 사용해보는 시간을 가지도록 하겠습니다.
DHT11 센서 특징 : 온도/습도 값을 측정 가능. 아날로그 신호가 아닌, 디지털 신호로 측정.
오늘의 준비물
오늘 이 글을 따라하기 위한 필수 라이브러리
압축을 푼 후, DHT11_library 폴더를 함께 생성하시기 바랍니다.
생성된 폴더 자체를 내 문서 - Arduino - Library 폴더에 넣어주시면 되겠습니다.
혹은,
스케치
- 라이브러리 포함하기
- .ZIP 라이브러리 추가..
에서 내려받은 압축파일을
선택하시기 바랍니다.
※ 라이브러리 설치를 하지 않으시면, 컴파일이 완료가 되지 않습니다.
오늘의 예제는 UNO / WEMOS D1 R1 으로 테스트 하였습니다.
MQTT 통신을 통한 Node-red Dashboard 구현을 원하시는 분은 추후 새로운 글로 찾아뵙겠습니다.
링크[생성중]
DHT11 핀은 이렇게,
왼쪽부터 +, 신호, - 입니다.
5V와 GND는 보드에서 나오는 5V와 GND로,
sig는 디지털핀
Arduino UNO의 경우 : digital 2 ~ 13 pin 중 1개 선택
Arduino Wemos D1 R1의 경우 : D2 ~ D8 중 1개 선택
회로도
우노와 WEMOS D1 R1용 소스코드 2개가 있습니다.
int pin에 우노는 4;를, Wemos D1 R1은 D4 라고 입력하시면 됩니다.
소스코드 예제 <Arduino UNO 용>
#include <DHT11.h>
int pin = 4;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600); //통신속도 를 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(DHT11_RETRY_DELAY); //delay for reread 1000ms
}
소스코드 예제 <Wemos Di R1 용>
#include <DHT11.h>
int pin = D4;
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(DHT11_RETRY_DELAY); //delay for reread
}
결과
시리얼 모니터에서 UNO와 WEMOS D1 R1 모두 온도와 습도값을 불러올 수 있었습니다.
- 센서가 한개인데 어떻게 두개에서 가져오냐? 라고 생각하신다면...
※ 추가
소수점 자릿수를 제어하려면,
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.print(temp); 가 온도값 출력을 한다.
// 여기서, (temp,1); 이라고 하면 소수점 첫번째 자리까지만 출력이 된다!
오늘은 여기서 포스팅을 마치고, 다음 시간에 뵙겠습니다.
필요한 자료가 있으시다면, 말씀주시면 준비해드리겠습니다.
언제나 방문해주셔서 감사합니다!