温湿度传感器DHT22的使用

  • 内容
  • ....
  • 相关

Arduino的传感器世界

arduino的传感器

Arduino的世界里,各类传感器扮演着很重要的角色。Arduino的各种开发板就像是人的身体,而各类传感器就好像是人的五官和四肢。每种传感器都具有一种主要功能,负责完成指定的功能。比如温湿度传感器可以检测温度和湿度,距离传感器可以测量距离,颜色传感器可以分辨颜色等等。

DHT22是什么

AM2302

今天研究的对象是DHT22数字温湿度传感器,它可用于检测环境温度和湿度,DHT22也被称为AM2302,具有标准的单总线接口。相比DHT11,它拥有更高的精度和更大的量程。下图为DHT22的引脚定义。

DHT22(AM2302)温湿度传感器的引脚定义

DHT22是一个四针脚模块,包含VCC、DATA、NC、GND四个引脚,实际使用中只会用到VCC、GND、DATA,NC引脚为空脚,VCC电压范围是3-5V。DHT22测量温湿度的原理,是通过内置电容式湿度传感器和热敏电阻来测量周围的空气,取得温度和湿度值后由 Data 引脚上向主控板发送一个数字信号。

DHT22的参数

电压范围:3~5V

最大工作电流:2.5mA

湿度测量:0-100%, 精确度 2-5%

温度测量:40 ~ 80°C, 精度±0.5°C

DHT22的测试

Arduino UNO 连接DHT22

UNO与DHT22的连接非常简单,VCC直接从UNO的+5V上取出,DATA引脚连接至2#数字针脚,GND连接至UNO的GND,DATA 和 VCC 跨接一个10K的上拉电阻。然后上传代码通过串口监视器即可实时监控环境温湿度。

// DHT 系列温湿度传感器代码示例,代码支持DHT11、DHT21、DHT22.

#include "DHT.h"
#define DHTPIN 2 // 定义2#针脚为DHTPIN

//#define DHTTYPE DHT11 // 如果是DHT 11 去掉注释
#define DHTTYPE DHT22   // DHT22 (AM2302), AM2321均采用此行代码
//#define DHTTYPE DHT21 // 如果是DHT21 (AM2301)去掉注释

DHT dht(DHTPIN, DHTTYPE);

void setup() {
   Serial.begin(9600);
   Serial.println("***DHT传感器***测试!");
   dht.begin();
}

void loop() {
   delay(2000); // 设置间隔时间为2000毫秒
   float h = dht.readHumidity();
   // 读取温度或湿度大约需要250毫秒
   float t = dht.readTemperature();
   // 将温度读取为摄氏温度(默认值)
   float f = dht.readTemperature(true);
   // 读取温度为华氏温度 (Fahrenheit = true)
   // 检查是否有读取失败 (重试).
   if (isnan(h) || isnan(t) || isnan(f)) {
      Serial.println("没有从DHT传感器上获取数据!");
      return;
   }
   
   // 计算华氏温度 (默认)
   float hif = dht.computeHeatIndex(f, h);
   // 计算摄氏温度 (Fahreheit = false)
   float hic = dht.computeHeatIndex(t, h, false);
   Serial.print ("湿度: ");
   Serial.print (h);
   Serial.print (" %\t");
   Serial.print ("温度: ");
   Serial.print (t);
   Serial.print (" *C ");
   Serial.print (f);
   Serial.print (" *F\t");
   Serial.print ("热量指数: ");
   Serial.print (hic);
   Serial.print (" *C ");
   Serial.print (hif);
   Serial.println (" *F");
}

最后打开串口监视器,在串口监视器中将显示的测量得到的温度和湿度,且每2秒更新一次。