如何将 DHT22 传感器连接到树莓派,以及如何使用 Python 从该传感器读取数据

在此树莓派湿度传感器教程中,我们将向您展示如何将 DHT22 传感器连接到树莓派,以及如何使用 Python 从该传感器读取数据。

DHT22 是一款多功能且低成本的湿度传感器,还可以计算区域的温度。

该传感器具有相对较长的传输距离,允许该传感器通过距树莓派最多 20m 的电线传输数据。

另外,DHT22 是一种数字传感器,内置有模拟到数字转换器。该转换器使将传感器连接到树莓派变得更加容易,因为您无需处理任何其他芯片。

DHT11 和 DHT22 传感器的最大缺点是它们的速度很慢。 DHT11 每秒采样一次,DHT22 每 2 秒采样一次。

您还可以将 DHT22 与 Arduino 一起使用,因此,如果您愿意使用 Arduino 开发板,请务必检查该教程。

虽然本教程介绍了将 DHT22 连接到树莓派,但它也将与 DHT11 和 AM2302 湿度传感器一起使用,因为它们都使用相同的引脚。

设备

以下是将 DHT22 湿度传感器连接到树莓派所需的所有设备。

推荐的

  • 树莓派

  • 8GB SD 卡或 * Micro SD 卡 树莓派 2、 3 或 B +

  • 面包板线

  • DHT22 湿度传感器

  • 10k 欧姆电阻 (棕色,黑色,橙色,金色)

可选的

  • 树莓派外壳

视频

以下视频将引导您完成组装湿度电路的步骤,以及如何将其连接至树莓派。它还涵盖了有关如何编写简单的 Python 脚本以与 DHT22 传感器通信的步骤。

如果您喜欢书面教程。那么您可以在视频下方找到它。

Adblock 阻止了视频?订阅我们的无广告服务,为我们提供支持。

树莓派湿度传感器硬件设置

在本教程的这一部分中,我们将向您展示如何将 DHT22 湿度传感器连接到树莓派的过程。

由于 DHT22 是数字传感器,因此连接树莓派非常简单。单个数据引脚可以直接连接到树莓派的 GPIO 引脚。

您可以按照下面的指南查看如何将 DHT22 连接到树莓派。

DHT22 引脚排列

为了简化组装湿度传感器电路的过程,我们提供了 DHT22 传感器的引脚排列。

此图应该可以帮助您确定树莓派上每个引脚的位置。

引脚 1 VCC **(电源)
* 引脚 2 *
为 DATA (数据信号)
引脚 3 ** 为 NULL **(不连接)
* 引脚 4 *
为 GND *(接地)

树莓派 DHT22 电路

在这里,我们提供了几种将树莓派湿度传感器电路组合在一起的方法。

您可以依靠下面的两个图表来查看需要使用哪些引脚,或者使用下面的书面步骤。

在 DHT22 的引脚 1 ** 和引脚 2 之间放置 10k 电阻器 **
将 DHT22 的
引脚 1 连接到 Pi 上的物理引脚 1 ( 3v3 )
* 将 DHT22 的引脚 2 ** 连接到 Pi 上的物理引脚 7 ( GPIO4 **)
* 将 DHT22 的
引脚 4 接线到 Pi 上的物理引脚 6 ( GND **)

准备树莓派与湿度传感器对话

1 在开始为树莓派湿度传感器编写脚本之前,我们必须首先确保我们在树莓派上拥有最新更新。

为此,我们可以运行以下两个命令来更新软件包列表和已安装的软件包。

sudo apt-get update
sudo apt-get upgrade

2 现在我们的软件包列表是最新的,我们需要继续安装 ** python 3 pip **。我们将使用这两个软件包与湿度传感器进行交互。

通过运行以下命令安装 python3 -dev 和 python3 -pip。

sudo apt-get install python3-dev python3-pip**3** 在继续安装 DHT 库之前,我们应该首先运行以下命令,以确保我们拥有** setuptools **,** wheel **和** pip ** python的最新版本包。
sudo python3 -m pip install --upgrade pip setuptools滚轮

4 现在,使用 pip ,我们将继续安装 Adafruit 的 DHT 库到树莓派。

我们将使用此 Python 库与 DHT22 湿度 / 温度传感器进行交互。

另外,该库还支持 DHT11 和 AM2302 湿度 / 温度传感器,使其成为学习使用方法的理想库。

运行以下命令将 DHT 库安装到您的树莓派。

sudo pip3安装 Adafruit _DHT

