# Environmental sensor module, ENS160+AHT21, temperature, humidity, VOC, 5V

- Page: https://sigmanortec.ro/en/environmental-sensor-module-ens160aht21-temperature-humidity-voc-5v
- Price: 53.51 RON
- Availability: In stock; 1-2 zile
- Reference: 88121 · EAN: 5948292393538
- Category: Mechatronics and IoT > Sensors and Modules > Gas and Air Quality Sensors
- Specifications: Input Voltage: 5 V; Input Voltage Type: “DC” in Romanian can mean **“de ce”**, which translates to **“why”** in English.
- Package (shipping data): 0.005 kg
- Updated: 2026-09-14
- Shop: [Sigmanortec.ro](https://sigmanortec.ro/en/llms.txt)
- Prices: RON, VAT included; prices and stock as of 2026-10-22 05:45 (Europe/Bucharest)

## Description

Compact solution for monitoring indoor air quality, measuring temperature and humidity and detecting VOC for smart home and HVAC automation. It connects quickly to Arduino and other platforms via I2C or SPI, operates at 5V with low consumption of approximately 10mA, offers a wide measurement range and is easy to mount due to its small size.
The ENS160 + AHT21 module is a compact solution for complete indoor air monitoring, combining temperature and humidity measurement with gas and volatile organic compound detection.
Integrating the two sensors into a single board gives you stable data for smart home and HVAC automation, and I2C or SPI communication makes connecting to Arduino and other platforms simple.
It has a low consumption of approximately 10mA, 5V power supply, small dimensions and a weight of only 3g, making it easy to mount even in narrow housings.
The module includes voltage regulators on the board, so powering via VIN at 5V is appropriate, and the 3V3 pin is a low current output from the regulator and is not recommended to be used to power other consumers.
Specifications:
Supply voltage: 5V
Consumption: approximately 10mA
Communication interface: I2C, SPI
Gas and VOC detection: ozone, formaldehyde, ammonia, ethanol and other volatile organic compounds
VOC measurement range: 0-65535 ppb
ENS160 humidity range: 5-95% RH
ENS160 temperature range: -40-85C
ENS160 start time: under 60 minutes
AHT21 temperature range: -40-120C
AHT21 humidity range: 0-100% RH
AHT21 temperature accuracy: ±0.3C
AHT21 humidity accuracy: ±2% RH
AHT21 temperature resolution: 0.01C
AHT21 humidity resolution: 0.025% RH
Dimensions: 24 x 20mm
Pinout:
Module pin | I2C on Arduino UNO | SPI on Arduino UNO | Observations
WINE | 5V | 5V | 5V power supply for the module
3V3 | Unused | Unused | 3.3V output from voltage regulator, low power
GND | GND | GND | Common table
SCL/SCLK | A5 SCL | D13 SCK | I2C clock or SPI clock
SDA/MOSI | A4 SDA | D11 MOSI | I2C or MOSI data in SPI
ADD/MISO | optional GND or 5V | D12 MISO | In I2C it can set the address, in SPI it is MISO
CS | unused | D10 CS | Chip Select, you can also use another digital pin
INT | optional D2 or D3 | optional D2 or D3 | Interrupt, optional, useful for alerts or event reading
Use:
Power the module with 5V on VIN and connect common GND to the development board.
For I2C connect SDA and SCL to the dedicated pins of the board, for SPI use the specific pins and configure the library accordingly.
After powering up, let the ENS160 sensor stabilize, for relevant readings it is recommended to wait the 30 minute start-up period.
Mount the module in an area with representative airflow, away from condensation, water droplets, and direct heat from sources such as radiators or power boards.
For ventilation projects, use the VOC value as an indicator for increasing flow, and temperature and humidity for comfort control.
Avoid powering other consumers from the 3.3V. For safety, it is preferable to leave it unused.
Test Code:
/*
Test ENS160 + AHT21 module on Arduino using I2C
Displays: temperature, humidity and VOC in Serial Monitor
Typical I2C connections:
- Arduino UNO/Nano: SDA = A4, SCL = A5
- Arduino Mega: SDA = 20, SCL = 21
- 3.3V boards (ESP32, RP2040 etc): uses the board-specific I2C pins
Power supply: 3.3V recommended
*/
\#include
\#include "AHT21.h"
\#include "ENS160.h"
// Sensor objects
AHT21 aht21;
ENS160 ens160;
// Display time
unsigned long lastPrint = 0;
const unsigned long intervalMs = 2000;
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial)
{
delay(10);
}
Serial.println("Starting ENS160 + AHT21 test...");
// Initialize AHT21
if (!aht21.begin())
{
Serial.println("AHT21 initialization error!");
while (1)
{
delay(100);
}
Serial.println("AHT21 OK");
// Initialize ENS160
if (!ens160.begin())
{
Serial.println("ENS160 initialization error!");
while (1)
{
delay(100);
}
Serial.println("ENS160 OK");
// Optional: set ENS160 operating mode
// If the library allows:
// ens160.setOperatingMode (ENS160_OPMODE_STANDARD);
Serial.println("Waiting for the ENS160 sensor to stabilize, the first values may vary.");
}
void loop()
{
// Reading AHT21
float temp = aht21.readTemperature ();
float rh = aht21.readHumidity ();
// Optional: T/RH compensation for ENS160
// ens160.setTempHumidity (temp, rh);
// Read VOC
uint16_t voc = ens160.readVOC();
// Display at fixed interval
if (millis() - lastPrint >= intervalMs)
{
lastPrint = millis();
Serial.print("Temperature: ");
if (isnan(temp))
Serial.print("N/A");
else
Serial.print(temp, 2);
Serial.println("C");
Serial.print("Humidity: ");
if (isnan(rh))
Serial.print("N/A");
else
Serial.print(rh, 2);
Serial.println(" %");
Serial.print("VOC: ");
Serial.print(voice);
Serial.println("ppb");
Serial.println("---------------------------");
}
