DHT温湿度传感器的介绍,dht

概述

本教程介绍了低成本的DHT温湿度传感器。这些传感器非常基础且速度慢,但是对于想要进行一些基本数据记录的业余爱好者来说非常有用。 DHT传感器由两部分组成:电容式湿度传感器和热敏电阻。内部还有一个非常基本的芯片,可以进行一些模拟到数字的转换,并发出带有温度和湿度的数字信号。使用任何微控制器都可以轻松读取数字信号。

DHT11与DHT22

我们有两个版本的DHT传感器,它们看起来有点相似,并且具有相同的引脚排列,但是具有不同的特性。规格如下:

DHT11

超低成本

3至5V电源和I/O

转换过程中使用的最大电流为2.5mA(在请求数据时)

适用于20-80%的湿度读数,精度为5%

适用于0-50°C温度读数±2°C精度

采样率不超过1 Hz(每秒一次)

机身尺寸15.5mm x 12mm x 5.5mm

4间距为0.1“的引脚

DHT22

低成本

3至5V电源和I/O

转换期间最大电流消耗为2.5mA(在请求数据时)

适用于0-100%的湿度读数,精度为2-5%

适用于-40至80°C温度读数,精度为±0.5°C

采样率不超过0.5 Hz(每2秒一次)

机身尺寸15.1mm x 25mm x 7.7mm

4个间距为0.1“的引脚

如您所见,DHT22在稍大的范围内精度更高,性能更好。两者都使用单个数字引脚,因此它们“呆滞”,因为您每秒钟查询一次或两次都不会超过一次。

您可以从adafruit商店拿起DHT11和DHT22!

连接到DHTxx传感器

幸运的是,连接这些传感器很简单,它们具有相当长的0.1“间距引脚,因此您可以将它们插入任何面包板,穿孔板或类似。

AM2302(有线DHT22)温湿度传感器

产品ID:393

AM2302是DHT22的有线版本,采用大型塑料主体,是一种基本的低成本数字温度和湿度传感器。。..

$ 15.00

库存

添加到购物车

连接DHT传感器非常容易,它们有四个引脚

VCC -红色导线连接到3.3-5V电源,有时3.3V电源是不够的在这种情况下,请尝试使用5V电源。

数据输出-白色或黄色电线

未连接

接地-黑线

只需忽略引脚3,它就不会使用。您将需要在VCC和数据引脚之间放置一个10 Kohm电阻,以充当数据线上的中等强度上拉电阻。 Arduino内置了可以打开的上拉电阻,但它们非常弱,大约20-50K

DHT22和AM2302通常已经在内部装有一个上拉电阻,但是添加另一个上拉电阻也没有问题!

此图显示了我们如何连接测试草图。将数据连接到引脚2,您可以稍后将其更改为任何引脚。

如果您有AM2302

使用DHTxx传感器

要测试草图,我们将使用Arduino。您可以使用任何可以执行微秒计时的micrcontroller,但由于要对其进行编码有些棘手,因此我们建议验证Arduino的接线和传感器是否正常工作。

您应该使用 Arduino IDE 软件目前正在运行。接下来,需要安装我们的DHT库,可以通过Arduino库管理器完成:

素描→包含库→管理库…

输入“ dht ”,然后在列表中浏览“ Adafruit 的 DHT传感器库”。单击“安装”按钮,或“

div》

重要信息::从DHT库的1.3.0版本开始,您还需要安装 Adafruit_Sensor 库,该库也可在Arduino库管理器:

现在加载示例→DHT→DHTtester 草图

如果您使用的是 DHT11 传感器,请添加注释设置类型的行:

下载:文件

复制代码

//#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT22 // DHT 22 (AM2302)

,并取消注释以下行:

下载:文件

复制代码

#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT11 // DHT 11

此将使数据对于正确的传感器正确显示。上载草图!

您应该看到温度和湿度。呼吸传感器可以看到变化(就像您要雾化窗户一样),这会增加湿度。

您可以在线路上添加任意数量的DHT传感器单个引脚,只需在初始DHT dht2 = DHT(pin, type);对象的声明下方添加新行,例如

dht

,就可以引用新的dht2随时随地。

DHT CircuitPython代码

Adafruit CircuitPython模块安装

要在您的Adafruit CircuitPython板上使用DHT传感器,您需要在您的板上安装Adafruit_CircuitPython_DHT模块。

首先请确保您为该板上运行了最新版本的Adafruit CircuitPython。特别是对于 Gemma M0,Trinket M0和M0基本板,您必须运行CircuitPython 2.1.0或更高版本才能访问必要的Pulseio模块!

下一步,您将需要安装必要的库才能使用硬件-仔细按照以下步骤从Adafruit的CircuitPython库捆绑中查找并安装这些库。我们的简介指南上有一个很棒的页面,介绍如何为快速和非表达板安装库包。

