CO2 Bricklet 2.0


  • Measures CO2 concentration from 400 to 10000ppm (parts per million)
  • High accuracy of ±30ppm (full-scale) and ±3% (of reading)
  • Measures temperature and humidity for compensation
  • Ambient air pressure can be applied for additional compensation


The CO2 Bricklet 2.0 can be used to extend the features of Bricks with the capability to measure CO2 concentration in the air. The measured CO2 concentration can be read out in ppm. With configurable events it is possible to react on changing CO2 concentration without polling.

The Bricklet also measures temperature and humidity. These are used internally for compensation and can additionally be read out.

It is possible to apply an ambient air pressure value to achieve further compensation and better CO2 concentration measurement.

Technical Specifications

Property Value
Sensor Sensirion SCD30
Current Consumption (average) 60mW (12mA at 5V)
Current Consumption (peak) 400mW (80mA at 5V)
CO2 Concentration Resolution 1ppm with range of 400ppm to 10000ppm
Temperature Resolution 0.01°C with range of -40°C to 70°c
Humidity Resolution 0.01%RH with range of 0%RH to 100%RH
CO2 Concentration Accuracy ±30ppm (full-scale), ±3% (of reading)
Temperature Accuracy ± (0.4°C + 0.023 × (T [°C] – 25°C))*
Humidity Accuracy ± 3 %RH
Measurement Frequency 0.5 measurements per second
Dimensions (W x D x H) 35 x 40 x 18mm (1.38 x 1.57 x 0.71")
Weight 9g

* This is the temperature at the exact position of the sensor. If the Bricklet is used inside of an enclosure, the air around the Bricklet may heat up more than the ambient air. The Bricklet does have API to calibrate this kind of offset.


Air Pressure Compensation and Temperature Offset

The CO2 Bricklet 2.0 has API to set an ambient air pressure value for additionl internal compensation to achieve increased CO2 concentration accuracy.

You can use a Barometer Bricklet 2.0 or Air Quality Bricklet to measure the air pressure and update the compensation value periodically.

Additionally, if the Bricklet is used inside of an enclosure, the air around the Bricklet may heat up more than the ambient air. This temperature offset can also be calibrated with the API. We recommend that you leave the parts in the enclosure running for at least 24 hours such that a temperature equilibrium can be reached.

CO2 Calibration

Gas sensors need to be calibrated from time to time. Typically this is done by applying a specified amount of CO2 to it. Since this is impractical for a CO2 sensor at home, the gas sensor of this Bricklet (Sensirion SCD30) do a permanent automatic calibration (ASC).

Here is what Sensirion is writing about it:


To work properly SCD30 has to see fresh air on a regular basis. Optimal working conditions are given when the sensor sees fresh air for one hour every day so that ASC can constantly re-calibrate. ASC only works in continuous measurement mode.

That means if the sensor is not seeing fresh air in that period it will calibrate with the wrong values decreasing the accuracy of the sensor.

Test your CO2 Bricklet 2.0

To test a CO2 Bricklet 2.0 you need to have Brick Daemon and Brick Viewer installed. Brick Daemon acts as a proxy between the USB interface of the Bricks and the API bindings. Brick Viewer connects to Brick Daemon. It helps to figure out basic information about the connected Bricks and Bricklets and allows to test them.

Connect the CO2 Bricklet 2.0 to a Brick with a Bricklet Cable.

If you connect the Brick to the PC over USB, you should see a new tab named "CO2 Bricklet 2.0" in the Brick Viewer after a moment. Select this tab. If everything went as expected the Brick Viewer should look as depicted below.

CO2 Bricklet 2.0 in Brick Viewer

After this test you can go on with writing your own application. See the Programming Interface section for the API of the CO2 Bricklet 2.0 and examples in different programming languages.

Programming Interface

See Programming Interface for a detailed description.

Language API Examples Installation
C/C++ API Examples Installation
C/C++ for Microcontrollers API Examples Installation
C# API Examples Installation
Delphi/Lazarus API Examples Installation
Go API Examples Installation
Java API Examples Installation
JavaScript API Examples Installation
LabVIEW API   Installation
Mathematica API Examples Installation
MATLAB/Octave API Examples Installation
MQTT API Examples Installation
openHAB API Examples Installation
Perl API Examples Installation
PHP API Examples Installation
Python API Examples Installation
Ruby API Examples Installation
Rust API Examples Installation
Shell API Examples Installation
Visual Basic .NET API Examples Installation
Modbus API