Sensor CO2 K33 ICB Senseair - Not measure

Hello everyone,
I’m trying to read a CO₂ sensor (I2C address 0x68) using Arduino, but I’m having issues. The sensor seems to be “asleep” or unresponsive: the infrared LED inside the sensor does not turn on, and all readings return 0.
This is the code I have been using successfully before, but after leaving the system disconnected for a while, it stopped working. I haven’t changed anything.


int co2Addr = 0x68;

void setup() {
  Serial.begin(9600);
  Wire.begin();
}

int readCO2() {
  int co2_value = 0;

  Wire.beginTransmission(co2Addr);
  Wire.write(0x22);
  Wire.write(0x00);
  Wire.write(0x08);
  Wire.write(0x2A);
  Wire.endTransmission();
  delay(10);

  Wire.requestFrom(co2Addr, 4);
  byte i = 0;
  byte buffer[4] = {0, 0, 0, 0};
  
  while(Wire.available()) {
    buffer[i] = Wire.read();
    i++;
  }

  co2_value = 0;
  co2_value |= buffer[1] & 0xFF;
  co2_value = co2_value << 8;
  co2_value |= buffer[2] & 0xFF;

  byte sum = buffer[0] + buffer[1] + buffer[2];
  
  if(sum == buffer[3]) {
    return co2_value;
  } else {
    return 0;
  }
}

void loop() {
  int co2Value = readCO2();
  Serial.print("Time: ");
  Serial.print(millis()/1000);
  Serial.print("s ");
  Serial.print("CO2 Value: ");
  Serial.println(co2Value);
  delay(5000);
}

Problem: The sensor never wakes up, and I always get 0 as the CO₂ reading. The IR LED inside the sensor is off.

Has anyone experienced this with the ICB-F CO₂ sensor? How can I properly wake the sensor and get readings? Any advice or working example code would be greatly appreciated.

Thanks in advance!

Could be a bad wiring connection. First, try the I2C address scanner program and see if it detects the device. If not, try rewiring, with different connectors.

The IR LED inside the sensor is off.

How do you know that?

First verify the address with a scanner. Second use a seperate power source for the sensor just in case.

Is there a datasheet of the sensor?
Please post a link.

So are your pins connected to sensor carefully soldered?

How you know?

Ps. logic level of that sensor is 3.3V, you should use level shifter.

K33 Senseair specification

Thanks for your reply!

In the past, when I uploaded the code and connected the sensor, the red IR LED inside the sensor always turned on. Now it doesn’t light up at all.

I’ve checked the power supply and the sensor is receiving 11 V, and all the pins are properly soldered.

I also verified that the sensor’s I2C address (0x68) is detected by the Arduino, so communication seems to be established.

I believe the issue might be related to the sensor being in sleep mode, and maybe there’s a missing command in the code to “wake up” or “turn on” the sensor.

A few months ago, the same setup and code worked perfectly, but after leaving it disconnected for a while, it no longer measures anything.

I doubt that the unpowered sensor went to secret sleep mode by itself.
Did you measure DVCC voltage?

Sensor i2c datasheet writes "does not tolerate 5V logical levels".

Hi, @savedi

Have you looked at the setup exe that they supply, you may be able to get readings through it to verify the sensors health.

Tom.... :smiley: :+1: :coffee: :australia:

As mentioned, the UART RX and TX connections are 3.3V only. It seems likely that you have permanently damaged the sensor by connecting it to 5V I/O pins on the Arduino.

I’ve checked the power supply and the sensor is receiving 11 V

From where? The photo posted:

shows the Arduino 3.3V regulated output connected to the 3.3V regulated output of the sensor, and no other power supply connection. I would not expect that to work.

Please post a close-up, focused photo of the actual setup.