5 在我们的树莓派湿度传感器教程的下一部分中,我们将向您展示如何在图书馆脚本中使用和利用该库与 DHT22 传感器进行对话。

为树莓派湿度传感器编程

1 现在,我们已经将 Adafruit DHT 库安装到了树莓派中,现在我们可以对其进行编程了。

首先,我们必须制作一个 Python 脚本,在其中存储所有代码。要开始编写此文件,可以在树莓派中输入以下命令。

vim 〜/humidity.py

2 在此文件中,我们需要输入以下代码行。我们将逐步解释代码的每个部分。

进口 Adafruit _DHT

该行导入了我们在上一节中使用 ** pip 获得的” Adafruit \ _DHT **” 库。

我们将使用该库与 DHT22 传感器进行对话和交互。该库使我们可以轻松地通过几行 python 代码从传感器检索温度和湿度。

DHT_SENSOR = Adafruit_DHT.DHT22

在这条线上,我们为要用于 DHT 库的传感器定义了一个常数。 Adafruit DHT 库具有三个选择,您可以根据所使用的传感器进行选择。

在本教程中,我们将使用 ** DHT22 ,因此我们将” DHT \ _SENSOR “常量定义为” Adafruit \ _DHT.DHT22 **”。

如果您遵循本指南,但使用的是 ** DHT11 AM2302 ,则可以使用” Adafruit \ _DHT.DH11 “或” Adafruit \ _DHT \ _AM2302 **” 分别。

DHT_PIN = 4

接下来,我们定义一个常量”** DHT \ _PIN **”,该常量用于存储将 DHT22 插入树莓派的 GPIO 引脚的编号。

我们使用的数字是指 GPIO 引脚的 BCM 编号。在我们的教程中,这意味着我们需要使用数字”** 4 “,因为我们将 GPIO4 ** 引脚用于数据连接。

如果您使用了其他 GPIO 引脚,请确保相应地更新此数字。

而 True :
    湿度,温度= Adafruit_DHT.read_retry(DHT_SENSOR,DHT_PIN)

接下来,我们使用”** while TRUE:**” 代码启动无限循环。该循环将持续运行,直到用户杀死 Python 脚本为止。

在每个循环的开始,我们利用 Adafruit DHT 库从 DHT22 传感器中检索湿度和温度,同时指定 ** DHT \ _SENSOR DHT \ _PIN ** 常数。

“** read \ _retry **” 功能将不断尝试从湿度传感器检索数据。

    如果湿度不是"无"而温度不是"无":
        print("温度= {0:0.1f} * C湿度= {1:0.1f}%"。格式(温度,湿度))
    其他:
        打印("无法从湿度传感器检索数据")

最后,我们检查以确保 DHT 库返回了对我们有用的数据。

如果” 湿度 “或” 温度 “变量为” “,那么我们将返回一条消息,告知最终用户我们无法从湿度传感器检索数据。

如果我们在两个变量中确实都有值,那么我们将打印一条消息,向最终用户显示我们刚刚从湿度传感器获取的温度和湿度。

3 输入完代码后,其外观应类似于我们在下面显示的内容。

进口 Adafruit _DHT

DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4

而 True :
    湿度,温度= Adafruit_DHT.read_retry(DHT_SENSOR,DHT_PIN)

    如果湿度不是"无"而温度不是"无":
        print("温度= {0:0.1f} * C湿度= {1:0.1f}%"。格式(温度,湿度))
    其他:
        打印("无法从湿度传感器检索数据")

4 当您对输入的所有代码都正确感到满意时,可以按 ** CTRL + X ,然后按 Y ,再按 ENTER **,保存文件。

5 现在保存了脚本,让我们继续运行它,以便我们可以开始查看湿度传感器的数据。

您可以通过运行以下命令来运行此脚本。

python3〜/humidity.py**6** 从此命令,您应该开始看到类似下面的结果。温度和湿度应通过命令行显示。
温度= 25.6 * C湿度= 51.8%
温度= 25.2 * C湿度= 45.4%
温度= 25.1 * C湿度= 45.4%
温度= 25.0 * C湿度= 45.3%

7 在本教程的下一部分中,我们将向您展示如何修改此脚本,以便将数据记录到文件中。该文件将可以由 Microsoft Excel 或 Google Spreadsheets 之类的程序读取。

从树莓派湿度传感器记录数据

1 首先创建一个新脚本。该脚本与我们先前的脚本有些相似,但是进行了一些更改,以便我们可以写入文件。

首先运行以下命令开始编写新脚本。

vim 〜/humidity_logger.py

