温湿度传感器DHT22的使用
Arduino的传感器世界
Arduino的世界里,各类传感器扮演着很重要的角色。Arduino的各种开发板就像是人的身体,而各类传感器就好像是人的五官和四肢。每种传感器都具有一种主要功能,负责完成指定的功能。比如温湿度传感器可以检测温度和湿度,距离传感器可以测量距离,颜色传感器可以分辨颜色等等。
DHT22是什么
今天研究的对象是DHT22数字温湿度传感器,它可用于检测环境温度和湿度,DHT22也被称为AM2302,具有标准的单总线接口。相比DHT11,它拥有更高的精度和更大的量程。下图为DHT22的引脚定义。
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的测试
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秒更新一次。