做气象站、温室大棚、或者给设备加上“卡湿度”的保护功能,一块准一点的温湿度传感器很关键。AHT20是这几年 DIY 里用得越来越多的国产温湿度模块,精度不错、价格便宜,走I2C接口。这篇文章把接线和几个坑讲清楚。

引脚认识:四根线两个信号
AHT20模块一般引出VCC、GND、SCL、SDA四个脚。VCC接Arduino的3.3V或5V,GND接GND,SCL和SDA分别接I2C的时钟和数据线。在Uno上就是A5和A4,很多用ESP32的也可以直接接I2C默认脚。
它走路的是标准的I2C协议,和很多传感器不同的是,它的默认地址是0x38——这一点要特别注意,因为很多I2C芯片默认是0x76或者0x40,照抄错误的库或地址就读不出来了。

接线之后,代码两件事
第一件是初始化:给模块上电后要稍等一下,让内部振荡器稳定,再发初始化命令。过早读取常常返回异常数据,这是AHT20的常见坑,很多教程都提醒上电后先延迟几十到几百毫秒。
第二件是读取流程:先发触发测量命令,再读回6个字节的原始数据,最后用官方给出的校准公式把那几个字节换算成温度和湿度百分比。用现成的Adafruit AHT20库或国产库,这几步都是封装好的,直接读temperature和humidity就行。
三个高频坑提前避开
坑一:地址是0x38不是0x76,拷贝别人的ESP3266代码贴过来就会出错。
坑二:测量间隔不要太密,AHT20每次测量后需要一点恢复时间,连着狂读会读到上次数值或失败码。
坑三:传感器怕结露,直接暴露在高湿度水汽里久了会读数漂移甚至失效,做环境箱要给它一些通风或遮挡处理。
搞定这些,一个自动补湿的小温室、一个带湿度的天气盒子,都能很快搭起来。







高湿结露会漂移,做温室箱一定要给传感器留通风,别闷着
上电后要等一会儿再读,我急着读返回一堆异常数据,真事
测量太密会读到旧值,加个恢复时间就正常了,这个细节很关键
地址是0x38不是0x76,我抄通用I2C代码读半天读不出来,卡了一晚上