사용자 도구

사이트 도구


gss:cozir:lp3:인터페이스_유형별_uart_i2c_co2_값_읽기

인터페이스 유형별(UART,I2C) CO2값 읽기


I2C
i2c.cpp
include <Wire.h>
#define Slave_adddress 0x41
#define CO2_READ_command 0x34
#define CO2_READ_and_test_command 0x02
 
void setup() {
  Wire.begin();
  Serial.begin(9600);   
}
void loop() {    
int CO2_value = 0;
 Wire.beginTransmission(Slave_adddress); // transmit to slave address
 Wire.write(CO2_READ_and_test_command);  // transmit to register address
 Wire.endTransmission();    // stop transmitting
 Wire.requestFrom(Slave_adddress, 3); //from slave request 2byte  
  while ( Wire.available()) {
    int CO2_high_value = Wire.read();
    int CO2_low_value = Wire.read();
   /* CO2_Self_test value = 85(DEC) : Sensor is nominal , 
   CO2_Self_test value = 170(DEC): Sensor error */
    int CO2_self_test = Wire.read(); 
    CO2_high_value = CO2_high_value <<8;
    CO2_value = CO2_high_value + CO2_low_value;
    Serial.print("CO2_value : ");
    Serial.print(CO2_value);   //reading CO2 value  
    Serial.println(" PPM ");
  }   
  delay(1000);
}

UART
uart.cpp
#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); //Uno Rx Tx (12 13) = SoftwareSerial
const char* Polling_mode = "K 2\r\n";
const char* CO2_read = "Z\r\n"; 
String str;
void setup() {
  Serial.begin(9600); //시리얼 통신 초기화
  delay(140); // POWER ON then Control Interface Setup Time
  mySerial.begin(9600);
  Serial.println("GSS Gas sensor read");
  mySerial.println(""); // dummy data send 
  mySerial.print(Polling_mode);
  delay(100);
  mySerial.println("M 4"); // send Mode for Z(filter value)
}                              
void loop() 
{
   mySerial.print(CO2_read); 
   delay(1000);
   // co2 값 읽기
   if(mySerial.available()>=10) 
   { 
    str = "";
    str = mySerial.readStringUntil('\n'); 
    Serial.println(str);
   }
}

시리얼 모니터

  • I2C

  • UART

gss/cozir/lp3/인터페이스_유형별_uart_i2c_co2_값_읽기.txt · 마지막으로 수정됨: 2023/04/03 04:15 저자 mjbang