DHT11温湿度传感器初识
展示
一般从往上买的的DHT11有以上两种的方式,第一种是带电路板的,第二种就只有个蓝壳子,而且少了一个阵脚
,从电路层面来说,第一种是自带了10K的上拉电阻,当然也可能是别的阻值,datasheet上推荐4.7k。
数据手册 (datasheet) 点击此处
使用方式
Arduino 读取
目前我使用了NodeMcu 8266+ arduino 进行了温湿度读取,这个比较简单,因为Mcu和DHT11交互的方法都写在库里了,调用一下库里的方法就可以了,导致学了好像没学一样。
Mcu pin脚直读
后来,为了追求最本质的目的,我又找了资料,查了上方的datasheet,说人话就是数据手册,说明书,发现此传感器的读取方式很灵动,单总线的限制吧估计,见下方(还未实验,后面单片到了之后会实验一下,再写一篇详细的)。
Arduino读取实例
配置环境
Arduino Esp 8266NodeMcu 开发环境搭建上一个文章已经写了( 在这里 );
配置好之后,需要安装DHT11的库(DHT sensor library)这个库中包含多个型号的DHT的温度传感器的操作和数据解析方式。
项目> 加载库 > 管理库 > 搜索 DHT sensor library
连接线
DHT11上标有(+或VCC)引脚的连接nodemcu的+ 3V引脚。
DHT11上标有(S或OUT)引脚的连接nodemcu的D4V引脚(如果是四针的话,这个就是要连DATA脚,NC脚空着不连)。
DHT11上标有(-或GND)引脚的连接nodemcu的GND引脚。
代码编程
//引入DHT库
#include "DHT.h"
//定义pin脚为2号,对应的是D4号引脚
#define DHTPIN 2 // Digital pin connected to the DHT sensor
//这里要选定自己的DHT的传感器类型
#define DHTTYPE DHT11 // DHT 11 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
void setup() {
//串口的波特率设定(和Arduino沟通的波特率,是调试的时候,8266向arduino主动连接的时候的波特率,而不是arduino连接8266下发程序的波特率)
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
//连接传感器
dht.begin();
}
void loop() {
// 5秒读取一次
delay(5000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
//读取湿度
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
//读取温度,摄氏度
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
//读取温度,华氏温度
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
//串口打印获取到的数据
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
}
结果展示
打开 Arduino 的 工具>串口监视器
即可查看到如下信息
评论 (0)