ArduinoUNO 및 CO2 센서 모듈 MH-Z19C로 CO2 측정

x 배선에는 자신이 없기 때문에 각자, 사양서를 확인하는 것

목적
이제 코로나에서 유행하는 CO2 측정기
비영리, 교육, 연구목적

설명
771_8bit의 프로그램을 비영리 목적으로 ArduinoUNO에 이식
어디까지나 참조

변경점
하드 시리얼에서 소프트웨어 시리얼
A6 -> 6
A7 -> 7





참고

아키즈키에서 살 수있는 CO2 센서 사용 (MH-Z19C)


//caa45040が追加 始まり
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2); // RX, TX
//caa45040が追加 終わり

uint16_t uartco2; 
unsigned long pwmco2;
bool reset = false;

byte ReadCO2[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
byte SelfCalOn[9]  = {0xFF, 0x01, 0x79, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xE6};
byte SelfCalOff[9] = {0xFF, 0x01, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86};
byte retval[9];

void setup() {
  pinMode(7 /*変更*/, INPUT);
  pinMode(6 /*変更*/, OUTPUT);
  Serial.begin(9600);
  Serial.print("400ppm");
  Serial.print(",");
  Serial.print("UART");
  Serial.print(",");
  Serial.println("PWM");
  delay(2000);
  mySerial.begin(9600);
  mySerial.write(SelfCalOn,sizeof SelfCalOn);
}


void loop() {
  //PWMでデータ取得
  pwmco2=pulseIn(7 /*変更*/,HIGH,2000000);

  //UARTでデータ取得
  mySerial.write(ReadCO2,sizeof ReadCO2);
  mySerial.readBytes((char *)retval, sizeof retval);
  uartco2 = retval[2]*256 + retval[3];

  //PCに送信
  Serial.print(2*(202000-2000)/1000);
  Serial.print(",");
  Serial.print(uartco2);
  Serial.print(",");   
  Serial.println(5*(pwmco2-1200)/1000);

  delay(100);

  //起動20分後手動キャリブレーション
  if(millis()>1200000 && !reset){
    digitalWrite(6 /*変更*/,LOW);
    delay(8000);
    digitalWrite(6 /*変更*/,HIGH);
    reset=true;
  }

}


좋은 웹페이지 즐겨찾기