一、DHT11温湿度传感器电气特性
官网:https://learn.adafruit.com/dht
DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC 测温元件,并与一个高性能8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20 米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
DHT11 数字温湿度传感器模块为3 针PH2.0 封装。连接方便。
二、温湿度传感器DHT11封装形式及接口说明
建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻(若购买的是已集成的模块,模块上已加上拉电阻,以下请忽略),当然,如果你想要精简电路的话, STC增强型单片机自带的推挽输出功能不失为一个选择,其相当于外接了一个2k的上拉电阻,但在设计电路时需注意:整个单片机的电流推荐不超过55mA,即从MCU-VCC流入的电流不超过55mA,从MCU-GND流出的电流不超过55mA,整体流入、流出电流均不超过55mA,封装尺寸及典型应用电路图如下图所示。
DHT11温湿度传感器典型应用电路
三、电路原理图
DHT11的正极与5V电源接口相连,负极与GND相连,中间的数据接口与8号引脚相连。
注意:
模块上 标有-号的接负极,中间接正极,S接数据口8。
四、代码
https://github.com/adafruit/DHT-sensor-library
下载dht11库文件:
将dht11压缩文件解压到arduino安装文件夹的libraryies中。
包括一个头文件和一个.cpp文件。
#include "Arduino.h"
#include <DHT.h> //引用dht11库文件,使得下面可以调用相关参数
#define DHTPIN 8 //定义温湿度针脚号为8号引脚
#define DHTTYPE DHT11 // DHT 11 实例化一个对象
DHT dht(DHTPIN, DHTTYPE);
void setup() { //设置
Serial.begin(9600); //设置波特率参数
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
delay(2000); //在测量之间等待几秒钟。
//读取温度或湿度大约需要250毫秒!
//传感器读数也可能长达2秒(传感器速度非常慢)
float h = dht.readHumidity();
//读取温度为摄氏度(默认值)
float t = dht.readTemperature();
//读取温度为华氏温度(isFahrenheit = true)
float f = dht.readTemperature(true);
//检查是否有任何读取失败并提前退出(再试一次)。
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("无法从DHT传感器读取!"));
return;
}
// 以华氏度计算热量指数(默认值)
float hif = dht.computeHeatIndex(f, h);
// 以摄氏度计算热量指数(isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
// Humidity湿度
Serial.print(F("Humidity: "));
Serial.print(h);
//Temperature 温度
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
//热度指数 Heat index
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}