AHT10 Temperature & Humidity Sensor

Are you looking for another compact temperature and humidity sensor? If you think the AHT10 is your next sensor to experiment with, stay for a while!

AHT10 Temperature & Humidity Sensor

The datasheet says the AHT10 is a digital temperature and humidity sensor embedded for reflow soldering. The dual-row flat leadless SMD package has a 4x5mm bottom and a height of 1.6mm.

The AHT10 sensor is equipped with a newly designed ASIC, an improved MEMS semiconductor capacitive humidity sensing element and a standard on-chip temperature sensing element. It can output a calibrated digital signal in standard I2C format.

The minuscule sensor has a power supply range of 1.8-3.6V, but 3.3V is the recommended operating voltage. Here is the link to download its official datasheet published by ASAIR® https://server4.eca.ir/eshop/AHT10/Aosong_AHT10_en_draft_0c.pdf

A quick internal view of the AHT10 sensor is below (sorry for the poor image quality).

AHT10 Sensor Module

Since this stamp-sized sensor is tailored to be stamped on a dedicated circuit board through reflow process, it will not be easy for most hobbyists to handle. Fortunately, countless modules based on this sensor are available everywhere on the web at affordable rates.

The AHT10 sensor module has its own onboard linear voltage regulator and a basic logic level shifter circuitry. There is an option to change the default (0x38) I2C address (see later notes).

Let’s examine it in more detail.

Low Dropout Voltage Regulator: The SMD marking “662K” on the voltage regulator chip reveals that it’s the 3.3V regulator LM6206-3.3/XC-6206-3.3 which is a three-terminal high current low voltage regulator implemented in CMOS technology. As learned from a machine-translated Chinese datasheet, it can deliver maximum 100mA of output current and allows input voltages up to 6VDC. The below table shows its key specifications.

Logic Level Shifter Circuit: The logic level shifter consists of a 10Kx4 SMD resistor array network (103) and a 6-pin dual N-Channel MOSFET chip. In some old modules, the MOSFET chip has a part number 702 while in many new modules it’s a different chip marked as K27. Actually, they’re 2N7002DW (702) and 2N7002KDW (K27) chips, and the latter features an integrated ESD protection mechanism.

This is a very simple idea to implement bidirectional level shifting using a couple of N-Channel MOSFETs and a bunch of resistors – the I2C protocol is half-duplex, so bidirectional level translation is required.

The level shifter circuit of the module seems to work without problems. But the datasheets I collected look a little weird, so I’m not sure if K27 is a logic level dual mosfet chip or not!

That SMD part in my AHT10 module has a rather strange marking “RK”.

I2C Address Selection: According to official datasheet, the default I2C address of AHT10 sensor is 0x38, and this address is fixed. The datasheet doesn’t give any information about changing the device address. This implies that only one device can be attached to a single I2C bus at a time. Then why does the module have this option? Despite a thorough investigation, I still do not have a satisfactory answer!

An update: AHT10 may have an alternate I2C address of 0x39, but was not disclosed!

After checking the datasheet several times, I found this line on Page 8 under Figure 11: “Only a single AHT10 can be connected to the I2C bus and no other I2C devices can be connected.”

And that’s it, they cleverly hid a design flaw under this line – No other devices with the AHT10!

I don’t know much about this now. Since my real intention is only a quick examination of the AHT10 sensor module, I can live with it, ie, by wiring a single sensor to the I2C line.

Here is a crude schematic of the AHT10 module (borrowed from web).

Arduino & AHT10

Next, I wired up AHT10 sensor module and Arduino Uno as shown in the below hardware setup diagram.

I also uploaded a simple test code to display sensor readings on the Serial Monitor window. I got some sensible sensor values ​​(temperature, humidity and dew point). Although I didn’t expect it, the AHT10 sensor module worked equally well at both 5V and 3.3V DC.

As an aside, dew point is the temperature the air needs to be cooled to (at constant pressure) in order to achieve a relative humidity (RH) of 100%. At this point the air cannot hold more water in the gas form. If the air were to be cooled even more, water vapor would have to come out of the atmosphere in the liquid form (usually as fog or precipitation). The higher the dew point rises, the greater the amount of moisture in the air (https://en.wikipedia.org/wiki/Dew_point).

This is the test code:

[code]

#include

#include //See the library download
link below!

AHT10Class AHT10;

void setup() {

Serial.begin(9600);

wire.begin();

if
(AHT10.begin(eAHT10Address_Low))


Serial.println(“Init AHT10 Success!”);

else


Serial.println(“Init AHT10 Failed!”);

}

void loop() {


Serial.println(“//Arduino & AHT10//”);


Serial.println(“Quick Test – Serial Monitor”);


Serial.println(String(“”) + “Humidity(%RH):tt” +
AHT10.GetHumidity() + “%”);


Serial.println(String(“”) + “Temperature()
):t”
+ AHT10.GetTemperature() + “
“);


Serial.println(String(“”) + “Dewpoint()
):tt”
+ AHT10.GetDewPoint() + “
“);

delay(1000);

}

[/code]

This quick test code requires an AHT10 Arduino library that can be downloaded from here https://drive.google.com/file/d/1eWu0SyIBI_Z-uZtt1EFNildKNRwckX29/view?usp=sharing

Final Thoughts

I’m happy I got the AHT10 sensor module and Arduino Uno working together. I never expected it to work without problems!

There are still some mysteries, I agree, and I want to dig into it, but I’m tired and lazy!

You can even go a step further. This “hello world” test is the core of a lot of interesting design and possibilities, and if you can get this running there’re many funny things you can explore. Got ideas? I’d love to hear how this little guide has helped you get started 😃

Leave a Comment