DHT温湿度传感器的介绍,dht 2024-04-08 15:49:31 0 0 概述 本教程介绍了低成本的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 收藏(0)