亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino教程:使用DHT11和DHT22传感器掌握温湿度测量

在本Arduino教程中,我们将学习如何使用DHT11或DHT22传感器配合Arduino开发板测量温度和湿度。您可以观看以下视频或阅读下方的文字教程了解更多详情。

概述

这些传感器因价格低廉且性能优异,深受电子爱好者喜爱。以下是两款传感器的主要规格与差异:

DHT22是价格较高的版本,规格自然更优。其温度测量范围为-40°C至+125°C,精度±0.5°C;而DHT11温度范围为0°C至50°C,精度±2°C。在湿度测量方面,DHT22范围为0-100% RH,精度2-5%;DHT11范围为20-80% RH,精度5%。

Arduino教程:使用DHT11和DHT22传感器掌握温湿度测量

有两项指标DHT11优于DHT22:采样率方面,DHT11为1Hz(每秒1次读数),DHT22为0.5Hz(每2秒1次读数);体积方面,DHT11体积更小。两款传感器工作电压均为3-5V,测量时最大电流2.5mA。

您可以从以下网站获取所需组件:

  • DHT11传感器……………………………..
  • DHT22传感器…………………………….
  • Arduino开发板……………………………
  • 面包板和杜邦线……………

DHT11 / DHT22 工作原理

现在让我们看看这些传感器是如何工作的。它们由一个湿度感应元件、一个NTC温度传感器(热敏电阻)以及背面的一个IC组成。

Arduino教程:使用DHT11和DHT22传感器掌握温湿度测量

湿度测量利用湿度感应元件,该元件包含两个电极,中间夹有吸湿基质。随着湿度变化,基质的导电性(即电极间电阻)发生变化。IC测量并处理这种电阻变化,使其可被单片机读取。

Arduino教程:使用DHT11和DHT22传感器掌握温湿度测量

温度测量则使用NTC温度传感器或热敏电阻。热敏电阻是一种电阻随温度变化的可变电阻器,由陶瓷或聚合物等半导体材料烧结而成,以便在温度微小变化时产生较大的电阻变化。

Arduino教程:使用DHT11和DHT22传感器掌握温湿度测量

“NTC”意为“负温度系数”,即温度升高时电阻减小。

电路原理图

DHTxx传感器有四个引脚:VCC、GND、数据引脚和一个未连接的空脚。数据线需要一个5K-10KΩ的上拉电阻保持高电平,以实现传感器与Arduino之间的通信。部分模块自带上拉电阻的断路板,仅有3个引脚。

Arduino教程:使用DHT11和DHT22传感器掌握温湿度测量

DHT传感器使用单线协议传输数据,要求精确的时序。时序图可在数据手册中找到,但我们无需过多关注,因为将使用DHT库处理所有细节。

相关教程:学习如何构建基于Arduino的无线气象站

源代码

首先需要包含DHT库(可从Arduino官网获取),定义传感器连接的引脚号并创建DHT对象。在setup()中初始化串口通信以便在串口监视器打印结果。使用read22()函数读取传感器数据,将温度和湿度值存入变量t和h。若使用DHT11则调用read11()。最后在串口监视器打印温湿度值。

/* DHT11/ DHT22传感器温湿度教程
 * 作者:Dejan Nedelkovski
 * www.HowToMechatronics.com
 */
/*
 * DHT库可从Arduino官网获取
 * https://playground.arduino.cc/Main/DHTLib
 */
#include <dht.h>
#define dataPin 8  // 定义传感器连接的引脚号
dht DHT;           // 创建DHT对象

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

void loop() {
  int readData = DHT.read22(dataPin);  // 读取传感器数据
  float t = DHT.temperature;           // 获取温度值
  float h = DHT.humidity;              // 获取湿度值
  // 在串口监视器打印结果
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(" Humidity = ");
  Serial.print(h);
  Serial.println(" % ");
  delay(2000);  // 延时2秒,因DHT22采样率为0.5Hz
}
代码语言: Arduino (arduino)

上传代码后,可在串口监视器查看传感器读取的温湿度结果。

我还制作了一个在LCD上显示结果的示例,源代码如下:

/* DHT11/ DHT22传感器温湿度教程
 * 作者:Dejan Nedelkovski
 * www.HowToMechatronics.com
 */
/*
 * DHT库可从Arduino官网获取
 * https://playground.arduino.cc/Main/DHTLib
 */
#include <LiquidCrystal.h>  // 包含LiquidCrystal库
#include <dht.h>
#define dataPin 8
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);  // 创建LCD对象,参数:(rs, enable, d4, d5, d6, d7)
dht DHT;

void setup() {
  lcd.begin(16,2);  // 初始化LCD接口,指定显示尺寸(宽和高)
}

void loop() {
  int readData = DHT.read22(dataPin);
  float t = DHT.temperature;
  float h = DHT.humidity;
  lcd.setCursor(0,0);  // 设置光标位置
  lcd.print("Temp.: ");  // 打印字符串"Temp."
  lcd.print(t);          // 打印温度值
  lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Humi.: ");
  lcd.print(h);
  lcd.print(" %");
  delay(2000);
}
代码语言: Arduino (arduino)

欢迎在下方评论区提出任何问题。

制造工艺

  1. 树莓派与 Python 构建远程温度传感器:分步实战指南
  2. 树莓派配合 EzTemp 实现无缝温湿度监测
  3. 树莓派用 MCP3008 ADC 读取模拟传感器:LDR 与 TMP36 实例
  4. 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
  5. Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
  6. Arduino + DHT11 + 以太网盾板温湿度数据记录仪
  7. 基于Arduino UNO的精准频率与占空比测量
  8. BME280 环境数据实时显示于 Nextion 触摸屏——Visuino 图形化开发
  9. Bolt IoT + Arduino UNO 实现 6 路 LED 无级调光
  10. Blynk + Arduino 读取 DHT11 温湿度数据教程
  11. DIY 智能 Arduino 机械臂:主从控制与动作记忆教程
  12. 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机