인투피온 강좌/아두이노 팁(Tip)

아두이노 매뉴얼 [미세먼지 측정 키트] - 3

인투피온 2022. 8. 22. 09:00

(이미지 클릭시 구매할 수 있는 링크로 이동됩니다)

 

 

오늘은 미세먼지 측정 키트에 대해서 알아보는

마지막 시간입니다!

 

 

미세먼지 측정 키트에 대한 강의는 1편과 2편이 있으며

아직 보지 않으셨을 경우 아래 링크를 통해 먼저 읽어주시기 바랍니다.

 

 

▼   ▼   ▼

 

 

[미세먼지 측정 키트 1편]

https://intopionshop.tistory.com/513?category=1021753 

 

아두이노 매뉴얼 [미세먼지 측정 키트] - 1

안녕하세요! 오늘은 미세먼지 센서 키트에 대해서 알아보도록 하겠습니다. 미세먼지 센서 모듈을 이용해 미세먼지 값을 측정하는 키트입니다. 구성품은 아래 사진들을 참고해주시기 바랍니다.

intopionshop.tistory.com

 

[미세먼지 측정 키트 2편]

https://intopionshop.tistory.com/514

 

 

 

Chapter 5. LED + LCD 완성

 

 

Chapter 4, 5 에서 확인한 LED 와 LCD 를

미세먼지에 추가해 보겠습니다.

 

 

 

PPD42NS, LED, LCD FRITZING

 

 

선이 너무 많다고 어려워하지 마세요.

 

아래 표를 보고 참고하여 차근차근 연결해주세요!

 

RGB LED 모듈 아두이노 우노
- GND
R D11
G D10
B D9

 

LCD 모듈 아두이노 우노
- GND
+ 5V
SDA A4
SCL A5
미세먼지 측정 모듈 아두이노 우노
1번 핀 GND
3번 핀 5V
4번 핀 D8

 

 

완성 소스 코드

 

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
 
#define BLUE 9      // RGB LED Module
#define GREEN 10
#define RED 11
 
LiquidCrystal_I2C lcd(0x27162); // I2C LCD 주소값 확인
 
 
int DustPin = 8;    //먼지 센서 
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
float ugm3 = 0;
 
int redValue = 0;     //RGB LED
int greenValue = 0;
int blueValue = 0;
 
void setup() {
  Serial.begin(9600);
 
  pinMode(DustPin ,INPUT);      // 먼지센서
  starttime = millis();
  
  lcd.init();                   // LCD
  lcd.backlight();
  lcd.setCursor(0,0);           //
  lcd.print("  Dust Density "); 
 
  pinMode(RED, OUTPUT);         // RGB LED
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  digitalWrite(RED, LOW);
  digitalWrite(GREEN, LOW);
  digitalWrite(BLUE, HIGH);
}
 
void loop() {
  
  redValue = 0
  greenValue = 0;
  blueValue = 0;
 
  duration = pulseIn(DustPin , LOW);
  lowpulseoccupancy = lowpulseoccupancy+duration;
 
  if ((millis()-starttime) > sampletime_ms)
  {
    ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62// using spec sheet curve
    ugm3= concentration * 100 /13000;
    
    Serial.print("ugm3 = " ); //미세먼지 시리얼모니터
    Serial.print(ugm3);
    Serial.println("ug/m3" );
    
    lcd.setCursor(0,1);       //미세먼지 LCD 출력
    lcd.print("  ");
    lcd.print(ugm3);
    lcd.print(" ug/m3  ");
 
    if(ugm3<30)  //각 수치에 따른 LED 색상 
    {
      greenValue = 20;
      blueValue = 255;
      redValue = 0
      analogWrite(GREEN, greenValue);
      analogWrite(BLUE, blueValue);
      analogWrite(RED, redValue);
    }
      else if(ugm3<80)
      {
        greenValue = 255;
        blueValue = 20;
        redValue = 0
        analogWrite(GREEN, greenValue);
        analogWrite(BLUE, blueValue);
        analogWrite(RED, redValue);
        
      }
        else if(ugm3<150)
        {
          redValue = 250
          greenValue = 60;
          blueValue = 0;
          analogWrite(RED, redValue);
          analogWrite(GREEN, greenValue);
          analogWrite(BLUE, blueValue);
        }
            else if(ugm3>150)
          {
            redValue = 220;     
            greenValue = 0;
            blueValue = 0;
            analogWrite(RED, redValue);
            analogWrite(GREEN, greenValue);
            analogWrite(BLUE, blueValue);  
          }
     
    lowpulseoccupancy = 0;
    starttime = millis();
  }
}
 
 

 

위 소스를 업로드 해주시면

 

 

아래의 영상처럼 ! !

 

 

아두이노 우노, 미세먼지 센서를 이용한 키트!

 

미세먼지 센서는 30초 주기로 샘플링이 이루어지기 때문에

영상은 4배속~ 입니다.

 

의도적으로 먼지를 발생 시키기 위해 휴지를 넣었어요.

 

여기까지 '미세먼지 측정 키트' 였습니다!

 

 

 

추가적으로 블루투스 모듈이 있으면

 

앱 인벤터를 이용해 어플을 만들어

핸드폰으로 미세먼지 값을 체크할 수 있습니다.

 

 

이렇게 측정값에 따라서 캐릭터도 바꿀 수 있습니다!

 

 

 

 

전자부품 전문 쇼핑몰 인투피온입니다.
필요한 자재에 관한 문의는 홈페이지를 통한 견적 신청, 혹은 전화나 메일로 주시면 빠른 회신을 드릴 수 있도록 하겠습니다.

▶ 홈페이지: http://intopion.com/
▶ 전화: 02-2615-7278
▶ FAX : 02-6124-4242
▶ 메일: intopion@hanmail.net