RoadTest: Sensirion Gas/Temp/Humidity Sensor Kit
Author: jamadmad
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?: Temperature and relative humidity sensor DHT22
What were the biggest problems encountered?: Identify the pins of the LEDs when the board is not connected on an Arduino directly.
Detailed Review:
The Sensirion ESS board was evaluated. The board is suitable for work with Arduino. The company provides all the libraries and the information to use the board quickly and easily. In this review the temperature and humidity sensor SHTC1 was compared with a well know temperature and humidity sensor DHT22. Both sensor have been tested under different environments. Showing the results obtained, SHTC1 is more precise and fast than DTH22. Also, STHC1 is more compact than DHT22.
The air quality sensor SGP30 was tested. In my opinion, this sensor has a broad potential to evaluate the air quality inside vehicles, houses, hospitals, hotels, or whatever building. For example, it could be used to know when it is necessary to ventilate a room or implementing an automatic ventilation system. This application could be fascinating nowadays to avoid COVID19 infections.
At first, my idea was to test the environmental sensor shield ESS using lab equipment and also compare the temperature sensor with an optical fiber temperature sensor. Unfortunately, that was not possible because, in Spain, we are on lockdown since March due to COVID19. To test the sensors, I had to rethink the testings. I have to perform the test using the material and the electronic devices that I had in home. Nevertheless, the results are pretty good. Please find below the review.
Sensirion is a Swiss company with more than 15 years’ experience in manufacturing high-quality sensors and sensors solutions for industrial, medical, automotive and consumer electronics applications. This company offers an extensive product range including gas and liquid flow sensors, differential pressure, as well as environmental sensors for the measurement of humidity and temperature, volatile organic compounds (VOCs), carbon dioxide (CO2) and particulate matter[1]. The product to analyze in this document is the Sensirion Environmental Sensor Shield (ESS) that features SHTC1 temperature and humidity sensor along with an SGP30 total VOC and CO2eq sensor[2].
The box only included the ESS board, and a brief getting started instructions. The ESS was inside an antistatic bag to protect it against electrostatic discharges. Figure 1 shows the boxed and unboxed components. The ESS board includes the two sensors and 3 additional LEDs (green, red, and yellow). The board has two different pinouts, one for connecting the board directly on an Arduino and another for connecting the board to Arduino or whatever platform. Figure 2 shows the front and back faces of the ESS board, and figure 3 shows a detailed view of the sensors. The sensors and its I2C direction are labeled on the board. The Arduino pins number for each led is inscribed on the board. These pins numbers are only useful when you connect the ESS directly on Arduino. If you need to connect the LEDs in another platform, you need to use the pins marked in figure 2.
Figure 1. ESS inside box view and unboxed components.
Figure 2 Front face and back face of the ESS.
Figure 3. Detailed view of the sensors.
This section summarizes some useful technical data about the ESS board and the sensors SHTC1 and SGP30. Further information about the sensors and the ESS information can be found in the web site of Sensirion[1-7], and in interesting open-access scientific paper related to SGP30 [8].
For boards using the Arduino footprint, the board can simply be plugged in by aligning the pin headers and pushing down. For boards that don’t follow the Arduino footprint, simply to use four cables and connect the four pins on the back of the ESS to the corresponding ports on the reference design or use an adapter board. The ESS can work with both 3.3V and 5V designs [2]. Both sensors are digital and use the I2C bus. The libraries, source code and getting started guide to use the ESS with Arduino or Cypress WICED SDK is available on the Sensirions’ webpage [2].
The following data was compiled from SHTC1 datasheet[5].Figures 4 and 5 show the typical RH and temperatures tolerances of the SHTC1.
Operating temperature Range | -30 to +100ºC |
Relative Humidity range | 0 to 100 %RH |
Relative Humidity Resolution |
|
Temperature Resolution |
|
Figure 4. Typical and maximal tolerance for relative humidity at 25º and tolerance for temperature sensor [6].
Figure 5. Typical accuracy of relative humidity measurements.
The SGP30 is a digital multipixel gas sensor that provides information about the air quality. The air quality signals Total Volatile Organic Compounds (TVOC) and Dioxide carbon equivalent (CO2eq) are calculated from Ethanol and H2 measurements using internal conversions and compensations [7,8], see figure 6. More information about the SGP30 working principle and its interesting special characteristics scan be found in [8]. The air quality signal specifications and maximum and minimum ratings are summarized in figure 7 and 8. More details can be found in[7].
Figure 6. Simplified version of block diagram of SGP30 [7].
Figure 7. Air quality signal specifications [7].
The SHTC1 was compared with the Aosong DHT22 (AM2302), a popular temperature and relative humidity for Arduino Do It Yourself (DIY) projects. The DHT22 was attached close to SHTC1, see figure 9. The experimental setup was mounted using an Arduino DUE board, see figure 10. Additionally, SSD1306(0,96”) OLED display was connected to the I2C bus to visualize the temperature, humidity, VOC and CO2 eq data from the ESS sensors every second, see figure 11. The data logging was performed in two ways, locally and remotely using an Internet of Things (IoT) platform. For the local data logging, the data of the SHTC1, SGP30, and DHT22 were recorded in a microSD card using an Arduino microSD module. The data were stored in a plane text file with a sampling period of 1s. In remote data logging, only the data of SHTC1 and SGP30 were recorded with a sampling period of 30 s. The data were sent to the IoT platform using the well-known ESP-01 Wi-Fi module. The IoT service was ThingSpeakTM, an IoT analytics platform service that allows you to aggregate, visualize, and analyze live data streams in the cloud [9]. Also the data can be visualized in an smartphone using an App. Figure 12 shows how the data are visualized using the IoT service.
Figure 9 DHT22 attached close to SHTC1 sensor.
Figure 10. Picture of the setup.
Figure 11. Detailed view of the OLED display and a video when the sensor was inside the freezer. The displayed data was measured with SHTC1.
Figure 12. Screen capture of the ThingSpeakTM webpage showing the live data of SHTC1 and SGP30 sensors under test.
The sensor testing measurement was divided in different parts:
The idea was measuring the response of the temperature sensors with slow temperature changes. A homemade climate chamber was fabricated using recycled computer parts electronics components and other parts that I had in home, see figure 13. The insulated chamber was made using an expanded polystyrene case, see figure 14. The heater/ cooler device was made using a controlled Peltier module and two CPU heatsink with fans, one fan to cool the Peltier and the other to recirculate the air inside the chamber. The control of the temperature was made using the commercial Peltier controller MAX1978 Evaluation board.
Figure 13. Picture of the heater/cooler device.
Figure 14. Pictures of the climatic chamber outside and inside views.
The ESS board and the attached DHT22 sensor were placed inside the climate chamber, see figure 14, and the front cover of the camber was closed. Then, the heater/cooler temperature was changed 3 times, first 8º then 19ºC, then 40ºC approximately, and finally, the Peltier was turned off. The data was recorded in a text file and processed with MATLAB® [10]. Figures 15 and 16 show the results obtained. It can be noted that the climate chamber has slight temperature losses because it is a homemade climatic chamber and it is not calibrated.
Figure 15. Temperature measured with SHCT1 and DHT22.
Figure 16. Zoom of figure 15, temperatures measurements from minute 92 to minute 100.
Both sensors follow the slow temperature changes. However, if we compare the value of the temperature measured with each sensor, it can be note a slight deviation. We can not ensure which sensor value is more close to the correct temperature value because the climate chamber is not calibrated. Nevertheless, showing figure 16, we can note that the error of the DHT22 is higher than SHCT1.
For fast temperature changes experiments, in the first part, the sensors were put inside the freezer at 13ºC approximately. In the second part, the sensors were put inside the oven at 80ºC approximately. Figure 17 and 18 show the results obtained. Showing the results we can be noted the DHT22 has a slower response to fast temperature changes.
Figure 17.Temperature measurements for fast temperature down using a domestic freezer.
Figure 18. Temperature measurements for fast temperature increment using a domestic oven.
For slow relative humidity meauremetns, the sensor was placed into a small hermtic container with desiccant. The desiccant used was Drierite™ gypsum (Calcium Sulfate).
Figure 19. Relative humidity measured when the sensor was put into a container with desiccant.
For fast relative humidity changes experiments, in the first part, the sensors were put inside a dry environment, domestic oven at 80ºC approximately. In the second part, the sensors were put inside a wet environment, the bathroom while the shower was throwing hot water. Figures 20 and 21 show the results obtained.
Figure 20. Relative humidity measurements for fast relative humidity down using a domestic oven.
Figure 21. Relative humidity measurements for fast relative humidity increment when the sensor was placed inside the bathroom.
Two experiments were performed to test the SGP30 sensor. For the first experiment, the sensors were placed inside a bedroom when a person was sleeping. The data were recorded during all night. Figures 22,23 and 24 show the results obtained.
Figure 22. Temperature inside the bedroom.
It can be noted in figure 22 that temperature measurement error more significant in DHT22 than SHTC1.
Figure 23.Relative humidity inside the bedroom.
Figure 24. Air quality inside the bedroom. VOC and CO2 measurements.
For the second experiment, the sensor was placed in a room and a acetone drop was spilled. Figure 25 shows the results obtained.
Figure 25. VOC and CO2 eq when acetone was spilled inside a room.
The Sensirion ESS board was evaluated. The board is suitable for work with Arduino. The company provides all the libraries and the information to use the board quickly and easily. Besides the sensors, the board includes three LED of different colors (green,yellow and red). These LEDs are useful to implement a display to know when a parameter is below or reaches a certain threshold.
The temperature and humidity sensor SHTC1 was compared with a well know temperature and humidity sensor DHT22. Showing the results obtained, SHTC1 is more precise and fast than DTH22. Also, STHC1 is more compact than DHT22.
The air quality sensor SGP30 was tested. In my opinion, this sensor has a broad potential to evaluate the air quality inside automotive vehicles, houses, hospitals, hotels, or whatever building and automotive vehicles. For example, it could be used to know when it is necessary to ventilate a room or implementing an automatic ventilation system. This application could be fascinating nowadays to avoid COVID19 infections.
[1] https://www.sensirion.com/en/
[2] https://developer.sensirion.com/platforms/environmental-sensor-shield/
[4] https://www.sensirion.com/en/environmental-sensors/gas-sensors/multi-pixel-gas-sensors/
[8] Rüffer, D.; Hoehne, F.; Bühler, J. New Digital Metal-Oxide (MOx) Sensor Platform. Sensors 2018, 18, 1052.
[10] https://www.mathworks.com/products/matlab.html
#include <SPI.h> #include <Wire.h> #include <SD.h> #include "DHT.h" #include <sensirion_ess.h> #include <Adafruit_SSD1306.h> #define DHTPIN 9 #define DHTTYPE DHT22 #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 32 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); SensirionESS ess; float temp,rh,voc,co; const int chipSelect = 10; volatile int k=0; DHT dht(DHTPIN, DHTTYPE); float sensor_data[2]; void setup() { Serial.begin(9600); Serial3.begin(9600); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 failed")); } delay(100); display.clearDisplay(); if (!SD.begin(4)) { Serial.println("SD Card failed"); } File File1 = SD.open("Sensiri.txt", FILE_WRITE); if (File1) { File1.println("%---------------------------%"); File1.close(); } else{Serial.println("Sensirion.txt fail");} ess.initSensors(); Serial.println("Configured...."); } void loop() { ess.measureIAQ(); ess.measureRHT(); temp=ess.getTemperature(); rh=ess.getHumidity(); voc=ess.getTVOC(); if (ess.getProductType() == SensirionESS::PRODUCT_TYPE_SGP30) { co=ess.getECO2(); } float dht_h = dht.readHumidity(); float dht_t = dht.readTemperature(); delay(ess.remainingWaitTimeMS()); k=k+1; display_data(temp,rh,voc,co); String data=String(millis())+";;"+ String(temp) +';'+ String(rh) +';'+ String(voc) +';'+ String(co) +' '+ "DHT22; "+String(dht_t)+';'+String(dht_h); File File1 = SD.open("Sensiri.txt", FILE_WRITE); if (File1) { File1.println(data); File1.close(); Serial.println(data); } else{Serial.println("Sensirion.txt fail");} if(k>=30) { send_data(temp,rh,voc,co); k=0; } } void display_data(float temp, float rh, float voc, float co){ display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.print(F("Temperature: ")); display.print(temp); display.println(F(" C")); display.print(F("R Humidity: ")); display.print(rh); display.println(F(" %")); display.print(F("VOC: ")); display.print(voc); display.println(F(" ")); display.print(F("CO2 eqv: ")); display.print(co); display.println(F(" ")); display.display(); //delay(1000); } void send_data(float temp, float rh, float voc, float co){ String trama; trama= String(temp) + ";" + String(rh) + ";" + String(voc) + ";" + String(co); Serial3.println(trama); }
#include <ESP8266WiFi.h> String apiKey = "secret"; //API KEY const char* ssid = "secret"; // Wi-Fi SSID const char* password = "secret"; // Wi-Fi Pasword const char* server = "api.thingspeak.com"; int data1, data2, data3, data4, data5, ok; WiFiClient client; unsigned char buff[10], i; String buffer1, buffer2; void setup() { Serial.begin(9600); delay(100); WiFi.begin(ssid, password); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(700); } } void loop() { float datos[4]={-1,-2,-3,-4}; int k; if (Serial.available()>0){ k=0; while(Serial.available() > 0 && k<=3){ datos[k]=Serial.parseFloat(); Serial.print(k); Serial.print(": "); Serial.println(datos[k]); k=k+1; } if (client.connect(server, 80)) { String postStr = apiKey; postStr += "&field1="; postStr += String(datos[0]); postStr += "&field2="; postStr += String(datos[1]); postStr += "&field3="; postStr += String(datos[2]); postStr += "&field4="; postStr += String(datos[3]); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); Serial.println(postStr); } client.stop(); } }
Top Comments
Really interesting review. I liked your home brew temperature chamber !
Any idea what is causing the spikes on fig 24 ?
Thanks.
MK
I have some hypotheses, but at the moment, I'm not entirely sure about what is causing these spikes. These last weeks I have been doing more measurements. In a few days, I'm will analyze the data and…