본문으로 바로가기

미세먼지를 오염도와 온습도까지 측정해주는 측정기 만들기 - 1편



안녕하세요. 애드라이프 입니다.

초미세먼지로 골치인 요즘

집안에 미세먼지 오염도를 측정 할 수 있는

측정장치를 만들어 보려합니다. 


거기다 온도와 습도까지 측정 할 수 있다면 

금상 첨화일 것 같습니다.


그래서 준비했습니다.

미세먼지 측정센서(GP2Y1023AU0F)와

온습도센서(DHT11)를 준비 했습니다.▼



상세정보는 아래 데이터 시트를 참고하세요.▼

DHT11.pdf

GP2Y1023AU0F.pdf


원래는 온습도 센서모듈을 쓰려 했습니다만,

현재 저한테 남아있는 부품이 센서만 있는 타입이라서

우선 센서만 있는 타입을 사용했습니다.


회로 구성을 바로 살펴보도록 하겠습니다.▼

이번 포스팅에서는 온슨도 센서와 미세먼지 센서의

TEST가 목적이기 때문에 아두이노 우노에

두개의 센서만 연결하고 값만 받아와 보겠습니다.



회로도를 보면 알겠지만 온습도 센서인 DHT11이

센서만 있는 타입을 사용 할 경우에는 저항을 연결하여

사용하시면 됩니다. 나머지 미세먼지 센서의 회로 구성은 

아래 그림까지 첨부하였으니 참고 바랍니다. 

위에 표시된 캐패시터와 저항은 미세먼지 센서와

함께 동봉되어 있는 것들입니다.


회로 연결에 대해서 궁금한 점이있다면 댓글로 남겨주세요.^^


이제 프로그램을 살펴보도록 하겠습니다.▼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <DHT11.h>                          //온슨도 센서 라이브러리
 
unsigned long pulse = 0;                                   // pulse를 0초기화
float ugm3 = 0;                                                 // ugm3을 0초기화
int GP2Y1023 = 8;                                             // GP2Y1023를 디지털 D8핀으로 설정
int DHT11pin = 2;                                           // DHT11pin 디지털 D2핀으로 설정
 
DHT11 dht11(DHT11pin);
 
void setup() {
  pinMode(GP2Y1023, INPUT);                          // GP2Y1023를 입력핀으로 설정합니다.
  Serial.begin(115200);                                    // 시리얼 모니터를 사용하기 위해 보드레이트를 115200으로 설정합니다.
}
void loop() {
  pulse = pulseIn(GP2Y1023, LOW, 20000);      // pulse에 GP2Y1023에서 LOW 신호를 받을 때까지 걸리는 시간을 받아옵니다.
//    Serial.println(pulse);                         // GP2Y1023의 LOWDATA
  ugm3 = pulse2ugm3(pulse);                   // ugm3를 pulse2ugm3()함수에 pulse를 넣어 반환된 값을 저장합니다.
  if (ugm3 > 0.1) {                                     // ugm3가 0.1보다 크면 (잡음 방지)
    Serial.print(ugm3, 2);                         // ugm3 변수의 소숫점 2자리수까지 출력합니다.
    Serial.println(" ug/m3");
  }
  Dht_11_Reading();
  delay(1000);                                       //1초에 한번씩 값 받아오기
}
float pulse2ugm3(unsigned long pulse) {
  float value = (pulse - 1350/ 14.0;                // pulse에 -1350을 하고 14.0을 나누어 value에 저장합니다.
  if (value > 300) {                                        // value가 300보다 크면
    value = 0;                                                // value이 0으로 저장합니다.
  }
  return value;                                             // value 값을 반환합니다.
}
void Dht_11_Reading(){
  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();    
  }
}
 
 
cs

프로그램의 전체적인 흐름은 주석을 참고해주세요.(옆으로 넘기면서 보실 수 있습니다.)



제가 사용한 DHT11.h 라이브러리도 첨부하겠습니다.▼

DHTlibrary.zip


라이브러리 추가법이 궁금하신분은 아래 관련글을 참고하세요.▼


해당 프로그램을 아두이노 우노에 업로드 후 결과를 

살펴보면서 이번 포스팅을 끝내겠습니다.▼

현재 제가 있는 공간의 미세먼지 수치와 

온도와 습도까지 표시되고 있습니다.




지금까지 미세먼지를 오염도와 온습도까지 측정해주는 측정기 만들기 - 1편 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아뵙겠습니다.

by 애드라이프