Node MCU8266 使用Arduino进行开发 读取DHT11的温湿度
标签搜索

Node MCU8266 使用Arduino进行开发 读取DHT11的温湿度

jjiaper
2022-06-30 / 0 评论 / 17 阅读 / 正在检测是否收录...

DHT11温湿度传感器初识

展示

l514zyek.png
一般从往上买的的DHT11有以上两种的方式,第一种是带电路板的,第二种就只有个蓝壳子,而且少了一个阵脚
,从电路层面来说,第一种是自带了10K的上拉电阻,当然也可能是别的阻值,datasheet上推荐4.7k。
l5157w23.png
数据手册 (datasheet) 点击此处

使用方式

Arduino 读取

目前我使用了NodeMcu 8266+ arduino 进行了温湿度读取,这个比较简单,因为Mcu和DHT11交互的方法都写在库里了,调用一下库里的方法就可以了,导致学了好像没学一样。

Mcu pin脚直读

后来,为了追求最本质的目的,我又找了资料,查了上方的datasheet,说人话就是数据手册,说明书,发现此传感器的读取方式很灵动,单总线的限制吧估计,见下方(还未实验,后面单片到了之后会实验一下,再写一篇详细的)。
l515k8e4.png
l515kp97.png

Arduino读取实例

配置环境

Arduino Esp 8266NodeMcu 开发环境搭建上一个文章已经写了( 在这里 );
配置好之后,需要安装DHT11的库(DHT sensor library)这个库中包含多个型号的DHT的温度传感器的操作和数据解析方式。
项目> 加载库 > 管理库 > 搜索 DHT sensor library

连接线

l5165zy5.png
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 的 工具>串口监视器
即可查看到如下信息
l516d3mt.png

0

评论 (0)

取消