프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

미세 먼지, 도대체 먼지? 미세먼지측정기 만들기(Pro버전)

2019-08-07 09:51:55

 

 

봄, 가을의 불청객! 바로 미세먼지!

요즘 미세먼지가 연일 화제가 되고 있습니다. 

 

<출처 : JTBC>

 

<출처 : 연합뉴스>

 

그렇다면 우리의 건강을 위협하는 미세먼지의 존재는 무엇일까요?

 


미세먼지란?

아주 작은 입자를 가진 먼지로서 먼지의 직경에 따라 미세먼지(지름이 10㎛이하), 초미세먼지(지름이 2.5㎛ 이하)로 구분된다. 

 

미세먼지가 인체에 미치는 유해성

미세먼지는 입자가 작기 때문에 폐에 축적되기도 하지만, 페포를 통과해 혈액 속으로 들어가기 때문에 여러가지 복합적 질병을 유발할 수 있다. 

 


<출처 : 건강한 꿀팁>

 

위와 같이 미세먼지는 인체에 굉장히 유해한 물질임에도 불구하고, 많은 분들께서 

그 위험도를 피부로 느끼지 못하고 있습니다. 

 

이유는 '눈에 잘 보이지 않고, 직관적으로 현재의 상태를 확인할 수 없기' 때문이죠. 

현재 내가 있는 공간에 미세먼지의 양을 눈으로 확인할 수 있다면, 조금 더 미세먼지에 대한 건강 관리가 가능할 것입니다. 

 

자 그럼 직접 미세먼지측정기를 만들어 보도록 할까요?

 

 

 

 

개요

 

MDF 외관과 아크릴로 구성되어 있는 아기자기한, 코코아팹의 감성이 담겨있는 미세먼지 측정기의 모습입니다. 

그렇다면 미세먼지 측정기는 어떤 기능을 가지고 있을까요? :) 

(궁금 궁금)

 

 

미세먼지 측정기의 기능

- 미세먼지센서 : 초미세먼지(지름이 2.5㎛ 이하) 센서로서 미세먼지의 농도를 측정합니다. 

- 온·습도 센서 : 온도와 습도를 측정합니다. 

- RGB LED : 미세먼지농도량 또는 불쾌지수 단계 등 여러정보를 LED의 색으로 표현합니다. 

- LCD : 센서에서 측정된 정확한 수치 정보를 표시합니다. 

 

 

 

 

부품 목록

 

미세먼지측정기에 사용되는 부품의 목록은 아래와 같습니다. 

 

NO 부품명 수량 상세 설명
1 오렌지보드 1 아두이노 UNO
2 미세먼지센서 1 PM-D4
3 RGB LED 모듈 1 KY-016
4 온·습도 센서 모듈 1 DHT-11
5 LCD 1 I2C Interface / 16*2
6 브레드보드 1 Mini
7 점퍼케이블 20 F/F, F/M

 

부품명 오렌지보드 미세먼지센서 RGB LED 모듈 온·습도 센서 모듈 I2C LCD
부품 사진

 

 

 

 

 

하드웨어 메이킹

 

미세먼지측정기 제작하기

우선 미세먼지측정기의 외관 제작에 대해 알아볼까요?

 

※ 조립 가이드에서 사용되는 볼트와 너트의 명칭입니다. 사진을 통해 모양을 잘 숙지해주세요.

 

 

 

 

브레드보드 레이아웃

 

 

 

<이것만 확인해봅시다>

- 미세먼지센서의 회로 연결에서 실수 발생률이 가장 높습니다. 선 연결을 잘 확인하세요!

온·습도 센서의 경우 전원을 잘못 연결하면 소자가 잘 녹아버립니다. +, - 전원이 잘 연결되었는지 확인하세요!

 

<온습도 센서 종류에 따른 연결 방법>

키트의 온습도 센서 모듈의 종류를 잘 확인한 후 핀 연결 방법을 잘 확인해주세요!

 

 

 

 

 

소프트웨어 코딩

오렌지보드에 업로드되는 소스 코드입니다. 

링크를 통해 소스 코드를 다운로드 받아주세요.

 

* 어떻게 업로드를 시켜할지 잘 모르시겠다구요? 

아직 아두이노 IDE와 업로드 방법에 대해 모르시는 분들은 아래 링크에 '아두이노 소개' 부분을 읽고 따라해보세요!

 

아두이노 기초 알아보기

 

 

#include "LiquidCrystal_I2C.h"
#include "DHT.h"
#include "emotion.h"
#include "dustSensor_kocoa.h"

#define DHTPIN 5
#define DHTTYPE DHT11

dustSensor_kocoa PM;
LiquidCrystal_I2C lcd(0x3F, 16, 2);

DHT dht(DHTPIN, DHTTYPE);

void setEmoticon(float data) {
  if (data > 100) {
    lcd.createChar(4, topAngry1);
    lcd.createChar(5, topAngry2);
    lcd.createChar(6, bottomAngry1);
    lcd.createChar(7, bottomAngry2);
    digitalWrite(9, HIGH);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
  }
  else if (data > 50) {
    lcd.createChar(4, topSoSo1);
    lcd.createChar(5, topSoSo2);
    lcd.createChar(6, bottomSoSo1);
    lcd.createChar(7, bottomSoSo2);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }

  else {
    lcd.createChar(4, topSmile1);
    lcd.createChar(5, topSmile2);
    lcd.createChar(6, bottomSmile1);
    lcd.createChar(7, bottomSmile2);
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }
}

void setup() {
  lcd.init();
  lcd.backlight();

  lcd.createChar((byte)0, temp);
  lcd.createChar(1, humi);
  lcd.createChar(2, dust);
  lcd.createChar(3, C);

  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  Serial.begin(9600);

  dht.begin();
  PM.begin(2, 3);
}

void loop() {
  float humi = dht.readHumidity();
  float temp = dht.readTemperature();

  if (isnan(humi) || isnan(temp) ) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  int data = PM.pm10Value();

  Serial.println(data);

  setEmoticon(data);
  lcd.setCursor(0, 0);
  lcd.write(2);
  lcd.print(" ");
  lcd.print(data);

  if (data >= 100)
    lcd.print(" ug");
  else if (data >= 10)
    lcd.print(" ug ");
  else
    lcd.print(" ug  ");

  lcd.setCursor(0, 1);
  lcd.write((byte)0);
  lcd.print(" ");
  lcd.print((int)temp);
  lcd.write(3);

  lcd.print(" ");
  lcd.write(1);
  lcd.print(" ");
  lcd.print((int)humi);
  lcd.print("%");

  lcd.setCursor(13, 0);
  lcd.write(4);
  lcd.write(5);

  lcd.setCursor(13, 1);
  lcd.write(6);
  lcd.write(7);

  delay(500);
}

 

 

 

완성 사진

미세먼지측정기의 완성 모습입니다. 

어느곳에나 잘 어울리는 감성 뿜뿜!! 미세먼지측정기!! :)

 

 

 

 

 

지원(Support)

Q1. LCD가 잘 나오지 않습니다. 무슨 문제일까요? 

A1. LCD에는 I2C 주소가 존재합니다 -> LiquidCrystal_I2C lcd(LCD 이름, 16, 2);.

0x27 또는 0x3F로 주소를 바꿔서 테스트를 해보시고, LCD 뒷면에 가변 저항을 통해 선명도를 조절해보세요.

 

 

 

구매 및 기타문의

유현국팀장 
Tel : 02-3470-2837 
mail : yoohk@nepes.co.kr

 

 

 

kocoafab