어떻게 나무딸기 껍질로 실내 공기 오염을 추적합니까

너는 네가 매일 숨쉬는 공기 속에 도대체 무엇이 있는지 생각해 본 적이 있니?나는 이미 북경에서 몇 년을 살았는데, 나는 줄곧 집에서 몇 대의 공기 정화기를 운행해 왔지만, 그들의 실제 작업 상황은 어떻습니까?물론 내장된 센서가 있지만, 그것들의 정확도는 얼마나 높습니까?구렁이 한 마리, 복분자 가죽 한 개, 모시 몇 개로 우리는 우리의 답을 찾을 수 있다.
이는 주로 공기 중PM2.5PM10을 측정하는 데 중심을 두고 이 값을 공기 질량지수AQI로 전환한다.이산화질소(NO2)나 일산화탄소(CO) 등 기타 유해 화학물질에 대한 측정은 본문 말미의 "Adding Sensors"부분을 참조하시오

선결 조건


  • Raspberry Pi구성Headless(3b를 사용하지만 USB 포트가 있는 장치는 모두 가능하지만 휴대하기 편리하도록 내장 와이파이를 사용하는 것을 권장합니다)(약 35달러)

  • SDS011 PM Sensor (~$15)

  • Adafruit IO계좌(무료)
  • Adaio 설정


    Adafruit IO에 계정을 생성합니다.이것은 데이터 흐름을 수집하여 맞춤형 계기판에 표시하는 좋은 사이트이다.계정을 만든 후에 몇 가지 요약을 만듭니다.우리는 세 가지가 필요하다:pm2.5,pm10과 하나의 로그 송신(나는 각각 나의 이름을'북경 25','북경 10'과'일지'라고 부른다).이후에 대시보드를 만들고 데이터를 표시하는 방법을 시도할 수 있습니다.이것이 바로 나의 설정 방식이다.

    복분자 원주율 설정


    Configure Raspberry Pi 및 제품 웹 사이트의 설치 프로그램Raspbian 또는 선택한 Linux 릴리스를 구성한 경우(이 항목은 대부분의 릴리스와 호환되지만 Debian, Raspbian 및 MacOS에서만 테스트됨) 다음 종속 항목을 설치합니다.

  • Python3
  • Git
  • 코드 다운로드 및 종속성 설치


    SSH에서 Raspberry Pi(GUI가 설치되어 있으면 터미널에 로그인하여 열기)로 이동한 후 홈 디렉토리에서 repo를 다운로드합니다.
    git clone [email protected]:HoukasaurusRex/RaspberryPi-AQIPi.git
    
    다음python 의존 항목을 설치합니다.
    pip3 install -r requirements.txt
    

    Adafruit 키 및 FeedName을 사용하여 ENV 구성


    대시보드에서 사용자 이름과 키를 검색하여 환경에 추가합니다.
    echo 'AIO_USERNAME="Hackerman"
    AIO_KEY="aio_xXxXx"
    CITY="beijing"
    AIO_LOGS="logs"' > .env
    
    CITYAIO_LOGS는 AdafruitiO 대시보드에서 만든 요약 이름입니다.

    실행 코드


    이제 코드를 실행할 수 있습니다.나중에 접근할 수 있도록 screen 터미널 프로세스를 저장하는 것을 좋아하지만, 메인 셸에서 실행할 수도 있습니다.
    screen -S aqipi
    
    cd ~/RaspberryPi-AQIPi
    chmod +x run.sh
    sh run.sh
    
    터미널에는 출력이 없지만, Adafruitio 구독 원본으로 이동해서 결과를 볼 수 있어야 합니다.

    센서 배치


    센서의 위치를 확정하는 표준적인 건의는 센서가 실외에 위치하고 지면보다 4미터 높아야 한다는 것이다.이것은 일반 환경 모니터링의 좋은 건의이다.그러나 우리가 일반적인 환경 모니터링에 흥미를 느끼는 것은 아니다. 우리가 흥미를 느끼는 것은 우리가 무엇을 숨쉬고 있는지 아는 것이다.
    대부분의 시간을 머무르거나 일반 공기의 질에 특별히 흥미를 느낄 수 있는 곳(예를 들어 주방이나 차고)을 선택하고 센서를 안전한 곳에 두어 수분이나 습도의 영향을 받지 않도록 하세요.

    코드 이해


    def read_data():
      pm_twofive_data = []
      pm_ten_data = []
      readings = 0
    
      # This will take 11 data samples and use the built in `statistics` module to upload a median value
      # to filter out excessive data spikes in the readings
      while readings < 11:
        data = []
        for index in range(0, 10):
          datum = ser.read()
          data.append(datum)
    
        # Convert the readings from bytes to ints and append to the array of data samples
        pm_twofive = int.from_bytes(b''.join(data[2:4]), byteorder='little') / 10
        pm_twofive_data.append(pm_twofive)
        pm_ten = int.from_bytes(b''.join(data[4:6]), byteorder='little') / 10
        pm_ten_data.append(pm_ten)
        readings += 1
    
        # Take a little break ☕️
        sleep(1)
    
      # Calculate the AQI from ppm^2 using the US EPA API table detailed in the section below
      # then upload to your AdafruitIO feeds using the Adafruit_IO SDK
      pm_twofive_aqi = calc_aqi('pm_twofive', median(pm_twofive_data))
      send_data('twofive', pm_twofive_aqi)
      pm_ten_aqi = calc_aqi('pm_ten', median(pm_ten_data))
      send_data('ten', pm_ten_aqi)
      return [pm_twofive_aqi, pm_ten_aqi]
    

    PPM^2를 AQI로 변환


    이것은 US EPA AQI로 전환됩니다. 서로 다른 기준을 사용하기 위해 국가의 AQI 모델에 맞는 공식을 조정해야 할 수도 있습니다.

    지수 회피


    이 리포는 지수 회피 전략을 실시하여 지수가 길어진 후에 연결을 다시 시도하여 흔히 볼 수 있는 네트워크 오류나 센서 연결 문제를 해결한다.
    def exponential_backoff(n):
      return (2 ** n) + (random.randint(0, 1000) / 1000)
    

    결실


    먼저 실외 공기의 질에 대해 테스트를 실시하여 IQ Air's 공기의 질 지수와 일치하도록 확보한다.
    센서를 몇 주 동안 작동한 후, 나의 공기 정화기 위의 센서는pm2를 자주 과소평가하는 것 같다.5개의 값 간의 관련성은 50%에 달하고 상호 관련성이 매우 적다.한편, 복분자 원주율(Raspberry Pi)은 데이터의 첨봉을 여과해 현실 세계의 현상에 대해 매우 합리적인 반응을 한 것 같다. 예를 들어 실외공기질량지수(AQI)가 상승함에 따라 상승하고 정화기가 높은 위치를 몇 시간 유지한 후에 선형적으로 떨어지는 것이다.나는 또 기압차의 크기도 야외 오염이 우리 집에 침투하는 것을 증가시킬 수 있다는 것을 알게 되었다.흥미로운 것은 주방의 통풍 불량도 실내 공기 오염을 현저히 증가시킬 수 있다는 것이다!
    나는 이미 이 센서를 몇 달 동안 사용했는데, 그때부터 나는 내가 매일 호흡하는 공기의 질을 관리하는 데 더욱 능력이 있다고 느꼈다.

    센서 추가


    오존(O3), 일산화탄소(CO), 이산화질소(NO2) 또는 지역과 더 관련이 있을 수 있는 유해 공기 오염물과 같은 추가 센서를 추가하여 프로젝트를 쉽게 확장할 수 있습니다.있다면, 당신의 발견을 비교하고 프로젝트를 확장하기 위해 AQIPi 저장소를 업데이트하고 싶다는 것을 알려 주십시오.

    감사를 드리다


    Andrew Gregoryraspberrypi.org가 이 프로젝트에 영감을 주는 작업에 감사드립니다.
    너는 이 글을 보거나, 그것을 더 좋아하거나, 나의 시사통신을 등록해서 https://jt.houk.space에서 최신 게시물을 얻을 수 있다

    좋은 웹페이지 즐겨찾기