May 23, 2019

디바이스마트 미디어:

[51호]PM2008 먼지센서 아두이노에 연결해 제어하기

51 showcase pm2008 (1)

미세먼지 농도를 알려주는 센서 PM2008

PM2008 먼지센서 아두이노에 연결해 제어하기

 

글 | 레몬랩스 정봉진

 

큐빅의 PM2008 미세먼지 센서는 3M, 샤오미와 같은 글로벌 업체의 공기청정기나 공기질 측정기에 많이 사용되고 있습니다. 이 글에서는 작은 크기에 사용하기도 쉬운 큐빅의 미세먼지 센서를 아두이노에 연결해 사용하는 방법에 대해 소개합니다.

51 showcase pm2008 (2)

PM2008은 광 산란 방식의 미세먼지 센서입니다. 원래 미세먼지는 총량을 재야하기 때문에 상당히 큰 장치가 필요합니다. 물론 그와 같은 장치의 가격 또한 수억대에 달합니다. PM2008은 미세먼지를 산업에서 쉽게 측정 가능하고 제품화시킬 수 있는 충분한 가격에 만들 수 있게 하기 위해 광 산란 방식을 사용합니다. 실제 총량 방식의 계측 값과의 오차가 중요한데, PM2008은 총량 방식과 오차 범위 10% 내외로 상당히 정확한 측정이 가능합니다. PM2008은 UART와 I2C 통신을 지원하며, PM1.0, PM2.5, PM10을 전부 측정이 가능합니다. 참고로 여기서는 I2C로만 PM2008 센서 제어하는 것을 해봅니다.
디바이스마트에서 파는 PM2008의 경우 센서와 함께 PM2008용 아두이노 쉴드도 함께 판매합니다. 다른 아두이노 쉴드와 마찬가지로 위, 아래 모두 핀헤더가 달려있어 점퍼 와이어를 별도로 연결하거나 추가 쉴드를 사용할 수도 있습니다. 또한 각 핀에 대한 번호가 적혀있어 헷갈리지 않고 쉽게 와이어를 연결할 수 있습니다.

51 showcase pm2008 (3)

PM2008에는 공기를 빨아들이는 부분 (빨간색)과 공기를 내보내는 부분 (주황색)이 있습니다. 이 두 부분의 근처에는 큰 먼지나 수분이 닿지 않도록 하는 것이 좋습니다. 또한 PM2008 쉴드 위쪽으로 다른 쉴드를 꽂지 않는 것이 좋습니다. 공기의 흐름이 원활하지 못해 부정확한 값이 나올 수 있기 때문입니다.

51 showcase pm2008 (1)

한번 PM2008 센서를 아두이노에 연결해 사용해보겠습니다. 우선 PM2008 센서를 아두이노 쉴드에 끼워 아두이노에 꽂아줍니다. 센서를 쉴드에 고정시킬 때는 왼쪽 그림과 같이 양면테이프를 사용해 센서가 움직이지 않게 고정하는 것이 좋습니다.
센서를 아두이노에 연결했다면, 하드웨어 준비는 끝난 겁니다. 이제 컴퓨터로 넘어가 아두이노 IDE를 열어줍니다.

51 showcase pm2008 (4)

PM2008 쉴드를 이용하려면 PM2008 I2C 라이브러리가 필요합니다. PM2008 I2C 라이브러리는 라이브러리 매니저를 이용해 쉽게 설치 가능합니다. 메뉴에서 [스케치] – [라이브러리 포함하기] – [라이브러리 관리...]를 선택합니다.

51 showcase pm2008 (5)

메뉴 선택 후 라이브러리 매니저가 뜨면 검색창에 “PM2008”을 입력합니다. 검색하면 그림과 같이 PM2008 I2C 라이브러리를 확인할 수 있습니다. PM2008 I2C 라이브러리를 설치해줍니다.

51 showcase pm2008 (6)

메뉴에서 [파일] – [예제] – [PM2008 I2C] – [PM2008_I2C_test]를 선택합니다. 선택하면 PM2008 센서의 모든 값을 확인할 수 있는 예제가 열립니다.

51 showcase pm2008 (7)

코드를 수정할 필요없이 곧바로 업로드를 눌러줍니다. 업로드가 완료되면 시리얼 모니터를 엽니다.

51 showcase pm2008 (8)

