CO₂ Humidity and Temperature Sensor - SCD30

The SCD30 from Sensirion is a high quality NDIR based CO₂ sensor capable of detecting 400 to 10000ppm with an accuracy of ±(30ppm+3%). In order to improve accuracy the SCD30 has temperature and humidity sensing built-in, as well as commands to set the current altitude.

We've written an Arduino library to make reading the CO₂, humidity, and temperature very easy. It can be downloaded through the Arduino Library manager: search for 'SparkFun SCD30' or it can be downloaded here. We recommend using a Qwiic Breadboard Cable to connect the SCD30 to a Qwiic compatible board. The YeLLow wire goes in the SCL pin. The SCD30 also supports a serial interface but we haven't worked with it.

The CO₂ sensor works very well and for additional accuracy the SCD30 accepts ambient pressure readings. We recommend using the SCD30 in conjunction with the Qwiic Pressure Sensor - MS5637 or the Qwiic Environmental Sensor - BME680 to obtain the current barometric pressure.

Note: The SCD30 has an automatic self-calibration routine. Sensirion recommends 7 days of continuous readings with at least 1 hour a day of 'fresh air' for self-calibration to complete.

We do not plan to regularly stock all SparkX products so get them while they’re hot!

Experimental Product: SparkX products are rapidly produced to bring you the most cutting edge technology as it becomes available. These products are tested but come with no guarantees. Live technical support is not available for SparkX products. Head on over to our forum for support or to ask a question.
  • Power supply voltage: 3.3V - 5.5V
  • NDIR CO2 sensor technology
  • Integrated temperature and humidity sensor
  • Best performance-to-price ratio
  • Dual-channel detection for superior stability
  • Small form factor: 35 mm x 23 mm x 7 mm
  • Measurement range: 400 ppm – 10.000 ppm
  • Accuracy: ±(30 ppm + 3%)
  • Current consumption: 19 mA @ 1 meas. per 2 s.
  • Energy consumption: 120 mJ @ 1 measurement
  • Fully calibrated and linearized
  • Digital interface UART or I2C


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #527188 / about 6 years ago * / 1

    As of 9/20/2018, the latest ESP32 code on Github has the I2C patches required to communicate with the SCD30. Until the patches are rolled into the next release (current release is 1.0.0), you need to do the following rather than expecting Arduino's Board Manager to do it for you.

    1) Update Arduino with the latest Arduino ESP32 core from Github:

    2) Comment out the lines in SparkFun_SCD30_Arduino_Library.cpp as follows:

    // #if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
    // _i2cPort->setClockStretchLimit(200000);
    // #endif

  • Member #527188 / about 6 years ago / 1

    Sensirion has formally released the SCD30

    All the released documentation can be found at:

  • Member #444502 / about 6 years ago / 1

    Has somebody been able to get SCD30 to work with ESP8266?

    I can find SCD30 with I2C scanner but Sparkfun SCD30 library/example doesn't connect with SCD30. It just prints ....... as it's trying to connect.

Customer Reviews

5 out of 5

Based on 1 ratings:

Currently viewing all customer reviews.

1 of 1 found this helpful:

Excellent CO2 Sensor

I do some work in home environment industry and have been using various NDIR CO2 sensors for about 10 years. At $60, this is one of the best CO2 sensors on the market. Based on the date of some of the documents for this, it seems to be a very recently released device.

As far as CO2 measurements, I've compared it side-by-side with a known calibrated standard, and was rock solid from near 0 ppm to about 8000 ppm. There was a slight variation about 8000 ppm, but likely due to me messing around with the internal calibration values. I'll have test a another fresh out of the box.

Like many NDIR sensors, the SCD30 has an internal auto calibration routine that requires the device to be exposed to fresh air on a daily basis. This limits the application. If your using it as an indoor monitor, the lowest co2 levels it detects will be assumed ambient outdoor values, and the output value will drift up over time. You can turn off the auto-cal feature, but I haven't had mine long enough to determine the trend.

A minor annoyance is it takes up to 7 days for a new device to auto-cal, requiring exposure to outside ambient. Again, if your application doesn't get exposed to fresh air daily, the first auto-cal won't complete. I ended up setting mine outside for a week powered up.

This is the first NDIR CO2 Sensor I've seen with both built-in temperature and humidity sensors to compensate. This gives the SCD30 the potential to be extremely accurate in harsh envirments. There's an option to add a barometric sensor if your going to use this device at multiple altitudes or inside HVAC ducting where there are significant pressure changes. For average room monitoring this isn't required.

Although the device has a PWM connection, it's not functional in the current version.

Documentation is hard to come by. It took some serious digging to get the I2C protocol. The data sheet indicates a serial com mode, but I haven't tried it.

Nate's done a great job of supplying a library and examples of the common functions. With minor code changes, the library should be portable to most micro controllers. It took only minor changes to make it compile for a Particle Photon so I can get remote data. Although advertised as a QWIIC device (it does work), I bypassed the QWIIC cabling to use the Ready output to grab measurement data rather than the fixed delay in the library.

If your looking for a high accuracy CO2 Sensor, this is your best price-to-performance option. It rivals $400 and up sensors that don't have the built-temp and humidity. It's well constructed and looks very rugged. For the price, you can't beat it.