본문 바로가기

포트폴리오

미세먼지 측정기 제작기 (아두이노)

728x90
반응형
SMALL

미세먼지의 개념

황사 & 미세먼지 (출처:https://www.flickr.com/photos/137346712@N07/26480370465/in/photostream/)

미세먼지는 먼지와 미세먼지 먼지란 대기 중에 떠다니거나 흩날려 내려오는 입자상 물질을 말하는데, 석탄 · 석유 등의 화석연료를 태울 때나 공장 · 자동차 등의 배출가스에서 많이 발생한다.

먼지는 입자의 크기에 따라 50㎛ 이하인 총먼지(TSP, Total Suspended Particles)와 입자 크기가

매우 작은 미세먼지(PM, Particulate Matter)로 구분한다.

미세먼지는 다시 지름이 10㎛보다 작은 미세먼지(PM10)와 지름이 2.5㎛보 다 작은 미세먼지(PM2.5)로 나뉜다.

PM10이 사람의 머리카락 지름(50~70㎛)보 다 약 1/5~1/7 정도로 작은 크기라면,

PM2.5는 머리카락의 약 1/20~1/30에 불 과할 정도로 매우 작다.

출처: 환경부 finedust ebook

 

이처럼 미세먼지는 눈에 보이지 않을 만큼 매우 작기 때문에 대기 중에 머물러 있다.

호흡기를 거쳐 폐 등에 침투하거나 혈관을 따라 체내로 이동하여 들어감으로써 건강에 나쁜 영향을 미칠 수도 있다.

세계 보건기구(WHO)는 미세먼지(PM10, PM2.5)에 대한 대기질 가이드라인을 1987년부터 제시해 왔고, 2013년에는 세계 보건기구 산하의 국제 암연구소(IARC, International Agency for Research on Cancer)에서 미세먼지를 사람에게 발암이 확인된 1군 발암물질(Group 1)로 지정하였다.

출처: 환경부 finedust ebook

이러한 미세먼지를 일반인이 미세먼지 양을 측정할 수 있을까?

생각보다 저렴한 가격에 본인만의 커스텀! 아두이노 미세먼지 측정기를 만들 수 있다.

(인터넷을 보면 아두이노 미세먼지 측정기 관련한 코드가 많이 있다.)

난이도도 아주 어렵진 않다. (별 5개중 2.5에서 3개 정도)

기본적으로 브레드 보드나 아두이노에 선들을 알맞은 곳에 꼽을 줄 알아야 수월하게 진행 가능하다.


1. 사야하는 것


정품 - 아두이노 우노 R3 (Arduino UNO R3) (꼭 정품 아니어도 상관없다. 호환 보드도 OK)

[SMG (중국)] USB 2.0 아두이노 케이블 AM-BM 1.5m [SZH-CAB01]


브레드보드 (아무거나 상관없다. 크기는 적당한것으로! 너무 작은 거 보다는 적당히 큰 게 좋다.)


소켓 점퍼 케이블 40P (칼라) (M/F)

소켓 점퍼 케이블 40P (칼라) (M/M)

 


아두이노 미세먼지 센서 PM2008 (다른 것을 써도 된다)

미세먼지 센서 PM2008 아두이노 연결용 쉴드


[YwRobot] 2004 LCD I2C 디스플레이 모듈 블루 [DIS030002] (4줄짜리인데 2줄짜리 사도 무방하다)


[OEM (중국)] 아두이노 호환 12V 1.5A KC 인증 아답터 [SZH-PSU01] (꼭 필요하진 않지만 있으면 좋다)


제작...

아두이노 우노를 본인의 PC와 연결한다. (USB 케이블 이용)

https://www.arduino.cc/en/main/software

 

Arduino - Software

By downloading the software from this page, you agree to the specified terms. THE ARDUINO SOFTWARE IS PROVIDED TO YOU "AS IS" AND WE MAKE NO EXPRESS OR IMPLIED WARRANTIES WHATSOEVER WITH RESPECT TO ITS FUNCTIONALITY, OPERABILITY, OR USE, INCLUDING, WITHOUT

www.arduino.cc

이 사이트에서 본인 PC에 맞는 아두이노 IDE 소프트웨어를 내려받는다.

아두이노 IDE 다운로드
아두이노 재단(?)에 기부할 돈이 있다면 오른쪽을 기부할 맘이 없거나 돈이 없다면 왼쪽을 택한다.

필자는 왼쪽을 택했다.

 

아두이노 IDE 딱 키면 나오는 화면

설치 완료하면 저렇게 뜬다. (필자 메인 컴인 맥북도 똑같이 저렇게 나온다. 영어로 나온다는 거 빼고)

툴에서 포트에서 본인 컴과 연결된 아두이노 클릭

보드는 저걸로 기본값 그대로 놔두고

밑에 포트를 본인 컴에 연결된 아두이노를 골라 선택하면 된다.

보드 정보 얻기를 누르면 성공적으로 본인 아두이노 우노 정보가 뜰 것이다. (포트에서 잘못 골랐을 경우 보드 정보 얻기 눌러도 아무것도 안 나옴)


아두이노 산 부품들을 조립하자!

부품 조립 및 연결하는 부분은 따로 이 포스트에 리뷰하진 않을 것이나

향후 아두이노 프로젝트 하나를 완전 초심자 눈높이로 하나부터 끝까지 자세히 포스팅할 맘이 있다.

아두이노 부품 연결 및 조립은 나름 상당이 쉽다.
전부 연결 후 모습
브레드 보드에 선 연결한 모습

중요 포인트! 제대로 다 연결했는데도 화면에 숫자가 안 나타난다면! 

디스플레이 뒤에 있는 가변저항(?) 암튼 조그마한 돌리는 게 있는데 그걸 드라이버나 손톱으로 조금씩 돌리면 숫자가 나타날 것이다.


여기까지 다 했다면 다 지우고 이 코드를 넣자.

코드 리뷰는 딱히 할 게 없다. 

  lcd.setCursor(0,0); 
  lcd.print(pm2008_i2c.number_of_0p3_um); 
  lcd.setCursor(0,1); 
  lcd.print(pm2008_i2c.number_of_0p5_um); 
  lcd.setCursor(0,2); 
  lcd.print(pm2008_i2c.number_of_1_um); 
  lcd.setCursor(0,3); 
  lcd.print(pm2008_i2c.number_of_2p5_um);

이 부분을 설명하자면 디스플레이에 띄울 숫자 내용을 나열한 것인데.

맨 위에서부터 디스플레이의 1번 줄, 2번 줄, 3번 줄, 4번 줄이 되는 것이다.

1번 줄에는 0.3 um

2번 줄에는 0.5 um

3번 줄에는 1 um

4번 줄에는 2.5 um


제목은 misae.ino

#include <pm2008_i2c.h>

PM2008_I2C pm2008_i2c;

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
  pm2008_i2c.begin();
  Serial.begin(9600);
  pm2008_i2c.command();
  delay(1000);
  lcd.init();
  lcd.backlight();
}

