×

SparkFun Support and Front Desk will be closed on Thursday 11/14 from 1-2:30pm for a company event. Please plan to pick up your orders before or after this timeframe.

CO₂ Humidity and Temperature Sensor - SCD30

The SCD30 from Sensirion is a high quality Nondispersive Infrared (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. For additional accuracy the SCD30 also accepts ambient pressure readings!

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 found in the Documents tab above.

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.

  • 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

CO₂ Humidity and Temperature Sensor - SCD30 Product Help and Resources

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels


Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

3 Programming

Skill Level: Competent - The toolchain for programming is a bit more complex and will examples may not be explicitly provided for you. You will be required to have a fundamental knowledge of programming and be required to provide your own code. You may need to modify existing libraries or code to work with your specific hardware. Sensor and hardware interfaces will be SPI or I2C.
See all skill levels


Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

3 Electrical Prototyping

Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels


Comments

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.

  • I purchased about 10 of those CO2 sensor. I calibrated all the sensor outside in the same place, but despite that I have some differences in the readings. To test them, I blow air in a box that I sealed. Then I log CO2 every 5 minutes during 24 hours. I obtain a deacreasing curve of CO2 between about 16000 PPM to 2000 PPM. Any other idea about calibration process? Best regards, Eric

Customer Reviews

4.3 out of 5

Based on 3 ratings:

Currently viewing all customer reviews.

1 of 1 found this helpful:

Works as advertised.

Used sparkfun's available software and QWIC Red Board which was a great help in getting this device up and running. It would be helpful to have a pins added version. For my application needing to expose the sensor to 1 hour of fresh air each 24 hour period was a problem. If you are using this to sample and store continuous reading inside a closed area, then taking it out to provide "fresh" air can be a problem. 7 day calibration worked perfectly. Used two built up sensors two compare outputs which after calibration was within stated accuracy between the two sensors. I did not have a alternate calibration source to test the sensor against which would have helped.

Easy to use CO2 sensor

I wrote some Python code to use this with a Beaglebone (because I knew the beaglebone hardware supported I2C clock stretching). It was a very enjoyable experience because the Sensirion documentation covered the interface very well, above and beyond what I've ever seen before. Maybe it mentioned it somewhere but I would add that the returned CO2 values are encoded as a 32-bit float. The sensor seems quite responsive, I could open a window, and see the CO2 ppm levels change as the room ventilated. I didn't go thru all the details for the calibration process; I was getting about 530ppm for outside air, when I expected something like 405 ppm.

Best/most accurate CO2 sensor I've used so far

Only sensor I've tried that gives remotely reasonable readings. Most other sensors need some kind of calibration (usually using "fresh air" as a proxy for 400ppm CO2) and even then they're bouncing around all over the place [0].

Downsides: Library compatibility is mostly Arduino-centric; originally was planning on using a Raspberry Pi but between drivers for other sensors and the clock stretching shenanigans the SCD30 pulls, using an Arduino dumping data over UART to the Pi wound up being easier. Also had to downclock i2c on the Arduino pretty heavily to get it all to play nicely over a qwiic bus (but it did work somewhat reliably then, plus or minus some resetting the Arduino when it gets locked up for reasons I'm not clear on).

One last unexpected upside: much smaller than I was expecting! Which means I might actually be able to fit it in a portable sensing platform, esp since it has on board humidity sensing. (Would be near perfect if it included a barometer!)

[0] The MH-Z14A's analog output is apparently unbuffered, which doesn't play nice with the Ardunio's ADC. See http://www.doctormonk.com/2018/03/review-and-test-of-mh-z14a-ndir-co2.html