미세먼지와 이산화탄소 측정 DIY 라즈베리파이 잉여개발

전자잉크 e-ink 2.7인치에 다음 정보를 표시해 보았습니다. 
  1. 기상청 날씨 (동네) 예보(API) - 개발자 계정 신청 필요 
  2. 에어코리아의 미세먼지 정보(API) - 개발자 계정 신청 필요 
  3. PMS7003M 미세먼지 센서로 PM2.5와 PM10 실내 값 
  4. MH-Z19B 이산화탄소(CO2) 센서로 실내의 CO2 값 -> CO2가 800이상이면 노란LED, 900을 넘기면 빨간색LED를 켭니다.
용도는 
  • 외부의 미세먼지 값을 보고 창문을 열어 놓을 지 조금만 환기할 지 결정 
  • 실내 CO2 값을 보고, 환기를 해야하는 지 결정
  • 날씨 (3시간) 예보를 보고 옷을 어떻게 입을 것인지 결정
스마트폰에서 외부의 환경 정보는 대부분 알 수 있긴 하지만, 실내의 미세먼지와 이산화탄소 값은 센서를 설치해야 하지요.

만들어 놓고 보니 UI가 예쁘지 않아서 알리익스프레스에서 파는 제품 느낌이 ㅎㅎ 나네요.  

e-Paper 설명서를 자세히 읽어보니까, 
  • 고장 날 지 모르므로 계속 전원을 공급하면 안된다...라고 나오더군요. 업데이트할 때만 전원을 넣게 하라는 뜻입니다. 지금은 매5분마다 업데이트하니까 몇 초만 켜놓는 셈입니다.
  • e-Paper 파이썬 라이브러리에서 GPIO 설정을 초기화하는 바람에, GPIO를 쓰는 다른 장치(미세먼지센서 전원 30초마다 ON/OFF 제어) 제어와 충돌하여 라이브러리 소스를 고쳐야 했습니다.
찾아보니까 라즈베리파이3부터는 Serial포트를 1개만 쓰는게 낫다는 말이 있어서, MH-Z19B는 USB to Serial(FTDI칩)로 연결했습니다. 

MH-Z19B에 관한 몇 가지...
  • 가격은 배송포함 16.65달러였습니다. 
  • CO2 센서는 자체 보정 기능이 들어있어서, 낮에 집을 비우면 400ppm으로 내려가면서 보정이 되는 것 같습니다. 즉, 처음에 전원 넣으면 부정확한 값이 당분간 나온다라고 생각할 수 있겠습니다. 
  • 그런데 사실 얼마나 정확한 지에 대한 확신은 없습니다. 왜냐하면 USB방식의 10만원 내외의 CO2센서와 값 차이가 100~200ppm 나기 때문입니다.  
대부분의 기능은 구글에서 검색하면 파이썬 조각들이나 패키지를 찾아서 구현했습니다. 몇 년 전부터 비슷한 것을 가끔 만들어 왔는데 그런 경험들을 모아서 만들어 본 것이고, 꽤 많은 시간이 투자되었습니다. 요 며칠 동안은 10시간 가량 사용하였습니다.  

대략, 사진에 들어간 부품들 가격을 따져보니 15~17만원이 든 것 같습니다. 라즈베리파이가 4B라서 좀 비싸서 그런데, 낮은 버전을 산다면 3~4만원은 떨어지겠습니다.  

만들어 본 것들은 
  • 구글의 AIY Voice Kit을 사용해서, 중국산 미세먼지 센서와 USB타입의 CO2 센서를 연결한 후, 값이 높으면 15분마다 음성으로 안내하고, 화장실 환기 팬을 자동으로 작동시키는 장치 
  • 라즈베리파이 제로에 파피루스 e-ink를 연결한 후, 기상청 날씨 API와 에어코리아 미세먼지 API를 연결한 후 1시간에 한번씩 Pushbullet으로 전송하는 장치 
  • 시놀로지에 USB to Serial(FTDI칩)컨버터에 MH-Z19B를 연결하여, Home Assistant로 모니터링하기 & 값이 1,000이상이면 Pushbullet(유료) SMS보내기 
입니다. 

2020-09-10 업데이트 
  • 화면을 조금 수정했습니다. 해상도 4 gray로 하는 더 높일 수 있는 것 같은데 귀찮아서,,, 
  • 케이스는 역시 아직 만들지 않았고, 정관장 천녹정 포장 받침대 부분에 양면 테잎으로 고정헀습니다. 

덧글

  • ㅇㅇ 2021/01/09 20:25 # 삭제 답글

    혹시 천재 아니신가요?
  • 무재칠시 2021/01/11 13:47 #

    감사합니다^^ 요즘은 프로그램도 조립하듯이 남들이 만들어 놓은 것을 가져다 쓰는 경우가 많지요.~
  • 배낭이없어 2021/01/13 11:16 # 삭제 답글

    안녕하세요~ 미세먼지 api받는 법을 찾던중에 블로그에 들어오게 되었습니다.미세먼지 api를 공공데이터 홈페이지에서 한국환경공단_대기오염정보를 받아 쓰다가 최근들어서 "한국환경공단_에어코리아_대기오염정보" 에서 쓰는걸로 변경되었더라구요!

    최근에 변경된거라 '한구환경공단_대기오염정보'를 활용하는 법은 많은 블로그에 올라와있는데, "한국환경공단_에어코리아_대기오염정보" 를 활용하는 법은 잘 나와있지 않아 곤란을 겪고있습니다 ㅠㅠㅠ

    혹시 괜찮으시다면 "한국환경공단_에어코리아_대기오염정보" 에서 미세먼지 데이터 값을 실시간으로 받는법을 알려주시면 안될까요?? ㅠㅠ

    긴 글 읽어주셔서 감사합니다.
  • 무재칠시 2021/01/13 20:36 #

    안녕하세요? 아쉽지만 원론적인 답변만 드리게 될 것 같습니다.

    새로운 API가 2월부터 적용으로 알고 있으며, 저도 아직 대응을 하지 않았습니다. 다만, 데이터 활용 신청을 해보면서 살펴보니까, 기존 API의 처리 방법과 크게 원리가 달라져 보이지는 않았습니다. 기존의 사용 방법을 완전히 파악하고 나면 새로운 API에 맞게 바꾸는 것은 어렵지 않게 가능할 것 같아요.



댓글 입력 영역