ESP32 + AHT21 + ENS160 (I²C) – kompletný tutoriál zapojenia a čítania dát
Praktický postup, ako pripojiť kombinovaný senzor AHT21 pre teplotu/vlhkosť a ENS160 pre TVOC/eCO₂ k ESP32, nainštalovať knižnice v Arduino IDE a nahrať ukážkový kód. Vychádza z návodu FMH Studios a dopĺňa overené zdroje ku knižniciam.
Senzory komunikujú cez I²C (SDA/SCL). AHT poskytne referenčnú teplotu/vlhkosť, ktorú odovzdáme ENS160 pre presnejšiu kompenzáciu. Na ESP32 použijeme Arduino core, knižnice Adafruit AHTx0 a ENS160 (Adafruit fork) alebo SparkFun ENS160.
https://dl.espressif.com/dl/package_esp32_index.json → nainštaluj esp32 balík (Espressif).Poznámka: Na combo moduloch ENS160+AHTxx môže ENS160 mierne zohrievať AHT – zvažuj teplotný offset (napr. −5 °C) kalibrovaný podľa reálnych podmienok.

Zdroj: CO2-Sensor ENS160 – ESP32 Tutorial
#include <Wire.h>
#include <Adafruit_AHTX0.h> // AHT20/AHT21
#include "ScioSense_ENS160.h" // ENS160 (Adafruit fork)
#define I2C_SDA 21
#define I2C_SCL 22
Adafruit_AHTX0 aht;
ScioSense_ENS160 ens160(ENS160_I2CADDR_1); // typická adresa 0x53
void setup() {
Serial.begin(115200);
delay(200);
Wire.begin(I2C_SDA, I2C_SCL);
if (!aht.begin()) {
Serial.println("AHT20/AHT21 sa nenašiel. Skontroluj I2C zapojenie.");
while (1) delay(10);
}
Serial.println("AHT inicializovaný.");
if (!ens160.begin()) {
Serial.println("ENS160 sa nenašiel. Skontroluj I2C zapojenie.");
while (1) delay(10);
}
Serial.println("ENS160 inicializovaný.");
// Režim a počiatočná kompenzácia prostredím
ens160.setMode(ENS160_OPMODE_STD);
sensors_event_t hum, tmp;
aht.getEvent(&hum, &tmp);
ens160.setEnv(tmp.temperature, hum.relative_humidity); // °C, %RH
}
void loop() {
sensors_event_t humidity, temp;
aht.getEvent(&humidity, &temp);
ens160.setEnv(temp.temperature, humidity.relative_humidity);
uint16_t tvoc = ens160.getTVOC(); // ppb
uint16_t eco2 = ens160.geteCO2(); // ppm
Serial.print("T = "); Serial.print(temp.temperature); Serial.print(" °C, ");
Serial.print("RH = "); Serial.print(humidity.relative_humidity); Serial.println(" %");
Serial.print("TVOC = "); Serial.print(tvoc); Serial.print(" ppb, ");
Serial.print("eCO2 = "); Serial.print(eco2); Serial.println(" ppm");
Serial.println("---------------------------");
delay(2000);
}
0x38 pre AHT, 0x53 pre ENS160).Wire.begin(SDA,SCL).Jednoduchý, opakovateľný postup pre ESP32 s kombinovaným AHTxx + ENS160 modulom: spoľahlivé zapojenie, overené knižnice a funkčný kód, ktorý vracia T, RH, TVOC, eCO₂ a podporuje kompenzáciu prostredím.