시리얼 모니터를 열면 그림과 같이 PM2008 센서에서 얻을 수 있는 모든 값을 확인할 수 있습니다. GRIMM 계측기 기준으로 환산된 값, TSI 계측기 기준으로 환산된 값 그리고 파티클 개수를 카운트 한 Raw 데이터 값이 출력됩니다.
다음으로 LED를 사용해 눈으로 곧바로 확인 가능한 간단한 미세먼지 센서 모니터를 만들어 보겠습니다. 다음과 같은 부품이 필요합니다.
· 5 mm LED 4개
· 330옴 저항 (220 옴도 가능)
· 수수 점퍼와이어 9개
· 브레드보드

51 showcase pm2008 (9)

미세먼지 상태를 4단계로 나누어 각 단계에 맞춰 LED가 켜지도록 해보겠습니다. 물론 LED를 4개의 색깔로 나누어 설치하거나 3색 LED를 사용하여 응용하는것도 가능합니다. 아래 회로와 같이 저항과 LED를 아두이노에 연결해줍니다. 연결할 때는 PM2008 센서와 쉴드를 꽂은 상태에서 연결하면 됩니다.

#include <pm2008_i2c.h>

PM2008_I2C pm2008_i2c;

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

pinMode ( 3, OUTPUT);
pinMode ( 4, OUTPUT);
pinMode ( 5, OUTPUT);
pinMode ( 6, OUTPUT);
}

void loop() {
uint8_t ret = pm2008_i2c.read();

uint8_t pm1p0_grade = 0;
uint8_t pm2p5_grade = 0;
uint8_t pm10p_grade = 0;
uint8_t total_grade = 0;

if (ret == 0) {
// PM 1.0
if (pm2008_i2c.pm1p0_grimm < 16) {
pm1p0_grade = 1;
} else if (pm2008_i2c.pm1p0_grimm < 51) {
pm1p0_grade = 2;
} else if (pm2008_i2c.pm1p0_grimm < 101) {
pm1p0_grade = 3;
} else {
pm1p0_grade = 4;
}

// PM 2.5
if (pm2008_i2c.pm2p5_grimm < 16) {
pm2p5_grade = 1;
} else if (pm2008_i2c.pm2p5_grimm < 51) {
pm2p5_grade = 2;
} else if (pm2008_i2c.pm2p5_grimm < 101) {
pm2p5_grade = 3;
} else {
pm2p5_grade = 4;
}

// PM 10
if (pm2008_i2c.pm10_grimm < 31) {
pm10p_grade = 1;
} else if (pm2008_i2c.pm10_grimm < 81) {
pm10p_grade = 2;
} else if (pm2008_i2c.pm10_grimm < 151) {
pm10p_grade = 3;
} else {
pm10p_grade = 4;
}

// Get worst grade
total_grade = max(pm1p0_grade, pm2p5_grade);
total_grade = max(total_grade, pm10p_grade);

digitalWrite( 3, LOW );
digitalWrite( 4, LOW );
digitalWrite( 5, LOW );
digitalWrite( 6, LOW );

switch (total_grade) {
case 1: {
Serial.println(“Good!”);
digitalWrite( 3, HIGH );
break;
}
case 2: {
Serial.println(“Normal!”);
digitalWrite( 4, HIGH );
break;
}
case 3: {
Serial.println(“Bad!”);
digitalWrite( 5, HIGH );
break;
}
case 4: {
Serial.println(“Worst!”);
digitalWrite( 6, HIGH );
break;
}
default:
break;
}
}
delay(2000);
}

위와 같이 코드를 작성합니다. Gist 페이지(bit.ly/2G43ZtR)를 들어가면 코드를 쉽게 복사할 수 있습니다.

51 showcase pm2008 (10)
코드를 작성한 뒤 곧바로 업로드를 합니다. 업로드가 완료되면 시리얼 모니터를 실행해줍니다.

51 showcase pm2008 (11)

시리얼 모니터를 열면 현재 미세먼지 상태를 Good, Normal, Bad, Worst 이렇게 4단계로 나누어 표시해주는 것을 볼 수 있습니다. 예제 중에 [파일] – [예제] – [PM2008 I2C] – [simple_monitor]를 실행했을 때도 위와 똑같은 결과를 볼 수 있습니다.

51 showcase pm2008 (12) 51 showcase pm2008 (13)
하드웨어 같은 경우에도 그림과 같이 미세먼지 단계를 LED를 통해 확인할 수 있습니다. 이와 같이 PM2008 센서와 쉴드를 사용하면, 기존 적외선 방식의 센서보다 간단하고 쉽게 작품을 만들 수 있습니다.

 

 

 

Leave A Comment

*