本文将讲述如何使用nodemcu开发板与DHT11温湿度传感器获取当前环境温湿度数据,并从串口打印出来。
硬件连接
硬件连接如图所示,
黑线为地线,红线为接3.3V,蓝色的线为数据线。使用杜邦线进行连接。
软件代码
硬件连接好后就可以开始写代码了,首先打开arduino IDE软件。
相关开发板设置与库文件下载不在这里进行详细描述。
本次使用的是DHT sensor library库,在管理库界面搜索“DHT”即可找到该库进行下载安装。
这里附上该库的仓库GitHub地址
【https://github.com/adafruit/DHT-sensor-library】
定义库的头文件
#include <DHT.h>//定义库的头文件
设置相关参数
#define DHTTYPE DHT11//温湿度传感器型号
#define DHT11_PIN 2//温湿度检测引脚
这里注意一下就是引脚的问题,在官方库里有说到可以使用3、4、5、13、14等GPIO,本人一开始使用16就没有得到正确的输出。
构造实例化
DHT dht(DHT11_PIN,DHTTYPE);//实例化
温湿度数据获取函数
void dht11(){
float tem;
float hum;
//读取温湿度数据
dht.begin();//本人也没有弄懂这句是什么意思,请大佬指点一二!
tem=dht.readTemperature();//获取温度值,带小数点
hum=dht.readHumidity();//获取湿度值,带小数点
delay(300);//读取数值时需要250us,所以这里延时了300us
Serial.print("t=");
Serial.print(tem);
Serial.print("*C,h=");
Serial.print(hum);
Serial.print("%\n");
}
全部代码
#include <DHT.h>//定义库的头文件
#define DHTTYPE DHT11//温湿度传感器型号
#define DHT11_PIN 2//温湿度检测引脚
DHT dht(DHT11_PIN,DHTTYPE);//实例化
void dht11(){
float tem;
float hum;
//读取温湿度数据
dht.begin();//本人也没有弄懂这句是什么意思,请大佬指点一二!
tem=dht.readTemperature();//获取温度值,带小数点
hum=dht.readHumidity();//获取湿度值,带小数点
delay(300);//读取数值时需要250us,所以这里延时了300us
Serial.print("t=");
Serial.print(tem);
Serial.print("*C,h=");
Serial.print(hum);
Serial.print("%\n");
}
void setup() {
pinMode(DHT11_PIN, INPUT);//对DHT数据端口进行端口设置
Serial.begin(115200);//设置串口波特率
}
void loop() {
delay(1000);//延时处理
dht11();//获取数据并通过串口打印
}
重点难点
这里主要注意的是丝印上的引脚号与arduino里的数字标号不一样的。像本人一开始使用的16,是在丝印D0的脚位。以下是丝印与GPIO的对应表
nodemcu板上丝印 | 代码对应编号 |
---|---|
D0 | 16 |
D1 | 5 |
D2 | 4 |
D3 | 0 |
D4 | 2 |
D5 | 14 |
D6 | 12 |
D7 | 13 |
D8 | 15 |
以上如有错误的地方,麻烦看官们指正!