2 在此文件中输入以下行。在本节中,我们将仅解释脚本的新增功能。

导入操作系统
导入时间
进口 Adafruit _DHT

在这里,我们为”** os “和” time “库添加了导入。我们利用” os **” 库,因此我们可以在尝试写入 CSV 文件之前检查其是否存在。

我们使用”** time **” 库,以便可以使用当前日期和时间为每个新行添加时间戳。

DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4

这两行没有什么区别,请像以前的脚本一样保留它们。

尝试:
    f =打开('/home/pi/humidity.csv','a +')
    如果 os .stat('/home/pi/humidity.csv')。 st _size == 0:
            f.write('日期,时间,温度,湿度\ r \ n')
除了:
    通过

在这里,我们将所有内容包装在 try 语句中,以处理任何潜在的错误。

我们打开一个应用了”** a + “标签的”/home/pi/humidity.csv “文件的句柄。 ** a + 标记表示写入文件的所有数据都将附加到文件末尾。

接下来,我们使用”** os **” 库查看我们是否曾经写入过该文件。如果大小返回为 0 ,则将初始行写入文件。该行将包含我们的列标题,因此您可以更轻松地理解数据。

而 True :
    湿度,温度= Adafruit_DHT.read_retry(DHT_SENSOR,DHT_PIN)

在这里,我们再次有了 while 循环。我们利用 DHT 库再次从 DHT22 湿度传感器读取数据。

此功能会将从传感器读取的数据存储到我们的” 湿度 “和” 温度 “变量中。

    如果湿度不是"无"而温度不是"无":
        f.write('{0},{1},{2:0.1f} * C,{3:0.1f}%\ r \ n'.format(time.strftime('%m /%d /%y '),time.strftime('%H:%M'),温度,湿度))
    其他:
        打印("无法从湿度传感器检索数据")

    时间睡眠(30)

对本节代码的最大更改是,我们无需将温度和湿度打印到控制台,而是将其写入”** humidity.csv **” 文件。为此,我们使用了前面打开的文件句柄。

我们对写入文件的文本进行格式化,以包括” 当前日期”,” 当前时间”,格式化后的” 温度” 和” 湿度”。

在循环结束时,我们将脚本休眠 30 秒钟,如果您想让脚本更长时间或更频繁地轮询,请修改此数字。

3 输入完代码后,其外观应类似于我们在下面显示的内容。

导入操作系统
导入时间
进口 Adafruit _DHT

DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4

尝试:
    f =打开('/home/pi/humidity.csv','a +')
    如果 os .stat('/home/pi/humidity.csv')。 st _size == 0:
            f.write('日期,时间,温度,湿度\ r \ n')
除了:
    通过

而 True :
    湿度,温度= Adafruit_DHT.read_retry(DHT_SENSOR,DHT_PIN)

    如果湿度不是"无"而温度不是"无":
        f.write('{0},{1},{2:0.1f} * C,{3:0.1f}%\ r \ n'.format(time.strftime('%m /%d /%y '),time.strftime('%H:%M'),温度,湿度))
    其他:
        打印("无法从湿度传感器检索数据")

    时间睡眠(30)

4 完成后,按 ** CTRL + X ,然后按 Y ,再按 ENTER **,保存文件。

5 现在,就像我们的上一个脚本一样,让我们​​继续并现在通过输入以下命令来运行它。

python3〜/humidity_logger.py

6 一旦退出脚本,您现在将能够检出”**”(湿度).csv ** 文件,以查看随着时间的推移记录的所有结果。

如果运行以下命令,则应该看到文件的内容。

vim 〜/humidity.csv

7 以下是您应在此文件中看到的内容示例。

日期,时间,温度,湿度
05/04/19,05:47,22.3 * C,50.6%
05/04/19,05:48,22.2 * C,50.4%
05/04/19,05:48,22.2 * C,50.6%
05/04/19,05:49,22.2 * C,50.4%
05/04/19,05:49,22.2 * C,50.4%
05/04/19,05:50,22.2 * C,50.3%
05/04/19,05:50,22.2 * C,50.3%
05/04/19,05:51,22.2 * C,50.2%确认文件已成功写入后,就可以对树莓派湿度传感器进行编程了。

如果您需要防水的温度传感器,请务必查看我们的 DS18B20 温度传感器教程。它涵盖了您需要了解的所有内容,并且可以与该传感器完美配合。

我希望一切都对您来说正常,并且您不会毫无问题地收集湿度和温度。如果您想发表一些意见,请不要在下面发表评论。

分享到