DHT11温湿度传感器和Raspberry Pi

4

DHT11是一款低成本的温度和湿度传感器。它为N’周围最快的传感器,但其价格便宜,使其在您不需要的实验或项目中很有用’每秒需要多次读取新读数。该设备仅需要与Pi进行三个连接。 + 3.3v,地和一个GPIO引脚。

DHT11规格

该设备本身有四个引脚,但未使用其中之一。您可以单独购买4针设备,也可以作为3针模块的一部分购买。

DHT11传感器尺寸

该模块具有三个引脚,易于直接连接至Pi’s 通用输入输出 header.

  • 湿度:20-80%(5%精度)
  • 温度:0-50°C(±2°C精度)

厂商不建议您每2秒从此设备读取一次数据。如果这样做,您可能会得到错误的读数。

硬件设定

DHT11模块

4引脚设备需要在引脚1(3.3V)和引脚2(数据)之间放置一个电阻(4.7K-10K)。

3针模块通常会包含此电阻,从而使接线更加容易。因此,我握住了该模块,然后可以用一条三通杜邦电缆将其连接到Pi。

不同的供应商可能对模块引脚的接线方式不同,因此请检查PCB标记以识别Vcc(+),数据和接地(-)。

如下表所示,应将3个引脚连接到Pi:

DHT引脚信号Pin
13.3V1
2数据/输出11(GPIO17)
3未使用
4地面6 or 9

您的数据引脚可以连接到您喜欢的任何GPIO引脚。在我的示例中,我使用的是物理引脚11,即GPIO17。这是一个连接到Pi的4引脚传感器’s 通用输入输出头。它在引脚1(3.3V)和引脚2(Data / Out)之间具有10K电阻。

DHT11连接到Raspberry Pi

蟒蛇库

DHT11需要将特定协议应用于数据引脚。为了节省时间尝试自己实施’使用Adafruit DHT库要容易得多。

该库处理需要与传感器交换的数据,但是对时序问题很敏感。 Pi’操作系统可能会在执行其他任务时妨碍您的操作,因此,为了弥补这一点,磁带库要求从设备读取大量读数,直到获得有效的读数为止。

软体设定

首先更新您的软件包列表并安装一些Python库:

sudo apt-get update
sudo apt-get install build-essential 蟒蛇-dev

然后从其存储库中克隆Adafruit库:

git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd 阿达果_Python_DHT

然后安装适用于Python 2和Python 3的库:

sudo 蟒蛇 setup.py install
sudo 蟒蛇3 setup.py install

希望在这一点上,该库已安装并准备在Python脚本中使用。

阿达果示例Python脚本

阿达果提供了一个示例脚本,可用于检查传感器是否正常运行。

cd ~
cd 阿达果_Python_DHT
cd examples

然后 :

蟒蛇 阿达果DHT.py 11 17

示例脚本带有两个参数。第一个是传感器类型,因此设置为“11”代表DHT11。第二个是GPIO编号,因此对于我的示例,我正在使用“17”用于GPIO17。如果您为数据/输出线使用其他GPIO引脚,则可以更改此设置。

您应该看到类似于以下内容的输出:

Temp=22.0* Humidity=68.0%

在其他Python脚本中使用库

一旦安装了Adafruit库,您便可以’有了示例脚本,您可以在自己的脚本中使用传感器。只需导入模块,设置一些变量,然后调用“read_retry” function :

import 阿达果_DHT

# Set 传感器 type : Options are DHT11,DHT22 or AM2302
sensor=Adafruit_DHT.DHT11

# Set 通用输入输出 传感器 is connected to
gpio=17

# Use read_retry method. This will retry up to 15 times to
# get a 传感器 reading (waiting 2 seconds between each retry).
humidity, 温度 = 阿达果_DHT.read_retry(sensor, gpio)

# Reading the DHT11 is very sensitive to timings and occasionally
# the Pi might fail to get a valid reading. So check if readings are valid.
if humidity is not None and 温度 is not None:
  print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))
else:
  print('Failed to get reading. Try again!')

可以使用以下命令将脚本直接下载到您的Pi:

wget //bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/dht11.py

并使用运行:

蟒蛇 dht11.py

购买DHT11

DHT11可从许多电气元件销售商处获得。这是一个选择:

有些可能只出售设备本身,因此如果您希望使用3针模块,则可能需要货比三家。

最后的想法

DHT11可能最适合不需要快速读取数据且预计环境不会出现温度或湿度突然变化的项目。气象站将是一个构想项目,但中央供暖控制器可能需要一些不同的东西。

对于需要更快的温度读取速率的项目(<2秒),我可能会使用 DS18B20 因为它们对温度变化的反应更快。但是,这两种传感器的成本都很高<您可能可以负担得起同时购买和实验的5美元。

分享。

4条留言

  1. 约翰·雅各布森

    感谢在运行Jessie版本8的Raspberry 皮零 W上作为Python3脚本完美运行。非常感谢。我以前使用过PigPio库,但是更喜欢在CPU匮乏的RPi Zero W上使用普通的GPIO。

  2. 这里有一些很棒的教程。我让DHT11正常工作。早些时候,我有一个OLED 1306屏幕可以工作(它们的成本不到2英镑),’d喜欢将温度和湿度数据输出到OLED 1306。–或指出正确的方向谢谢

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.