DHT11全套解析

一、DHT11工作原理

1、获取数据

DHT11包括一个电阻式感湿元件和一个NTC测温元件。这两个获取温湿度数据的方式都差不多,利用湿(温)敏元件的电气特性(如电阻值),随湿(温)度的变化而变化的原理进行湿(温)度测量。

2、数据发送

在这里插入图片描述
数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验位

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号。主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。

二、引脚说明

在这里插入图片描述
在这里插入图片描述

三、Arduino+DHT11

#include "DHT.h"
#define DHTPIN 10 	 	//定义引脚
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);	

void setup() {
  Serial.begin(9600);		//波特率设置
  Serial.println("DHT11 test!");
  dht.begin();		//DHT初始化
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();		//读取湿度
  float t = dht.readTemperature();			//读取温度
  float f = dht.readTemperature(true);		//判断是否读取到了温度
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
}

猜你喜欢

转载自blog.csdn.net/qq_42852559/article/details/107613619