电子元件:DHT11温度和湿度传感器

191 阅读2分钟

这个传感器是你最先学会使用的传感器之一,因为每个人都对它有很好的应用:建立一个室内或室外温度计。

在这里,你可以看到它安装在一个分线板上。

请注意,该传感器有4个输出引脚,尽管我得到的分线板只有3个(原因是DHT11的第3个引脚没有连接到任何东西--不要问我为什么)。

从左边开始,保持我们的针脚在底部,我们有。

  • Vdd,正向输入 (+)
  • Vss, 负输入 (-)
  • 输出信号

输出是一个40位的序列化信号,持续4ms。

这意味着传感器每隔4ms就会发送一次温度信息,为了读取它,我们必须得到这个值并将其反序列化。

在Arduino程序中,我们使用由Adafruit维护的DHT传感器库(这里有存储库的链接),这使得我们读取温度非常简单。

![](Screen Shot 2020-12-18 at 20.01.53.png)

你用#include <DHT.h> ,然后通过传递传感器信号引脚和类型来初始化一个DHT 类的对象,在这种情况下使用常数DHT11

该库还可以与其他传感器一起工作,比如更精确的DHT22DHT21

然后你可以调用readHumidity()readTemperature() 方法来获得作为float 变量的值。

readTemperature() 摄氏度的值,但库也提供了一个 方法来获得华氏度的值。convertCtoF()

该库还提供了其他方法,如computeHeatIndex() 。我建议你在GitHub上查看DHT.h 头文件的源代码

这个简单的Arduino程序从与数字针脚2号的信号针脚连接的DHT11中读取数据,并将其打印到串行显示器上。

#include <DHT.h>

DHT dht(2, DHT11);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Cannot read values");
    return;
  }

  Serial.println((String)"Humidity: " + h + "%, temperature: " + t + "C");
}

![](Swanky Curcan.png)

Humidity: 56.00%, temperature: 20.20C
Humidity: 56.00%, temperature: 20.20C
Humidity: 56.00%, temperature: 20.10C
Humidity: 56.00%, temperature: 20.20C