Arduino Giga with a Grove Laser PM2.5 sensor - I2C problem

I am trying to build a particle counter system based on the Grove Laser PM2.5 (HM3301) SKU 101020613. Data shall be acquired with an Arduino Giga R1 WiFi.
The Arduino Giga doesn’t seem to be able to read the data properly from the I2C bus.
Concentration reading is almost always 0, rarely its 1.

FF 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0
sensor num: 0
PM1.0 concentration(CF=1,Standard particulate matter,unit:ug/m3): 0
PM2.5 concentration(CF=1,Standard particulate matter,unit:ug/m3): 0
PM10 concentration(CF=1,Standard particulate matter,unit:ug/m3): 0
PM1.0 concentration(Atmospheric environment,unit:ug/m3): 0
PM2.5 concentration(Atmospheric environment,unit:ug/m3): 0
PM10 concentration(Atmospheric environment,unit:ug/m3): 0

I’ve already checked the following:
The sensor is working fine with an Arduino Due.
The Arduino Giga can read data from an mpu9250 sensor without problems.
I powered the sensor with 3.3 V and with 5V - doesn’t make a difference
I tried different all 3 I2C buses of the Arduino Giga - I don’t see a difference
I tried setting different I2C clock speeds - I don’t see a difference
I used an oscilloscope for checking the communication - this confirmed the raw data as shown above.

Any ideas whats going wrong with the Arduino Giga?

Just a suggestion: do the SCL and SDA lines have pull-up resistors?

Good idea, I already thought this way.
The Arduino Giga Cheat-Sheet says: "If you pay close attention you may notice that there are three sets of I2C pins. The two first sets (SDA, SCL, SDA1, SCL1) have internal pullup resistors connected to them which are required to make them function as I2C pins. "

I just added external pull-up resistors (4.7k) to SDA and SCL. It makes no difference.

Do you have a logic analyser? It is the best way to check whether data goes through the I²C bus.

Also, perform a basic cross-check

  • Try the Giga board with another I²C device.
  • Try the PM2.5 sensor with another board.

I connected a logic analyzer and suddenly the sensor is working fine (I didn’t even start the analyzer software)
And now its working consistently. I have absolutely no clue why it didn’t work before… Maybe a loose contact?
Thanks for your support

You’re welcome! The logic analyser is always kind of magic…