라즈베리파이 미세먼지 측정기 만들기(Nova PM sensor SDS011)

Updated:

근래 미세먼지 수치가 높아지면서, 국가적으로 이슈가 되었습니다. 하루에도 미세먼지 수치를 몇번씩 확인하고는 하는데요. 인터넷에서 제공하는 미세먼지 수치를 확인하고는 하지만, 실내에서는 어느 정도 수준인지 확인하기 위해서는 미세먼지 측정기를 구입해야 합니다.

실내 미세먼지 측정을 해보고 싶어서, 라즈베리파이에서 사용할 수 있는 미세먼지 측정 센서가 있는지 찾아보니 역시나 몇 종류가 나왔습니다. 일단은 설치하기가 제일 쉽다는 Nova PM sensor SDS011을 주문해서 동작시켜봤습니다.

1. 미세먼지 측정기 센서(Nova PM sensor SDS011) 소개

Nova PM sensor SDS011 센서는 알x익스프레스에서 18~20달러 선에서 판매되고 있습니다. SDS011 센서는 내부의 팬을 이용해서 공기를 빨아들이고, 그 공기의 흐름에 레이저를 이용해서 미세먼지를 측정합니다. 결과는 PM2.5와 PM10 두 가지 종류의 입자 크기 별로 측정해줍니다.

제조사 자료로는 레이저 측정으로 정확하고 신뢰성있는 결과를 준고, 공기 변화에 빠른 응답이 가능하다고 하네요. 변화 인지에 10초 이내의 응답 시간이 소요된다고 합니다. 그리고, USB 연결이 기본이기 때문에 따로 납땜 작업은 필요없습니다.

팬이 돌면, 공기 구멍을 통해서 공기를 유입하게 됩니다. 정확한 측정을 위해서 센서를 설치할때 중력 방향에 따라 설치를 해야 합니다.

센서 수명은 풀타임으로 동작시킬 경우 8000 시간 정도입니다.(24시간으로 나누면 333일이 나오네요.) 슬립 모드를 제공하므로, 제조사에서 센서 수명을 연장하는 방법으로 슬립 모드를 적절히 사용하라고 가이드 하고 있습니다. 실시간 측정이 필요한 경우가 아니면 측정을 하고 주기적으로 슬립모드를 설정하면 됩니다. 예로 들면, 30초 측정하고 5분 슬립 모드를 설정하고 다시 30초 측정을 진행하는 식입니다. 측정을 1회성으로 동작시키지 않고 30초 가량을 하는 이유는 안정화 기간이 필요해서 입니다. 즉, SDS011 센서를 슬립모드에서 깨워서 측정을 시키면 팬이 돌면서 공기를 유입하고 레이저로 미세먼지를 측정하게 되는데, 초반에는 공기 유입이 안정화되지 않아서 수치가 낮게 나옵니다. 10초 가량 지나면 충분히 안정화되서 측정값이 정확해집니다.

더 자세한 정보가 필요하면 DATA SHEET를 참고하세요.

2. 라즈베리파이 연결

라즈베리파이에 연결하는 방법은 매우 간단합니다. SDS011 센서는 USB 인터페이스를 사용하고, USB 전원 입력을 받아서 동작 가능하기에 라즈베리파이에 USB 연결만 하면 됩니다. 그리고, 모든 라즈베리파이 시리즈에서 호환됩니다. 저는 라즈베리파이 제로에 연결해 동작시켰습니다. 라즈베리파이 제로는 micro USB를 사용하기 때문에 USB 변환 케이블이 필요합니다.

SDS011 센서를 라즈베리파이에 연결하고 라즈베리파이 전원을 넣어주면 끝입니다.

3. 미세먼지 측정기 설치 및 동작

SDS011 센서를 동작시키기 위해서는 커맨드와 결과값 전송 프로토콜을 알아야 하는데요. 이미 파이썬 스크립트가 공개되어 있어서 손쉽게 동작 시킬 수 있습니다. 파이썬 스크립트는 https://github.com/zefanja/aqi 페이지를 참고하였습니다.

먼저 apt로 필요한 패키지를 설치합니다.

#!/bin/bash
pi@raspberrypi:~ $ sudo apt install git-core python-serial python-enum
Reading package lists... Done
Building dependency tree       
Reading state information... Done
git-core is already the newest version (1:2.11.0-3+deb9u4).
...
Processing triggers for man-db (2.7.6.1-2) ...

패키지 설치가 완료되면 zefanja의 python 스크립트를 가져옵니다.

#!/bin/bash
$ wget -O /home/pi/aqi.py https://raw.githubusercontent.com/zefanja/aqi/master/python/aqi.py

패키지 설치가 완료되면 아래 두가지 설정을 해줍니다. aqi.py 스크립트가 /var/www/html/aqi.json 파일에 결과값을 100개까지 히스토리로 기록합니다.

#!/bin/bash
$ sudo chown pi:pi /var/www/html/
$ echo [] > /var/www/html/aqi.json

이제 aqi.py 파이썬 스크립트를 다운로드 받았던 경로에서, 아래처럼 실행권한을 주고 실행 시킵니다.

#!/bin/bash
$ chmod +x aqi.py
$ ./aqi.py
PM2.5:  0.0 , PM10:  0.0
PM2.5:  3.2 , PM10:  4.9
PM2.5:  4.8 , PM10:  6.6
PM2.5:  4.7 , PM10:  6.1
PM2.5:  5.0 , PM10:  9.3
PM2.5:  5.3 , PM10:  9.2
PM2.5:  5.1 , PM10:  8.7
PM2.5:  5.2 , PM10:  8.7
PM2.5:  5.3 , PM10:  9.3
PM2.5:  5.3 , PM10:  9.1
PM2.5:  5.3 , PM10:  9.0
PM2.5:  5.2 , PM10:  8.7
PM2.5:  5.3 , PM10:  9.6
PM2.5:  5.4 , PM10:  9.6
PM2.5:  5.3 , PM10:  10.0
Going to sleep for 5min...

스크립트를 실행하면 2초 간격으로 15회 측정을 진행하고 5분 동안 슬립모드에 설정됩니다. 측정 시간과 슬립 시간을 조정하려면 스크립트를 수정하면 됩니다. 그리고, aqi.py 스크립트가 측정 히스토리를 /var/www/html/aqi.json 파일에 100개까지 저장합니다. 측정 이력을 확인하려면 aqi.json 파일을 확인하세요.

aqi.py 스크립트를 자동 실행 등록하면 주기적으로 미세먼지 측정을 할 수 있습니다. 자동 실행은 설치가이드(13) cron 설정하기(예약 작업)를 참고하세요.

미세먼지 측정기 센서(Nova PM sensor SDS011)를 설치를 끝냈습니다. SDS011 센서는 설치가 쉬운 것은 특징입니다. USB 연결을 지원하기에 간편하게 연결이 되고, 동작 명령어도 공유되고 있는 스크립트가 많습니다. 쉽게 만들 수 있는 미세먼지 측정기 DIY 센서로 괜찮네요.


더 많은 라즈베리파이 이야기 Pi Guide 보러가기


Leave a Comment