Sensirion Environmental Sensor Shield - Review

Table of contents

RoadTest: Sensirion Environmental Sensor Shield - Industrial Sensing

Author: gam3t3ch

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?:

What were the biggest problems encountered?:

Detailed Review:

So to start I would like to thank Element14 and Sensirion for the opportunity to be able to use and test the Sensirion Environmental Sensor Shield.  When I first found out about the Road Test I was excited the product looked like it would be something that I could get to work quickly as well as be able to incorporate it in to other projects in the future.


Not sure why the embeded players are a bit messed up below attempted to fix them but no luck regardless of size of the player Sorry about that.  Will post a link to them below as well just in case.


A huge thank you to Johannes Winkelmann  & Reto Kleiner From Sensirion for their wonderful support and help A+ Customer service.







So I won't toss in all the specs and everything but please review the following for all the information you will need:

Sensirion Environmental Sensor Shield

Sensirion GitHub - ESS

Sensirion Schematic

& of course check out the other reviews on the Sensirion Environmental Sensor Shield HERE

Click here to check out CoolTerm


Road Test Videos:

Review & Testing - Sensirion Environmental Sensor Shield.

What I think so far of the.... Sensirion Environmental Sensor Shield.


Other video:

Cowspiracy: The Sustainability Secret (trailer)







Total Volatile Organic Compounds


TVOC Level  ug/m3

Level of Concern



Less than 300


No irritation or discomfort is expected.

There is a low likelihood that specific VOC sources are present

300 to 500


Occasional irritation or discomfort may be possible with sensitive individuals.

There is a low to moderate likelihood that specific VOC sources are present

500 to 1000


Complaints about irritation and discomfort are possible in sensitive individuals

A moderate likelihood that specific VOC sources are it is recommended that steps be taken to identify the sources

1000 to 3000


Irritation and discomfort are very likely

A high likelihood that specific VOC sources are present and it is highly recommended that steps be taken to identify them.

More than 3000

Very High

Irritation and discomfort are very possible.

These levels are usually found in an industrial environment where workers are exposed to chemicals


TVOC specified range is 0 ppb to 60000 ppb. CO2eq is 400 ppm .. 60000ppm


CO2eq is 400 ppm .. 60000ppm, because the atmospheric background is at least 400:

But if you want to know what the most current is check out  for a daily reading and lots of other info.


Atmospheric CO2


So this brings us to the point where we need to figure out what the acceptable levels are in ones house if we make a new chart starting at 400ppm


400-500ppmbackground (normal) outdoor air level
500-1250ppmtypical level found in occupied spaces with good air exchange
1250-2500ppmlevel associated with complaints of drowsiness and poor air


Now I could be completely off on this chart here but to me the average levels of Co2 readings would not apply to this one since its starts at 400ppm so I have made a improvised version here with the 3 readings. Just to get an average to go from there this chart can certainly be expanded on and revised but at this point its for demonstration purposes only since I was unable to find a any information on charting for the 400ppm base.  If anyone finds any concrete information on it please comment below or message me.


I am still learning more about the sensors on the board as I go along as well so it  has been an amazing fun journey using the Sensirion Environmental Sensor Shield. Has been great can't wait to do more with it!


Just for fun you can check out Cowspiracy: The Sustainability Secret on Netflix it will give you an in site of why levels have increased from 0-400ppm and who doesn't like more information. Here is the trailer on YouTube.
Below Is the Code for the E.S.S.  With the read out in serial monitor similar to this:
TEMP=20oC RH=49.50 Co2eq=400.00 TVOC=11.0


// we need to include sensirion_ess.h
#include <sensirion_ess.h>
//  Create an instance of SensirionESS
SensirionESS ess;
void setup()
  delay(1000); // let console settle
  // First step is to initialize the sensors; this should only fail if
  // the board is defect, or the connection isn't working. Since there's nothing
  // we can do if this fails, the code will loop forever if an error is detected
  if (ess.initSensors() != 0) {
      Serial.print("Error while initializing sensors: ");
      while (1) { // loop forever
  // The SGP sensor has product type information and feature set stored
  // the following code reads it out, and prints it to the serial console.
  // This is purely to demo the function calls, and is not necessary to operate
  // the sensor
  int type = ess.getProductType();
  int fsVersion = ess.getFeatureSetVersion();
  Serial.print((type == SensirionESS::PRODUCT_TYPE_
SGP30) ? "SGP30" : "SGPC3");
  Serial.print(" detected, running feature set version ");

void loop() {
  float temp, rh, tvoc, eco2 = -1;

  // we'll start by triggering a measurement of the VOC/CO2 sensor;
  // it's important to do this first to make sure sleep timing is
  // correct. If the command succeeds, the local variables will
  // be set to the values we just read; if it fails, they'll be -1
  if (ess.measureIAQ() != 0) {
    Serial.print("Error while measuring IAQ: ");
  } else {
    tvoc = ess.getTVOC();
    eco2 = ess.getECO2(); // SGP30 only

  // next, we'll trigger the humidity and temperature measurement
  if (ess.measureRHT() != 0) {
    Serial.print("Error while measuring RHT: ");
  } else {
    temp = ess.getTemperature();
    rh = ess.getHumidity();

  // finally, let's print those to the serial console
  Serial.print ("TEMP=");
  Serial.print (temp);
  Serial.print ("oC  ");
  Serial.print (rh);
  Serial.print("  ");
  if (ess.getProductType() == SensirionESS::PRODUCT_TYPE_SGP30) {
  Serial.print("  ");
  Serial.print("  ");

  Serial.print(" \n");

  // and then, we'll use remainingWaitTimeMS() to ensure the correct
  // Measurement rate

Once again a big thank you to Element14 and Sensirion for the opportunity to take part in this Road Test.
A huge thank you to Johannes and Reto