I2C SGP30 - Compatible?

I'm working on a project that I would like to use this device on:

https://cdn-learn.adafruit.com/assets/assets/000/050/058/original/Sensirion_Gas_Sensors_SGP30_Datasheet_EN.pdf

I'm not sure if it's compatible w/ the MetaMotionR+ that I'd like to pair it with. Anyone have a thought or advise on a jumping off place?

Thanks
Carlton

Comments

  • It's a 1.8V part so it is not compatible.

  • I should have been clearer.... I'm using this:

    https://www.adafruit.com/product/3709

    Which does take 3 volts and has a I2C interface. What I don't know is that the MetaMotionR+ is expecting to read a register, however it doesn't appear that the SGP30 has registers, but it does expect a "Command" to be sent to it in 16 bits.

  • For your convenience we've pick-and-placed the sensor on a PCB with a 1.8V regulator and some level shifting so it can be easily used with your favorite 3.3V or 5V microcontroller.

    From a voltage perspective I think it should work.

    This is a very fine air quality sensor from the sensor experts at Sensirion, with I2C interfacing and fully calibrated output signals with a typical accuracy of 15% within measured values.

    Looks like standard I2C communication which we support with our APIs; Just read our developer documentation on the I2C side (in the language of your choice) and you should be good to go.

    I don't see any issues at first glance with this product: https://www.adafruit.com/product/3709

    It should interface just fine with the metawear.

  • The mbientlab C# libraries for MetaMotionR+ refer to reading registers from the I2C buss. I don't know how that translates to the SGP30 which seems to be looking for a "request" and then will provide an "answer". Yes this is new to me, so I'm obviously missing something. Can someone point me in the right direction w/ the SGP30?

    https://cdn-learn.adafruit.com/assets/assets/000/050/058/original/Sensirion_Gas_Sensors_SGP30_Datasheet_EN.pdf

  • I've been researching this project and before I end up heading down the wrong path, the question I have relates to I2C and the "registerAddr" in functions from the mbientlab C# libraries.

    Looking at the WriteI2C() and ReadI2CAsync() functions, there is the "registerAddr" variable that indicates what register of the device to write or read from.

    This device is what I'm trying to talk to:

    https://cdn-learn.adafruit.com/assets/assets/000/050/058/original/Sensirion_Gas_Sensors_SGP30_Datasheet_EN.pdf

    Looking on Page 9 of this document, it has Hex. Codes which I'm assuming are the "registers" to read/write to? If so, they are 16 bits long and the WriteI2C and ReadI2C functions are 8 bits long.

    Page 7 states: "A measurement communication sequence consists of a START condition, the I2C write header (7-bit I2C device address plus 0 as the write bit) and a 16-bit measurement command."

    So what am I missing? Thanks!

  • edited March 2020

    Did you send it a start packet? You send the SGP30 a packet from the metawear to the sensor on the i2c bus. Then it starts the data stream.
    Then the metawear will receive a bunch of I2C packets with the data from the sgp30.

    https://i2c.info/

Sign In or Register to comment.