这个库使用了CircuitPython中的pulseio模块。从CircuitPython 7.0.0开始,pulseio不再适用于最小的CircuitPython版本,如Trinket M0, Gemma M0和Feather M0 Basic板。你可以替换一个更现代的传感器,它也会工作得更好。参见指南DHT11和DHT22传感器的现代替代品(//www.culligan39.com/modern-replacements-for-dht11-dht22-sensors),征求意见。

Adafruit CircuitPython模块安装

要将DHT传感器与Adafruit CircuitPython板一起使用,您需要安装Adafruit_CircuitPython_DHT模块。

首先,确保您正在运行Adafruit CircuitPython的最新版本你的董事会。

接下来,您需要安装使用硬件所需的库——请仔细按照以下步骤查找并安装这些库Adafruit的CircuitPython库包.我们的介绍指南有一个关于如何安装库包的很棒的页面适用于快速板和非快速板。

记住,对于像the这样的非快速板,你需要手动从bundle中安装必要的库:

  • adafruit_dht.mpy

你也可以下载adafruit_dht.mpy它在Github上的发布页面

在继续之前,请确保您的电路板的lib文件夹或根文件系统具有adafruit_dht.mpy模块复制过来。

weather_dhtfile.png

布线

DHT接线非常简单:

  • 最左边的别针是权力.我们建议从5V供电(有时3V是不够的)-这是可以的,即使你使用3.3V的逻辑
  • 第二个引脚是数据.从这个引脚连接一个10K上拉电阻到3.3V。如果你使用的是DHT11,这是必须的。如果你使用的是DHT22或AM2302,你有时可以把这个关掉
  • 跳过第三根针
  • 最右边的大头针是地面
对于数据引脚,你必须选择一个引脚,有PWM支持(脉冲)-检查板的指南,什么引脚有定时器可用
  • weather_adafruit_gemma_dhtcirpy_bb.png

这里有一个使用饰品M0 -的例子你可以使用任何CircuitPython板,只需检查数据引脚pulseio有能力。

  • weather_m0_dht_bb.png

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

使用

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

下一个连接到电路板的串行REPL你现在在python马戏团>>>提示。

接下来导入董事会而且adafruit_dht模块,这些是初始化和访问传感器的必要模块:

导入板导入adafruit_dht

您可能还想尝试从5V为DHT传感器供电(我们发现有时它确实需要更多的功率),但仍然有10K上拉电阻到3.3V伏)

属性的实例DHT11DHT22类,这取决于您使用的传感器类型(对于AM2302传感器,使用DHT22类)。必须输入连接到信号线的引脚,例如连接到板引脚的DHT22或AM2302传感器D6需要这样的代码:

dht = adafruit_dht.DHT22(board.D6)

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

在这一点上,你都设置好了,准备开始阅读温度和湿度!您可以通过阅读温度返回温度(摄氏度)的属性:

dht.temperature
weather_Screen_Shot_2017-10-20_at_2.46.03_PM.png

读取湿度抓取的值湿度属性,它将返回湿度百分比作为从0到100%的浮点值:

dht.humidity
weather_Screen_Shot_2017-10-20_at_2.46.23_PM.png

在大多数情况下,您总是会在请求时返回一个温度或湿度值,但有时如果有电气噪声或信号以某种方式中断,您可能会看到抛出异常以再次尝试。这些传感器有时难以读取是正常的,如果读取失败,您可能需要让代码重试几次。然而,如果你总是出错,无法读取传感器,那么请再次检查接线(如果需要,不要忘记上拉电阻!)和设备的电源。

示例代码

下面是一个完整的示例草图,它还管理错误重试逻辑(偶尔会发生一次)。

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

# SPDX-FileCopyrightText: 2017 Limor Fried for Adafruit Industries # # SPDX-License-Identifier: MIT import time import adafruit_dht import board dht = adafruit_dht. dht22 (board. d2) while True: try: temperature = dht。温度湿度= dht。湿度# Print what we got to the REPL print("Temp: {:.1f} *C \t 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查看输出!对着传感器呼气,就能看到温度和湿度上升(除非你是异鬼,否则温度会下降)。

weather_adafruit_gemma_dht.png

本指南首次发布于2012年7月29日。最后更新于2012年6月29日。

本页(DHT CircuitPython代码)最后更新于2022年12月21日。

文本编辑器tinymce