Temperature & Humidity
Interfacing AHT10 Temperature & Humidity with Arduino Uno
What is the AHT10?
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 voltage | 2.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 range | 0-100% RH |
| Humidity accuracy | ±2% RH (typical, 0-100% range) |
| Temperature range | -40°C to +85°C |
| Temperature accuracy | ±0.3°C (typical) |
| Resolution | 0.024% RH, 0.01°C |
| Interface | I2C, up to 400kHz (Fast mode) |
| I2C address | 0x38 (fixed, not configurable) |
| Response time | ~8 seconds to 63% of a step change |
AHT10 Pinout
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power, 2.2–5.5V DC depending on breakout |
| 2 | GND | Ground |
| 3 | SCL | I2C clock line |
| 4 | SDA | I2C 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.
Setting Up AHT10 with Arduino Uno
Library
Adafruit AHTX0 by Adafruit
Search "Adafruit AHTX0" in Library Manager (Sketch > Include Library > Manage Libraries)
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VCC | 5V (breakout regulates down) or 3.3V | Most AHT10 breakouts include a regulator, so 5V is fine |
| GND | GND | — |
| SCL | A5 (SCL) | — |
| SDA | A4 (SDA) | — |
Example code
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).
Related Components
Related Guides & Projects

Arduino Uno R3 Pinout: Every Pin Explained (Digital, Analog, PWM, Power)
Complete Arduino Uno R3 pinout reference: all 14 digital pins, 6 analog inputs, PWM, UART, SPI, I2C, AREF, and power rails explained with wiring tips and common mistakes.

Ultimate Arduino Mega 2560 Pinout Guide: Complete Power & I/O Reference
Master the Arduino Mega 2560 pinout. Detailed reference for all 54 digital pins, 16 analog inputs, PWM, UARTs, SPI, I2C, interrupts, and power. Includes a printable table and practical wiring tips.

Interfacing HC-SR04 Ultrasonic Sensor with Arduino
Measure distance accurately using ultrasonic sound waves and an Arduino Uno — no complex math, no expensive hardware.
HC‑SR04 Ultrasound Distance Measurement with Arduino – Parking Alert (LCD & Buzzer)
Learn HC‑SR04 ultrasound distance measurement with Arduino Uno. Build a parking alert system with 16x2 LCD and buzzer – shows distance and beeps faster as you approach.