아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

DHT 온습도 센서는 가장 간단하게 사용되는 아두이노 센서이다. 사용법도 간단해서 DHT 라이브러리를 다운받고 data 케이블을 디지털핀에 연결해서 데이터를 받으면 작동한다.

하지만, 데이터 출력값이  2147483647 로 나오면서 작동하지 않는 경우가 있다.  2147483647 은 int 정수 32비트로 나타낼수 있는 최댓값인데 DHT센서로부터 데이터가 정상적으로 수신되지 않을 때 시리얼모니터로 정수값을 출력하면 나타나는 오류이다.

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu
DHT 센서의 오류원인

1. 센서의 종류
DHT 센서는 DHT11과 DHT22가 있는데 아두이노 IDE에서 센서종류를 정의할때 다르게 작성하면 올바른 데이터가 수집되지 않는다.

2. 전원
DHT 센서는 3 - 5.5 혹은 6V 의 전압에서 작동하는데 전원이 부족하거나 연결이 끊겨있으면 정상적인 값이 출력되지 않는다.

3. 데이터 핀 연결
DHT의 데이터 선이 잘못 연결되어 있으면 당연하게 데이터가 불러와지지 않는다.

4. 센서 초기화(?)
아두이노에서는 DHT센서를 일반적으로 연결하면 바로 데이터가 수집되는데 왠지모르지만 esp 8266에서는 DHT센서를 불러오는 작업이 setup 에 있어야한다. void setup() 부분에 dht.begin(); 을 추가해주면 esp 8266에서 데이터를 받아오기 시작한다.

void setup() {
  Serial.begin(115200);
  dht.begin();  // DHT 센서 작동시키기
}
기타

DHT 센서의 값을 불러오는 dht.readHumidity 혹은 dht.readTemperature를 int 로 정의하면 2147483647 오류가 나타나고 float 로 정의하면 nan 값으로 오류가 출력된다.

#include <DHT.h>  // 라이브러리에서 DHT 추가

#define DHTPIN 5     // DHT 센서 데이터선을 디지털핀에 연결
#define DHTTYPE DHT11 // DHT 센서 정의

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);         
  dht.begin();  // DHT 센서 연결
}

void loop() {
  int h = dht.readHumidity(); // DHT 센서에서 습도데이터 읽기
  int t = dht.readTemperature();  // DHT 센서에서 온도데이터 읽기

  // int 로 값을 정의했을 때 오류가 나면 2147483647 이 출력되고
  // float으로 값을 정의하면 오류났을 때 nan 으로 출력된다.

  // 데이터가 없을 때 처리하는 방식 
  // 습도 혹은 온도 데이터가 nan 일때 출력되는 메시지
  if (isnan(h) || isnan(t)) {              
    Serial.println(F("센서와 연결되지 않았습니다"));
    return;
  }

  Serial.print("humidity:"); 
  Serial.println(h);                 // 습도출력

  Serial.print("temperature:");
  Serial.println(t);                 // 온도출력

  delay(1000);
}
다른 아두이노 프로젝트

https://kyoungin90.tistory.com/309

공대생 감성 아두이노 스마트 전등 스위치봇 만들기

밤에 자기 전 전등 스위치를 끄러 움직이는 것은 귀찮은 일이다. 그래서 스마트 스위치를 검색하면 크게 세 종류의 스마트 스위치를 찾아볼 수 있다. 1. 전등에 스위치를 연결하여 원하는 곳에

kyoungin90.tistory.com

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu
참고

https://randomnerdtutorials.com/esp32-dht11-dht22-temperature-humidity-sensor-arduino-ide/

① 온도와 습도가 0으로 표시됩니다.

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu


LCD 화면에 온습도 센서가 0 으로 뜨는 경우

LCD 화면에 온습도 센서가 0으로 뜨는 경우는 다음과 같습니다.

 - 온습도 센서에 전력(+극, -극 연결)이 제대로 흐르지 않을 경우
- 아두이노와 온습도센서의 데이터 핀이 잘못 꽂혀있을 경우

 
아래에 사진에 맞게 점퍼선(F/M)을 이용해서 온습도센서의 배선을 올바르게 해주면 정상적으로 온도와 습도가 LCD에 출력됩니다.

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu


올바른 온습도센서 연결



② 미세먼지 농도가 0으로 표시됩니다.

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu


LCD 화면에 미세먼지 농도가 0으로 뜨는 경우


LCD 화면에 미세먼지 농도가 0으로 뜨는 경우는 다음과 같습니다.

 - 미세먼지 센서에 전력(+극, -극 연결)이 제대로 흐르지 않을 경우
- 아두이노와 미세먼지 센서의 이 잘못 꽂혀있을 경우

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

1번 선
2번 선
3번 선

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu

4번 선
5번 선
6번 선


위 사진에 맞게 미세먼지 케이블을 브레드보드와 아두이노에 올바르게 배선해주면 정상적으로 미세먼지가 LCD에 출력됩니다.

※ 최종 회로도(미세먼지 케이블의 색상 X, 순서대로 O 진행해주세요.)

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu


③ 수치가 이상한 것 같아요.

공기청정기에 주어지는 전력이 모자라는 경우 온습도와 미세먼지의 수치가 정확하지 않을 수 있습니다.

동봉된 어댑터를 아두이노에 연결하여 다시 실행해보시길 바랍니다.

아두이노 온습도센서 오류 - adu-ino onseubdosenseo olyu