메이커 Maker

How to make a great fine dust meter 4 - 미세먼지 센서

지구빵집 2021. 6. 2. 10:20
반응형

 

 

PM2008M은 주위 미세먼지 농도를 알려주는 센서입니다. 미세먼지 수치(PM)는 GRIMM 방식과 TSI 방식 모두 지원합니다. 샤오미, 3M 등 국내외 세계적인 회사의 공기질 측정기와 공기청정기에 이 센서를 사용하고 있습니다. 또한 일반인들이 쉽게 사용할 수 있도록 아두이노 라이브러리와 유튜브 영상을 제공하고 있습니다. PM2008M을 이용해 손쉽게 DIY 공기질 측정기, 공기청정기를 제작하실 수 있습니다.  

 

미세먼지 측정기 실습에서 다룰 강의 전체 내용은 아래와 같다.

 

How to make a great fine dust meter 1 - 미세먼지 측정기 개요

How to make a great fine dust meter 2 - 버튼과 인터럽트

How to make a great fine dust meter 3 - 온도 습도 센서

How to make a great fine dust meter 4 - 미세먼지 센서

How to make a great fine dust meter 5 - OLED

How to make a great fine dust meter 6 - 아두이노 나노 보드를 Nano 33 IoT 보드로 교체

 

PM2008M 미세먼지 센서 

PM2008M 미세먼지 센서 데이터쉬트

 

Laser_Particle_Sensor_Module_PM2008M_Specification_(1).pdf
0.81MB

 

I2C 방식으로 연결하는 PM2008M 센서는 라이브러리를 설치하여 쉽게 테스트할 수 있습니다. 아래 순서로 라이브러러리를 설치하고 예제를 실행하여 주세요.

 

1. 아두이노 IDE 메뉴에서 [툴] - [라이브러리 관리...]를 클릭해주세요. 

 

이미지 https://www.devicemart.co.kr/goods/view?no=12240662

 

2. 라이브러리 매니저가 실행되면 pm2008을 검색해주세요. 검색하면 PM2008 I2C 라이브러리가 표시되는 것을 볼 수 있습니다. 오른쪽에 설치 버튼을 누르면 라이브러리가 설치됩니다. 

 

이미지 https://www.devicemart.co.kr/goods/view?no=12240662

 

3. 라이브러리 설치가 되면 [파일] - [예제] - [PM2008 I2C]에서 예제를 실행할 수 있습니다. 

 

이미지 https://www.devicemart.co.kr/goods/view?no=12240662

 

Features

  • GRIMM 방식, TSI 방식 지원
  • 입자 검출 최소 크기 : 0.3 ㎛
  • 공급 전압 : 5V
  • 노이즈 방지를 위한 금속 차폐
  • 통신 방식 : I2C, UART
  • 크기 : 48(W) x 40(H) x12(D) [mm]

 

Application Ideas

  • Air Purifier
  • Air Quality Monitor
  • Air Conditioner
  • Ventilator

 

Platform Supported

  • 아두이노
  • 라즈베리 파이
  • 비글본
  • Wio
  • 그 외 I2C, UART 가능 하드웨어 플랫폼에 사용 가능 

 

Specification

 

le size range 0.3㎛~ 10㎛
Output result Particle mass concentration (㎍/m.)
Maximum Measurement range
() is Effective measuring range
PM1.0: 0 ~ 1,000㎍/m³, (0 ~ 500㎍/m³)
PM2.5: 0 ~ 1,000㎍/m³, (0 ~ 500㎍/m³)
PM10: 0 ~ 1,000㎍/m³, (0 ~ 500㎍/m³)
Test dust Aerosol kcl.
Measurement (Reference) GRIMM 11-A, TSI 8530
Resolution 1 ㎍/m.
Maximum Consistency Error
for PM 1.0 & PM 2.5
0 ~ 100㎍/m³, ±10㎍/m³
101 ~ 500㎍/m³, ±10% reading
Maximum Consistency Error
for PM 10
0 ~ 100㎍/m³, ±25㎍/m³
101 ~ 500㎍/m³,±25% reading
Responsd time 1sec
Time to first reading ≤ 8 seconds
Working temperature -10℃ ~ 50℃
Working humidity 0 ~ 95%RH(non-condensing)
Storage temperature -30℃ ~ 60℃
Power supply DC 5V±0.1V,
ripple wave<50mV
Working current ≤100mA
Standby current ≤200μA
Digital output 1
(default)
I2C, UART_TTL
(L <0.8V, H >2.7V@3.3V/5V)
Digital output 2 PWM (customized)
Output method Default by active output after powering on, sampling time interval should be over 1,000ms.
L.D MTTF 37,297hr (continuous turn on)

 

추가옵션: PM2008M용 아두이노 연결 케이블 

 

PM2008M용 아두이노 연결 케이블 

 

하네스 케이블을 다음과 같이 연결합니다. 아두이노 UNO 기준 입니다.

  • 빨강 : 5V
  • 검정 : GND
  • 흰색 : A4 (SDA)
  • 녹색 : A5 (SCL)

 

기존에 판매했던 4핀 케이블은 I2C 전용입니다. 이번에 수정된 5핀 케이블은 노란색 점퍼 케이블을 아래와 같이 연결하느냐에 따라 UART 또는 I2C로 동작합니다.

 

[노란색 케이블 연결]

  • VCC 연결 또는 플로팅 유지 : UART 모드
  • GND 연결 : I2C 모드 

테스트 코드와 결과는 아래를 참고하세요.

 

#include <pm2008_i2c.h>

PM2008_I2C pm2008_i2c;

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

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(3000);
}

 

 

 

 

반응형