TVOC and CO2 Measurement using Arduino and CCS811 Air Quality Sensor

Sadly, in the name of progress, we have polluted the air, water, soil and the food we eat”. So monitoring the air quality is very crucial now days because of pollution. For designing an air quality monitoring system we need durable and reliable air quality sensor. Although there are many Air Quality parameters but the most important are CO2 and TVOC. So for sensing CO2 and TVOC, we are using CCS811 Air Quality Sensor.

TVOC and CO2 Measurement using Arduino and CCS811 Air Quality Sensor

In this tutorial, we are going to show you that how to sense TVOC and CO2 using CCS811 air quality sensor with Arduino. Also, you will learn to interface CSS811 with Arduino.

Material Required

  • Arduino UNO
  • CCS811 Air Quality Sensor
  • Potentiometer (10k)
  • LCD 16*2
  • Breadboard
  • Connecting Wires

Circuit Diagram

CCS811 Air Quality Sensor

CCS811 Air Quality Sensor is an ultra-low power digital gas sensor which integrates a MOX (metal oxide) gas sensor to detect a wide range of VOCs (Volatile Organic Compounds) for indoor air quality monitoring with an integrated MCU (Micro-controller Unit). MCU consists of ADC (Analog-to-Digital Converter) and I2C interface. It’s based on an ams unique micro-hotplate technology which empowers highly reliable solutions for Gas Sensors, with low power consumption.

In our circuit, we are using this sensor for sensing TVOC and CO2 available in the environment and displaying the data on 16*2 LCD.

Pin Configuration

Pin No.

Pin Name




Input Supply (3.3v to 5v)



3.3V output Pin for external use






This is I2C clock pin



I2C data pin



Wakeup Pin of sensor, should be connected to ground in order to communicate with the sensor



Reset pin: When connected to ground the sensor reset itself



This is interrupt output pin, used to detect when a new reading is ready or when a reading gets too high or low


  • Smartphones
  • Wearables
  • Home and Building Automation
  • Accessories

Code and Explanation

The complete Arduino code for TVOC and CO2 Measurement using CCS811 Air Quality Sensor is given at the end.

In the below code, we are defining the libraries for 16*2 LCD and CCS811 Air Quality Sensor. For downloading the library “Adafruit_CCS811.h” for CCS811 follow this link.

#include <LiquidCrystal.h>
#include "Adafruit_CCS811.h"

Below we have defined Pins for connection of 16*2 LCD with Arduino.

LiquidCrystal lcd(12, 13, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
Adafruit_CCS811 ccs;

Below we have set up LCD and CCS811 air quality sensor and calibrated it for the showing correct temperature, as shown in the below code,

void setup() {
  lcd.begin(16, 2); 
  //calibrate temperature sensor
  float temp = ccs.calculateTemperature();
  ccs.setTempOffset(temp - 25.0);

In the below code, we used functions ccs.available()” (Function is already defined in library) to check if there is some data coming. As we get the data we are able to calculate the temperature and display it on 16*2 LCD.

TVOC and CO2 Measurement using Arduino and CCS811 Air Quality Sensor schematics

Further if CCS is available and ccs.readData() is returning false then we get the CO2 value using function ccs.geteCO2() and TVOC value using ccs.getTVOC(), as shown in the below code. Hence, we have received the value of air quality parameters using CCS811 air quality sensor.

void loop() {
    float temp = ccs.calculateTemperature();

      int co2 = ccs.geteCO2();
      int tvoc = ccs.getTVOC();
      lcd.setCursor(0, 0);
      lcd.print(String ("CO2:")+ String (co2)+String(" PPM"));
      lcd.setCursor(0, 1);
      lcd.print(String ("TVOC:")+ String (tvoc)+String(" PPB "));
      lcd.print(String("T:"+String (int(temp)))+String("C"));


Complete Arduino code is given below. Code is simple, all the work is done by its library itself and we have used functions defined in the CCS library to get the values of CO2 and TOVC.

Read more: TVOC and CO2 Measurement using Arduino and CCS811 Air Quality Sensor

About The Author

Ibrar Ayyub

I am an experienced technical writer with a Master's degree in computer science from BZU Multan University. I have written for various industries, mainly home automation, and engineering. I have a clear and simple writing style and am skilled in using infographics and diagrams. I am a great researcher and is able to present information in a well-organized and logical manner.

Scroll to Top