Arduino Uno 使用DHT11温度传感器

凌顺实验室(lingshunlab.com)在本实验中,演示Arduino Uno如何使用温湿度传感器DHT11(DHT22也是一样的代码,只是加载的传感器类型不一样)。

实验效果

使用电风吹增加温湿度传感器DHT11周围的温度,使其感受的温度提升。 片刻之后,停止热风加温,使其感受的温度下降。

观察串口监视器所输出的温度值,会发生对应的温度变化。

元件说明

DHT11特点

  • 相对湿度和温度测量
  • 全部校准,数字输出
  • 卓越的长期稳定性
  • 无需额外部件
  • 超长的信号传输距离
  • 超低能耗
  • 4引脚安装
  • 完全互换

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

引脚说明

VCC 为供电(需要供电5V) DATA 为信号输出 GND 为接地

BOM表

名称 数量
Arduino Uno x1
温湿度传感器DHT11模块 x1
跳线(杜邦线) 若干

接线方式

Arduino Uno 引脚 <-> DHT11 引脚
5V <-> VCC
GND <-> GND
Pin 2 <-> DATA

程序提点

安装库

在代码编写之前,需要在添加DHT11的库, 从菜单栏中,依次打开:「项目」->「加载库」->「管理库」 在弹出的对话框的搜素栏里,输入:“dht” 查找相关的库 我使用的是名为「Grove Temperature And_Humidity Sensor」的库 点击安装后,等待安装完成即可关闭对话框,进行代码的编写

在视频中有详细的添加步骤,如有不懂可再参考视频。

程序实现

// by lingshunlab.com
#include "DHT.h" // 加载DHT库

#define DHTPIN 2 // 定义DHT的输入引脚
#define DHTTYPE DHT11 // 定义DHT的型号类型

DHT dht(DHTPIN, DHTTYPE); // 创建一个为dht的DHT实例

void setup() {
  Serial.begin(115200); // 设置波特率
  Serial.println("DHT11 test!"); // 串口输出信息

  dht.begin(); // 启动dht
}

void loop() {
  float temp_hum_val[2] = {0}; // 定义一个浮点类型的数组

  if(!dht.readTempAndHumidity(temp_hum_val)){ // 判断是否可以读到温湿度传感器的数据,可以则输出相关数据
    Serial.print("Humidity: "); 
    Serial.print(temp_hum_val[0]);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(temp_hum_val[1]);
    Serial.println(" *C");
  } else { // 否则,提醒数据获取失败
    Serial.println("Failed to get temprature and humidity value.");
  }
  delay(10);
}

除了以上我简化了的程序外,还可以查看完整的库示例代码, 如下图,依次打开,就可以看到。