void loop() {
  uint8_t ret = pm2008_i2c.read();
  if (ret == 0) {
    Serial.print("PM 1.0 (GRIMM) : ");
    Serial.println(pm2008_i2c.pm1p0_grimm);
    Serial.print("PM 2.5 (GRIMM) : : ");
    Serial.println(pm2008_i2c.pm2p5_grimm);
    Serial.print("PM 10 (GRIMM) : : ");
    Serial.println(pm2008_i2c.pm10_grimm);
    Serial.print("PM 1.0 (TSI) : ");
    Serial.println(pm2008_i2c.pm1p0_tsi);
    Serial.print("PM 2.5 (TSI) : : ");
    Serial.println(pm2008_i2c.pm2p5_tsi);
    Serial.print("PM 10 (TSI) : : ");
    Serial.println(pm2008_i2c.pm10_tsi);
    Serial.print("Number of 0.3 um : ");
    Serial.println(pm2008_i2c.number_of_0p3_um);
    Serial.print("Number of 0.5 um : ");
    Serial.println(pm2008_i2c.number_of_0p5_um);
    Serial.print("Number of 1 um : ");
    Serial.println(pm2008_i2c.number_of_1_um);
    Serial.print("Number of 2.5 um : ");
    Serial.println(pm2008_i2c.number_of_2p5_um);
    Serial.print("Number of 5 um : ");
    Serial.println(pm2008_i2c.number_of_5_um);
    Serial.print("Number of 10 um : ");
    Serial.println(pm2008_i2c.number_of_10_um);
  }
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print(pm2008_i2c.number_of_0p3_um);
  lcd.setCursor(0,1);
  lcd.print(pm2008_i2c.number_of_0p5_um);
  lcd.setCursor(0,2);
  lcd.print(pm2008_i2c.number_of_1_um);
  lcd.setCursor(0,3);
  lcd.print(pm2008_i2c.number_of_2p5_um);
}

다 넣었으면 업로드를 누른다. (자동으로 컴파일한다.)

그리고 

이거 클릭

저걸 클릭해서 디스플레이 숫자와 저기 나오는 값이랑 같은지 비교해보자.

디스플레이 값이 한 박자 늦게 뜰 수도 있기에 감안해야 한다.


마치며...

아두이노는 저걸 만들었다고 끝나는 게 아닌 이미 만든 아두이노 미세먼지 측정기 + 습도 측정기 등등 인식할 수 있고 전선을 꼽을 수 있는 한도 내에서, 그리고 여러 개를 버틸 수 있는 센 볼테이지가 충족된다면 여러 가지 기능을 다 구현할 수 있다.

아마 나중 포스트는 습도 측정기를 저 미세먼지 측정기에 붙이는 작업을 올릴 것이다.


참조한 사이트 목록

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

 

fdebrabander/Arduino-LiquidCrystal-I2C-library

Library for the LiquidCrystal LCD display connected to an Arduino board. - fdebrabander/Arduino-LiquidCrystal-I2C-library

github.com

http://blog.naver.com/PostView.nhn?blogId=eduino&logNo=220904474324&parentCategoryNo=&categoryNo=21&viewDate=&isShowPopularPosts=true&from=search

 

[아두이노 강좌] LCD 2004(20x4) 4핀(I2C제어) 디스플레이 모듈

안녕하세요 에듀이노 입니다. 오늘은 LCD 20x4 4핀(I2C제어) 모듈에 대해서 알아보겠습니다 제품 특성...

blog.naver.com

https://github.com/johnrickman/LiquidCrystal_I2C

 

johnrickman/LiquidCrystal_I2C

LiquidCrystal Arduino library for the DFRobot I2C LCD displays - johnrickman/LiquidCrystal_I2C

github.com

이 사이트들 외엔 본인이 부품 산 홈페이지에 가면 부품 관련한 정보나 라이브러리 다운로드하는 법을 설명해놨을 것이다.

반응형
LIST