ESP 32(M5 Stack)로 제작된 저렴한 CO2 모니터[가을부터 CO2 센서 사용 기념]

이 보도에 관하여


CO2 센서인 MH-Z19와 M5 Stack을 사용해 CO2를 저렴하게 시각화하는 것은 간단한 시도다.

CO2 센서 MH-Z19 정보


MH-Z19라는 이산화탄소 센서가 있다.이렇게 2×3cm 정도의 금색 상자 모양.

이 센서는 해외에서 2016년께부터 유통되기 시작했지만 일본에서는 알리익스프레스/eBay가 중국에서 개인으로 수입했는지, 아마존에서 조금 비싼 가격에 샀는지 두 가지 선택의 상태가 오랫동안 지속돼 미묘한 접근이 번거롭다.
하지만 며칠 전 MH-Z19C(아마도 구제품의 작은 변경판)는 일본에서도 간단해졌다.

MH-Z19 ESP32 라이브러리 정보


2016~7년 알리익스프레스에 MH-Z19를 입력했는데 그때는 뚜렷한 프로그램 라이브러리가 없어서 데이터 테이블을 쳐다보면서 다음 프로그램 라이브러리를 직접 적어 공개했다.
추월전자가 처리를 시작하다
이번에는 추월부터 사용하기 시작해 프로그램 라이브러리를 재확인했지만, 소스 코드가 너무 더러워 w, 작은 변경 버전인 MH-Z19C가 움직일 수 없는 부분도 있는데 이번에 설치 내용을 조금 수정했다.

M5 Stack 및 MH-Z19를 통한 CO2 값


드디어 본론입니다.

사용할 기계

  • M5 Stack(ESP 32라면 무엇이든 되지만 이번에는 M5 Stack을 사용해 보십시오.)
  • MH-Z19C(추월전자 구매)
  • 경로설정


    M5 Stack 및 MH-Z19C 연결


    아래와 같이 전선으로 연결한다.
  • M5 Stack의 "G"→MH-Z19C의 "GND"
  • M5 Stack의 5V→MH-Z19C의 Vin
  • M5 Stack의 "R2"→MH-Z19C의 "Tx"
  • M5 Stack의 "T2"→MH-Z19C의 "Rx"
    https://github.com/nara256/mhz19_uart
  • 이루어지다


    라이브러리 가져오기

  • 다음 페이지부터 노란색 "Code"버튼을 누른 다음 "Download ZIP"를 선택하여 파일을 다운로드합니다.

  • Arduino IDE를 시작하고 메뉴의 스케치→라이브러리→를 포함합니다.ZIP 형식이 설치된 라이브러리를 선택하고 다운로드한 zip 파일을 선택합니다.
  • 라이브러리 가져오기를 완료합니다.

    아무튼 이동을 해보도록 하겠습니다.

  • M5 Stack을 PC에 연결합니다.
  • Arduino IDE의 파일→스케치 예제MHZ19_uartMHZ19_getco2를 선택하면 샘플의 소스 코드가 표시됩니다.
  • MHZ19_getco2.ino
    /*----------------------------------------------------------
        MH-Z19 CO2 sensor  SAMPLE
      ----------------------------------------------------------*/
    
    #include <MHZ19_uart.h>
    
    const int rx_pin = 16; //Serial rx pin no
    const int tx_pin = 17; //Serial tx pin no
    
    MHZ19_uart mhz19;
    
    /*----------------------------------------------------------
        MH-Z19 CO2 sensor  setup
      ----------------------------------------------------------*/
    void setup()
    {
      Serial.begin(9600);
      mhz19.begin(rx_pin, tx_pin);
      mhz19.setAutoCalibration(false);
    
      Serial.println("MH-Z19 is warming up now.");
      delay(10 * 1000); //
    }
    
    /*----------------------------------------------------------
        MH-Z19 CO2 sensor  loop
      ----------------------------------------------------------*/
    void loop()
    {
      int co2ppm = mhz19.getCO2PPM();
      int temp = mhz19.getTemperature();
    
      Serial.print("co2: ");
      Serial.println(co2ppm);
      Serial.print("temp: ");
      Serial.println(temp);
    
      delay(5000);
    }
    
  • 구축 후 M5 Stack에 쓰기
  • 직렬 모니터를 열면 이산화탄소 농도(추가 온도)가 표시됩니다.
  • co2: 1234
    temp: 17
    
    나는 간단하게 이동할 수 있다.

    M5 Stack 모니터에 표시


    직렬 모니터에만 뜨면 그거지. 이번엔 M5 Stack LCD에 한번 뜨자.
    샘플의 원본 코드에 다음과 같은 내용을 추가합니다.
  • M5 Stack 포함 라이브러리
  • MHZ19_getco2.ino
    #include <M5Stack.h>
    
  • setup() 함수에서 LCD 초기화
  • MHZ19_getco2.ino
    void setup() {
      : 
      前略
      :
      M5.begin();
      M5.Lcd.setBrightness(200);
      M5.Lcd.fillScreen(BLACK);
    
      M5.Lcd.setCursor(0, 0);
      M5.Lcd.setTextColor(WHITE, BLACK);
      M5.Lcd.setTextSize(5);
      M5.Lcd.print("CO2");
    
  • loop() 함수 내 LCD에 이산화탄소 농도
  • 표시
    MHZ19_getco2.ino
    void loop() {
      : 
      前略
      :
      M5.Lcd.setCursor(48, 48);
      M5.Lcd.setTextColor(co2ppm<1000 ? WHITE : (co2ppm>=2000 ? RED : YELLOW), BLACK);
      M5.Lcd.print(String(co2ppm) + "ppm");
      : 
      後略
      :
    }
    
    이렇게 되면 LCD에 표시됩니다.
    https://github.com/nara256/mhz19_uart
    또 일반적으로 이산화탄소 농도가 1000ppm 이하인 것은 나무랄 데가 없고, 1000ppm 이상이면 집중력이 약해지고, 2000ppm 이상이면 두통이 올 수 있기 때문에 이에 따라 글자 색깔을 바꿔봤다.

    좀 더 편하게 보이기 위해서.


    이번에는 생략했지만 얻은 데이터를 등으로 보내는 것이 더 편리하게 시각화될 것 같다.
    Machinest에 데이터를 보내는 방법은 다음 기사를 참조하십시오.
    IIJ Machinist
    Spresense+LTE 확장판에 IIJ Machine ist 사용

    기타 MH-Z19 기능


    MH-Z19는 대기(주로 실외)에서'제로 보정', 실내(1000∼2000ppm 정도)에서'크로스 보정'등 수치 정밀도를 높일 수 있는 기능을 갖추고 있다.
    자세한 내용은 확인ESP-WROOM-02/32에서 IIJ Machinist 사용과 함께 스케치 예제MHZ19_zerocaribMHZ19_spancarib의 출처를 확인하십시오.

    총결산


    최근의 일관 사고로 점포 내 등의 이산화탄소 농도 측정이 중시되고 있다.이런 상황에서 이산화탄소 측정기를 너무 싸게 사면 황당한 숫자만 나오는 예도 있다.조금 비싼 정규 측정 기구를 사는 방법은 확실하지만, 이번 조합도 비교적 신뢰도가 높은 측정이 되지 않을까 싶습니다.

    좋은 웹페이지 즐겨찾기