想测大棚温湿度、给机房做个温湿度告警,DHT22(也叫AM2302)是很多人的首选,精度比入门款DHT11高一截,湿度分辨率也更细。但这颗传感器看着就三根线,坑却不少,尤其那个上拉电阻,少了它读数直接全废。这篇把接线和读取的两个致命点讲清。
裸芯片和成品模块,接线不一样
先分清你手上是哪种:成品的AM2302模块板载已经焊好了上拉电阻,三根线VCC、DATA、GND接上就能用;但你单独买到的是裸的4脚DHT22芯片,DATA引脚靠外部上拉电阻保持高电平,没有它单总线根本稳定不下来,读数会超时或一直爆校验错。
接通之后的第一坑:缺上拉电阻
DATA那根线空闲时是悬空的,靠上拉到VCC才拿得住高电平。裸传感器通常在DATA和VCC之间要加一颗4.7k到10k欧的电阻,成品模块已内置,别再额外并一颗——并了可能干扰信号。这就是很多人用裸芯片死活读不出来的原因。

读取别太勤,隔两秒再读一次
DHT22内部大约每两秒才刷新一次读数。你要是每秒都去读,返回的要么是上一次的缓存值(看起来像温度卡住不动),要么直接报校验失败。反过来读得太急,还容易把数据线拉久,让整个通信乱掉。
上电之后也别马上就读,传感器要大约一秒左右稳定下来,上来就问容易失败,先加个短暂延时再发起第一次请求。

引脚顺序别靠位置猜
裸芯片和成品的引脚排列不一样,裸的还有一个NC脚悬空。有些新手按着位置而不是看丝印接线,把电源和数据搞反,要么没反应要么把传感器摸得发烫。一定照着标注来,NC就别接。
数字口别乱挑
虽然原理上能接任意数字口,但别用0和1号口,那是串口下载用的,烧录时会捣乱,D2这种干净的口最省事。接线时GND直接回主控的同一地平面,别绕太远,避免引入噪声读数漂。
配上Adafruit的DHT库,几行代码就能连续读出温度和湿度。要是总是Failed to read,九成是上拉电阻的锅,先补上再说。


两秒一读那条提醒得好,我之前每秒读,温度像卡住不动,还以为是传感器坏了
引脚排列别猜,我照位置接结果把电源和数据搞反,传感器顺着烫,白折腾一下午
上拉电阻没了真的整个读数全废,我裸芯片用之前一直校验失败,补上4.7k就好,太值了