Skip to content
environmental

AHT10 I2C Temperature & Humidity Sensor

A tiny I2C sensor that packs temperature and humidity sensing into the smallest footprint possible.

A compact I2C temperature/humidity sensor that replaced the DHT11/DHT22 in many designs thanks to its digital calibration and low power draw.

Specifications

Supply voltage2.2V–5.5V (breakout modules commonly run at 3.3V or 5V via onboard regulation)
Operating current~0.25 mA during measurement, <0.01 mA average in idle/standby
Humidity range0-100% RH
Humidity accuracy±2% RH (typical, 0-100% range)
Temperature range-40°C to +85°C
Temperature accuracy±0.3°C (typical)
Resolution0.024% RH, 0.01°C
InterfaceI2C, up to 400kHz (Fast mode)
I2C address0x38 (fixed, not configurable)
Response time~8 seconds to 63% of a step change

Pinout

PinNameDescription
1VCCPower, 2.2–5.5V DC depending on breakout
2GNDGround
3SCLI2C clock line
4SDAI2C data line

Fixed I2C address — the AHT10 has no address-select pin, so its 0x38 address cannot be changed. If your project needs two AHT10s on one bus, you'll need an I2C multiplexer (e.g. TCA9548A) rather than an address pin trick.

Pull-up resistors — most breakout boards already include their own 10kΩ pull-ups on SDA/SCL. If you're combining several I2C breakouts on one bus, having pull-ups on every single board isn't harmful but is redundant — it just lowers the effective resistance a bit. It only becomes a real problem with many boards stacked at once.

Initialization matters — unlike the DHT11/22, the AHT10 expects a specific init sequence after power-up (a calibration-enable command, typically 0xE1 0x08 0x00) before its first reading is trustworthy. Most libraries (Adafruit_AHTX0, etc.) handle this automatically — if you're talking to it with raw Wire.h calls, check the datasheet command table first.

Check the calibration bit — each status byte returned by the sensor includes a "calibrated" flag. Skip acting on the very first reading after power-up until that bit is set, or you risk reading pre-calibration noise as valid data.

Variants

The AHT10 is the safe default for most builds and has the largest base of example code. If you're starting a new design from scratch, the AHT20 is worth the small price bump for better accuracy and a faster response — it uses the exact same I2C address and library calls, so swapping later requires no code changes either way.

VariantTemp rangeHum rangeAccuracyProtocolPrice
AHT10~$1-3
AHT20~$2-4
AHT21~$2-4
DHT22~$3-5

Board Integration

Library

Adafruit AHTX0by Adafruit

Search "Adafruit AHTX0" in Library Manager (Sketch > Include Library > Manage Libraries)

Wiring

Component pinBoard pinNote
VCC5V (breakout regulates down) or 3.3VMost AHT10 breakouts include a regulator, so 5V is fine
GNDGND
SCLA5 (SCL)
SDAA4 (SDA)

Code

C++

Notes

The Adafruit AHTX0 library covers both the AHT10 and AHT20 — same API either way. Default I2C address is 0x38, fixed (no address-select pin on most breakouts).