The ScioSense ENS160 is a digital multi-gas sensor tailored for indoor air quality (IAQ) monitoring, delivering fully processed outputs such as eCO₂, TVOC, and AQI. It employs advanced Metal Oxide (MOX) technology combined with on-chip algorithms to ensure high stability and accuracy.
The sensor's on-chip processing provides data including equivalent CO₂ (eCO₂), Total VOC (TVOC), and an Air Quality Index (AQI).
Key Features
Specifications Summary
| Specification | Value |
|---|---|
| Supply Voltage | VDD: 1.71V - 1.98V; VDDIO: 1.71V - 3.6V |
| Interface | I²C (0x53/0x52 selectable address) or SPI |
| Operating Temperature | -40°C to +85°C |
| Operating Humidity | 5% to 95% RH (non-condensing) |
| Dimensions | Compact 3.0mm x 3.0mm x 0.9mm LGA package |
| Warm-up Time | <3 minutes for valid data; 24h+ for optimal accuracy |
The ENS160 is a digital multi-gas sensor from ScioSense that uses metal-oxide (MOX) technology to detect air quality. Most modules (like those from Adafruit, SparkFun, or DFRobot) also include an AHT21 temperature and humidity sensor to provide compensation data for the ENS160, as air quality readings are sensitive to environmental conditions.
If you'd like to support the development of the site with the price of a coffee — or a few — please do so here.
Here's a handy tip: you can quickly save this page as a PDF by clicking “export to PDF” in the menu on the right side of the screen.
Wiring (I²C Mode)
The sensor typically operates on 3.3V or 5V (depending on the breakout board's voltage regulator).
Arduino Example Code
You will need to install the Adafruit ENS160 and Adafruit AHTX0 libraries via the Arduino Library Manager.
#include <Wire.h> #include <Adafruit_ENS160.h> #include <Adafruit_AHTX0.h> Adafruit_ENS160 ens160; Adafruit_AHTX0 aht; void setup() { Serial.begin(115200); Wire.begin(); // Initialize AHT21 (Temperature/Humidity) if (!aht.begin()) { Serial.println("Could not find AHT sensor!"); while (1); } // Initialize ENS160 (Air Quality) if (!ens160.begin()) { Serial.println("Could not find ENS160 sensor!"); while (1); } // Set operating mode: STANDARD, DEEP_SLEEP, or IDLE ens160.setMode(ENS160_OPMODE_STD); } void loop() { sensors_event_t humidity, temp; aht.getEvent(&humidity, &temp); // Send environmental data to ENS160 for better accuracy ens160.setTempHum(temp.temperature, humidity.relative_humidity); if (ens160.available()) { ens160.measure(true); // Perform measurement Serial.print("AQI: "); Serial.print(ens160.getAQI()); // 1 (Excellent) to 5 (Unhealthy) Serial.print(" | TVOC: "); Serial.print(ens160.getTVOC()); Serial.print(" ppb"); Serial.print(" | eCO2: "); Serial.print(ens160.geteCO2()); Serial.println(" ppm"); } delay(2000); // 2-second interval recommended }
Key Sensor Outputs
The ENS160 provides fully processed air quality data:
Important Notes
This page has been accessed for: Today: 4, Until now: 5