13. 温度和湿度

DHT(数字湿度和温度)传感器是低成本数字传感器,带有电容式湿度传感器和热敏电阻,用于测量周围空气。它们具有处理模数转换并提供 1 线接口的芯片。较新的传感器还提供 I2C 接口。

DHT11(蓝色)和 DHT22(白色)传感器提供相同的 1 线接口,但 DHT22 需要一个单独的对象,因为它具有更复杂的计算。DHT22 的湿度和温度读数具有 1 位小数分辨率。DHT11 两者都有整数。

与达拉斯 1-wire 不同的自定义 1-wire 协议用于从传感器获取测量值。有效载荷由湿度值、温度值和校验和组成。

要使用 1-wire 接口,请构造引用其数据引脚的对象:

>>> import dht
>>> import machine
>>> d = dht.DHT11(machine.Pin(4))

>>> import dht
>>> import machine
>>> d = dht.DHT22(machine.Pin(4))

然后使用以下命令测量和读取它们的值:

>>> d.measure()
>>> d.temperature()
>>> d.humidity()

返回的值temperature()以摄氏度为单位,返回humidity() 的值是相对湿度的百分比。

DHT11 每秒调用一次,DHT22 每两秒调用一次以获得最准确的结果。传感器精度会随着时间的推移而降低。每个传感器支持不同的工作范围。有关详细信息,请参阅产品数据表。

在 1-wire 模式下,仅使用四个引脚中的三个,而在 I2C 模式下,使用所有四个引脚。较旧的传感器可能仍然有 4 个引脚,即使它们不支持 I2C。第 3 个引脚根本没有连接。

引脚配置:

1 线模式下不带 I2C 的传感器(例如 DHT11、DHT22、AM2301、AM2302):

1=VDD,2=数据,3=NC,4=GND

1 线模式下具有 I2C 的传感器(例如 DHT12、AM2320、AM2321、AM2322):

1=VDD,2=数据,3=GND,4=GND

I2C 模式下具有 I2C 的传感器(例如 DHT12、AM2320、AM2321、AM2322):

1=VDD, 2=SDA, 3=GND, 4=SCL

您应该为数据、SDA 和 SCL 引脚使用上拉电阻。

要使较新的 I2C 传感器在向后兼容的 1 线模式下工作,您必须将引脚 3 和 4 都连接到 GND。这将禁用 I2C 接口。

DHT22 传感器现在以 AM2302 的名称出售,其他方面完全相同。