请记住非表达板,例如,您需要从束中手动安装必要的库:

adafruit_dht.mpy

您也可以从其发行页面下载 adafruit_dht.mpy

。在继续之前,请确保您开发板的lib文件夹或根文件系统已复制 adafruit_dht.mpy 模块。

接线

DHT接线非常简单:

最左边的引脚是电源。我们建议使用5V供电(有时3V是不够的)-即使您使用的是3.3V逻辑,也可以这样做

第二个引脚是 data 。从该引脚连接一个10K上拉电阻至3.3V。如果您使用的是DHT11,则是必需的。如果您使用的是DHT22或AM2302,则有时可以将其关闭

跳过第三个引脚

最右边的引脚是接地

对于DATA引脚,您必须选择一个具有PWM支持的引脚(pulseio )-检查电路板的指南,了解哪些引脚可以使用计时器

以下是使用小饰品M0的示例-您可以使用任何CircuitPython开发板,只需检查Data引脚是否为pulseio-

在在此示例中,我们将使用连接到D6引脚的Feather M0和DHT22传感器

Fritzing Source

用法

演示DHT传感器模块的用法,您可以将其连接到开发板的串行REPL并运行读取温度和湿度的Python代码。

下一步连接到开发板的串行REPL,因此您位于CircuitPython的》》》 提示符下。

下一步导入 board 和 adafruit_dht 模块,这些是初始化和访问传感器的必要模块:

下载:文件

复制代码

import board

import adafruit_dht import board

import adafruit_dht

尝试从5V为DHT传感器供电(我们发现有时确实需要更多功率),但仍将10K上拉电阻设为3.3V伏)

现在创建一个 DHT11实例或 DHT22 类,具体取决于您使用的传感器的类型(对于AM2302传感器,请使用DHT22类)。您必须传入连接到信号线的引脚,例如,连接到板引脚D6的DHT22或AM2302传感器将需要以下代码:

下载:文件

复制代码

dht = adafruit_dht.DHT22(board.D6) dht = adafruit_dht.DHT22(board.D6)

请注意,对于DHT11传感器,您可以使用 adafruit_dht.DHT11 代替上面的 adafruit_dht.DHT22 代码。

此时,您一切就绪,准备开始读取温度和湿度!您可以通过读取 temperature 属性来完成此操作,该属性返回以摄氏度为单位的温度:

下载:文件

复制代码

dht.temperature dht.temperature

要读取湿度获取值湿度属性的值,它将返回相对湿度百分数(从0到100%):

下载:文件

复制代码

dht.humidity dht.humidity

在大多数情况下,您总是会在收到请求时返回温度或湿度值,但是有时如果存在电噪声或信号被某种方式中断,则可能看到抛出异常以重试。这些传感器有时很难读取,这是正常的,如果读取失败,您可能需要使代码重试几次。但是,如果您总是遇到错误并且无法读取传感器,请仔细检查接线(如果需要,请不要忘记上拉电阻!)和设备的电源。

示例代码

这是一个完整的示例草图,它也可以管理错误-重试逻辑(有时会发生。

不要忘记将逻辑引脚更改为您正在使用的任何引脚!然后将其保存为main.py在CircuitPython板上

下载:Project Zip 或 dht22 .py | 在Github上查看

复制代码

import time

import adafruit_dht

import board

dht = adafruit_dht.DHT22(board.D2)

while True:

try:

temperature = dht.temperature

humidity = dht.humidity

# Print what we got to the REPL

print(“Temp: {:.1f} *C Humidity: {}%”.format(temperature, humidity))

except RuntimeError as e:

# Reading doesn‘t always work! Just print error and we’ll try again

print(“Reading from DHT failure: ”, e.args)

time.sleep(1)

import time

import adafruit_dht

import board

dht = adafruit_dht.DHT22(board.D2)

while True:

try:

temperature = dht.temperature

humidity = dht.humidity

# Print what we got to the REPL

print(“Temp: {:.1f} *C Humidity: {}%”.format(temperature, humidity))

except RuntimeError as e:

# Reading doesn‘t always work! Just print error and we’ll try again

print(“Reading from DHT failure: ”, e.args)

time.sleep(1)

如果您使用的是DHT11,请更改代码以使用adafruit_dht.DHT11(board.D2)对象。

打开REPL以查看输出!看看它会提高温度和湿度(除非您是White Walker,否则温度会下降)

下载

DHT传感器的Arduino库和示例代码

Adafruit_Sensor库(由上面的DHT库要求)

DHT11数据表(中文,也请参见DHT22数据表!)

DHT22数据表

K&R Smith校准说明
责任编辑:wv

相关推荐

相关文章