Language issues about sensor CO2 SGP30

Hello,

I’m a student who wants to use the CO2 sensor SGP30 (GROVE) but when we follow the tutorial available here : Grove - VOC and eCO2 Gas Sensor(SGP30) - Seeed Wiki the baseline example is working well but the answer showed by the monitor is not the language expectd by the tutorial. We can see that on the window :

The code is :

#include <Arduino.h>
#include <EEPROM.h>

#include "sensirion_common.h"
#include "sgp30.h"

#define LOOP_TIME_INTERVAL_MS  1000
#define BASELINE_IS_STORED_FLAG  (0X55)
//#define ARRAY_TO_U32(a)  (a[0]<<24|a[1]<<16|a[2]<<8|a[3])    //MSB first  //Not suitable for 8-bit platform

void array_to_u32(u32* value, u8* array) {
  (*value) = (*value) | (u32)array[0] << 24;
  (*value) = (*value) | (u32)array[1] << 16;
  (*value) = (*value) | (u32)array[2] << 8;
  (*value) = (*value) | (u32)array[3];
}
void u32_to_array(u32 value, u8* array) {
  if (!array) {
    return;
  }
  array[0] = value >> 24;
  array[1] = value >> 16;
  array[2] = value >> 8;
  array[3] = value;
}

/*
    Reset baseline per hour,store it in EEPROM;
*/
void  store_baseline(void) {
  static u32 i = 0;
  u32 j = 0;
  u32 iaq_baseline = 0;
  u8 value_array[4] = {0};
  i++;
  Serial.println(i);
  if (i == 3600) {
    i = 0;
    if (sgp_get_iaq_baseline(&iaq_baseline) != STATUS_OK) {
      Serial.println("get baseline failed!");
    } else {
      Serial.println(iaq_baseline, HEX);
      Serial.println("get baseline");
      u32_to_array(iaq_baseline, value_array);
      for (j = 0; j < 4; j++) {
        EEPROM.write(j, value_array[j]);
        Serial.print(value_array[j]);
        Serial.println("...");
      }
      EEPROM.write(j, BASELINE_IS_STORED_FLAG);
    }
  }
  delay(LOOP_TIME_INTERVAL_MS);
}

/*  Read baseline from EEPROM and set it.If there is no value in EEPROM,retrun .
    Another situation: When the baseline record in EEPROM is older than seven days,Discard it and return!!

*/
void set_baseline(void) {
  u32 i = 0;
  u8 baseline[5] = {0};
  u32 baseline_value = 0;
  for (i = 0; i < 5; i++) {
    baseline[i] = EEPROM.read(i);
    Serial.print(baseline[i], HEX);
    Serial.print("..");
  }
  Serial.println("!!!");
  if (baseline[4] != BASELINE_IS_STORED_FLAG) {
    Serial.println("There is no baseline value in EEPROM");
    return;
  }
  /*
      if(baseline record in EEPROM is older than seven days)
      {
      return;
      }
  */
  array_to_u32(&baseline_value, baseline);
  sgp_set_iaq_baseline(baseline_value);
  Serial.println(baseline_value, HEX);
}




void setup() {
  s16 err;
  u16 scaled_ethanol_signal, scaled_h2_signal;
  Serial.begin(115200);
  Serial.println("serial start!!");

  /*For wio link!*/
#if defined(ESP8266)
  pinMode(15, OUTPUT);
  digitalWrite(15, 1);
  Serial.println("Set wio link power!");
  delay(5000);
#endif

  /*  Init module,Reset all baseline,The initialization takes up to around 15 seconds, during which
      all APIs measuring IAQ(Indoor air quality ) output will not change.Default value is 400(ppm) for co2,0(ppb) for tvoc*/
  while (sgp_probe() != STATUS_OK) {
    Serial.println("SGP failed");
    while (1);
  }
  /*Read H2 and Ethanol signal in the way of blocking*/
  err = sgp_measure_signals_blocking_read(&scaled_ethanol_signal,
                                          &scaled_h2_signal);
  if (err == STATUS_OK) {
    Serial.println("get ram signal!");
  } else {
    Serial.println("error reading signals");
  }
  // err = sgp_iaq_init();
  set_baseline();
  //
}

void loop() {
  s16 err = 0;
  u16 tvoc_ppb, co2_eq_ppm;
  err = sgp_measure_iaq_blocking_read(&tvoc_ppb, &co2_eq_ppm);
  if (err == STATUS_OK) {
    Serial.print("tVOC  Concentration:");
    Serial.print(tvoc_ppb);
    Serial.println("ppb");

    Serial.print("CO2eq Concentration:");
    Serial.print(co2_eq_ppm);
    Serial.println("ppm");
  } else {
    Serial.println("error reading IAQ values\n");
  }
  store_baseline();
}

Thank you.

Yanis

Hi, I saw your code set the baud rate to 115200, while the serial monitor has a baud rate of 9600, you need to adjust it

Hi, okay i will try to fix it as soon as possible thanks !