CCS811 Air Quality Breakout Hookup Guide
Example: Basic Reading
After you've got pins attached to your breakout board, the first example to use should be BasicReadings. Select it from examples or copy from below.
Connect the sensor as follows as a starting place for the examples.
For this example, only 3.3V, GND, SDA and SCL are needed. The jumpers on the board are left in the default positions.
/****************************************************************************** Read basic CO2 and TVOCs Marshall Taylor @ SparkFun Electronics Nathan Seidle @ SparkFun Electronics April 4, 2017 https://github.com/sparkfun/CCS811_Air_Quality_Breakout https://github.com/sparkfun/SparkFun_CCS811_Arduino_Library Read the TVOC and CO2 values from the SparkFun CSS811 breakout board A new sensor requires at 48-burn in. Once burned in a sensor requires 20 minutes of run in before readings are considered good. Hardware Connections (Breakoutboard to Arduino): 3.3V to 3.3V pin GND to GND pin SDA to A4 SCL to A5 ******************************************************************************/ //#define CCS811_ADDR 0x5A //Alternate I2C Address CCS811 mySensor(CCS811_ADDR); void setup() { Serial.begin(115200); Serial.println("CCS811 Basic Example"); Wire.begin(); //Inialize I2C Hardware if (mySensor.begin() == false) { Serial.print("CCS811 error. Please check wiring. Freezing..."); while (1) ; } } void loop() { //Check to see if data is ready with .dataAvailable() if (mySensor.dataAvailable()) { //If so, have the sensor read and calculate the results. //Get them later mySensor.readAlgorithmResults(); Serial.print("CO2["); //Returns calculated CO2 reading Serial.print(mySensor.getCO2()); Serial.print("] tVOC["); //Returns calculated TVOC reading Serial.print(mySensor.getTVOC()); Serial.print("] millis["); //Display the time since program start Serial.print(millis()); Serial.print("]"); Serial.println(); } delay(10); //Don't spam the I2C bus }
At the beginning, an object is created in the global space CCS811 mySensor(CCS811_ADDR);
and is constructed with the address as a parameter.
To get data from the sensor, mySensor.dataAvailable()
is checked until a new reading is ready, mySensor.readAlgorithmResults();
is called to have the sensor process the reading, then mySensor.getCO2()
and mySensor.getTVOC()
are used to retrieve the calculated values for gas levels.
If everything is connected correctly, the serial window will report gas levels every second. Remember the sensor takes 20 minutes to properly warm up, so values reported will rise up in the early stages of operation!
Summary:
To get data from the CCS811, these minimum requirements must be met:
- Create a
CCS811
object in the global space - Run
.begin()
of your object (Return type monitoring optional) - Check for the availability of new data with
.dataAvailable()
- Use
.readAlgorithmResults()
to perform a measurement.getCO2()
to get the last equivalent CO2 reading (no I2C bus operation).getTVOC()
to get the last TVOC reading (no I2C bus operation)