작은항해자의 항해

MH-Z19 CO2 Sensor 본문

IT 이야기/IOT 센서

MH-Z19 CO2 Sensor

작은항해자 2019. 1. 21. 15:59

MH-Z19 CO2 Sensor


Introduction :

  • 적외선 이산화탄소 가스센서 모듈

  • NDIR(Non-Dispersive Infrared)를 이용하여 공기중의 CO2를 측정한다.

  • 온도 센서가 내장되어있어 온도 보정을 할 수 있으며, 디지털 출력과 아날로그 출력을 가지고 있다.




Features :

  • 출력인터페이스: UART, PWM

  • 높은 분해능과 감도

  • 저전력 파워소모

Specification :

  • 입력 전압: DC3.6V ~ 5V

  • 측정 범위: 0~5000ppm

  • 오차: +-(50ppm+5%)

  • 동작 온도: 0~50℃

  • 동작 습도: 0~95%RH

  • 로직 레벨: 3.3V 및 5V 지원

  • 응답 시간: <60초

  • 초기예열시간: 3분

  • 크기: 26.5*19.5*8mm

Doc :


회로 연결도(참조 : 메카솔루션 메카위키)

- 사용라이브러리 : MHZ19-master.zip

  라이브러리 다운로드 사이트 : https://github.com/strange-v/MHZ19

- Uart 통신 사용시


Code

#include <SoftwareSerial.h>       /'SoftwareSerial.h' 포함

#include <MHZ19.h>          /'MHZ19.h' 포함


SoftwareSerial ss(2,3);          /SoftwareSerial ss핀을 2번 3번으로 지정

MHZ19 mhz(&ss);


void setup()

{

  Serial.begin(115200);         /115200 시리얼 통신 시작

  Serial.println(F("Starting..."));         /시리얼 모니터에 "Starting..." 표시


  ss.begin(9600);

}


void loop()

{

  MHZ19_RESULT response = mhz.retrieveData();

  if (response == MHZ19_RESULT_OK)

  {

    Serial.print(F("CO2: "));

    Serial.println(mhz.getCO2());        /시리얼 모니터에 Co2값 표시

    Serial.print(F("Min CO2: "));

    Serial.println(mhz.getMinCO2());        /시리얼 모니터에 최소 Co2값 표시

    Serial.print(F("Temperature: "));

    Serial.println(mhz.getTemperature());        /시리얼 모니터에 온도 값 표시

    Serial.print(F("Accuracy: "));

    Serial.println(mhz.getAccuracy());         /시리얼 모니터에 정확도 표시

  }

  else       /그 외엔

  {

    Serial.print(F("Error, code: "));        /시리얼 모니터에 에러코드 표시

    Serial.println(response);

  }

  

  delay(15000);          /15초 대기

} 



- PWM 통신 사용시

Code

 #include <MHZ19PWM.h>         /'MHZ19PWM.h' 포함



MHZ19PWM mhz(3, MHZ_DELAYED_MODE);


void setup()

{

  Serial.begin(115200);          /115200 시리얼 통신 시작

  Serial.println(F("Starting..."));        /시리얼 모니터에 "Starting..." 표시


  delay(2000);       /2초 대기


  mhz.useLimit(5000);

}


void showValue()

{

  unsigned long start = millis();

  float co2 = mhz.getCO2();

  unsigned long duration = millis() - start;


  Serial.print(F("CO2: "));       

  Serial.println(co2);         /시리얼 모니터에 co2 값 표시

  Serial.print(F("Duration: "));

  Serial.println(duration);        /시리얼 모니터에 지속시간 표시

  Serial.println();

}


void loop()

{

  showValue();        /계산 값 표시

  delay(5000);          /5초 대기


'IT 이야기 > IOT 센서' 카테고리의 다른 글

8 Digit 7-Segment Display Module - MAX7219  (0) 2019.01.23
MH-Z14A CO2 Sensor  (0) 2019.01.21
MH-Z16 적외선 CO2 Sensor  (0) 2019.01.21
Hall Sensor(홀 센서)  (0) 2019.01.16
NDVI 카메라  (0) 2019.01.15