-
Arduino UNO
-
Arduino IDE开发环境
-
Arduino DHT11温湿度传感器
一、认识Arduino的DHT11温度湿度传感器
DHT传感器由电容式湿度传感器和热敏电阻两部分组成。除此之外,模块内部还有一些模拟信号到数字信号的转换,将温度湿度以数字信号的方式输出。
DHT11湿度温度传感器特性如下:
- 成本较低,更适合DIY
- 供电3.3-5V
- 2.5ma最大电流
- 20-80%读数精度在5%之内
- 0-50°C温度读数精度为±2°C
- 频率不超过1赫兹,现场每一次集中
- 模块尺寸较小,15.5mm x 12mm x 5.5mm
DHT11模块有三个引脚加一个LED
- VCC :连接供电电源的主板
- DAT :将数字信号输出
- GND :连接供电电源的规格
- 电源指示:模块正常供电时会亮
二、编写程序获取温湿度传感器的数值
-
连接Arudino UNO与DHT11温度湿度传感器
Arduino UNO DHT11湿度温度传感器 GND GND 5V VCC D8 DAT
-
编写程序获取DHT11温湿度传感器的数字信号
-
下载DHT11的库文件
-
解压文件并添加至arudino安装路径下的库
-
导入DHT11库文件
#include <dht11.h> dht11 DHT11;
-
定义指标
#define PIN_DHT11 8 float temp,humi;
-
setup()初始化。
这里大家可能会有疑问,但是为什么要获取DHT11模块的数字信号,不用初始化设定该引脚为输入模式呢?
本质上是需要的,但是已经在库文件中定义了设置,所以这里不一定重复设置
void setup() { Serial.begin(9600); temp=0; humi=0; }
-
Loop()写入主体函数
void loop() { DHT11.read(PIN_DHT11); humi = (float)DHT11.humidity; temp = (float)DHT11.temperature; Serial.println(humi, 2); Serial.println(temp, 2); }
-
-
连接Arduino UNO至电脑
-
编译并上传程序至Arduino UNO
-
测试效果
-
接上USB运行Arduino程序的时候,可以看到DHT11模块的LED是亮着的,说明模块正常供电
-
向模块哈气,以增加温度可以与湿度测试看数据的变化输出
-
三、制作温度报警器
-
基于步骤二,连接LED与Arduino UNO
引领 Arduino UNO 短脚 GND 长脚 D10 -
步骤基础二的程序整合上LED程序
分析需求,这里我们仅使用DHT11提供的温度
- 当温度大于23的时候,点亮LED
- 当温度小于23的时候,马上LED
定义指标
#define PIN_DHT11 8 float temp,humi;
setup() 初始化
void setup() { Serial.begin(9600); pinMode(10,OUTPUT); temp=0; humi=0; }
Loop()函数主体
void loop() { DHT11.read(PIN_DHT11); Serial.print("湿度 (%): "); humi = (float)DHT11.humidity; Serial.println(humi, 2); Serial.print("温度 (oC): "); temp = (float)DHT11.temperature; Serial.println(temp, 2); if(temp > 23) digitalWrite(10,HIGH); else digitalWrite(10,LOW); delay(500); }
整合全部程序:
#include <dht11.h> dht11 DHT11; #define PIN_DHT11 8 float temp,humi; void setup() { Serial.begin(9600); pinMode(10,OUTPUT); temp=0; humi=0; } void loop() { DHT11.read(PIN_DHT11); Serial.print("湿度(%): "); humi = (float)DHT11.humidity; Serial.println(humi, 2); Serial.print("温度(oC): "); temp = (float)DHT11.temperature; Serial.println(temp, 2); if(temp > 23) digitalWrite(10,HIGH); else digitalWrite(10,LOW); delay(500); }
-
编译并上传程序测试效果