示例19:DHT11 温湿度传感器
大约 4 分钟
示例19:DHT11 温湿度传感器
实验概述
DHT11 是一款常用的数字温湿度传感器,测量范围:温度 0~50°C(±2°C),湿度 20~90%RH(±5%RH)。FastBee 内置 SENSOR 外设类型(type: 38)直接支持 DHT11/DHT22。
硬件接线
| 开发板标识 | GPIO引脚 | 连接设备 |
|---|---|---|
| DATA | GPIO27 | DHT11 数据引脚 |
DHT11 三线接法:VCC→3.3V/5V, GND→GND, DATA→GPIO(模块内置上拉电阻)。
JSON 配置示例
{
"peripherals": [
{
"id": "dht_01",
"name": "DHT11温湿度",
"type": 38,
"enabled": false,
"pins": [27],
"params": {}
}
]
}外设执行联动
场景1:定时采集温湿度(定时触发)
功能:每5秒读取一次温度和湿度数据
Web界面配置步骤
步骤1:创建规则
- 点击左侧菜单 外设配置 → 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 填写基础配置:
- 规则名称:
DHT温湿度采集 - 上报数据:✅ 启用(读取后上报到云平台)
- 启用:✅ 启用
- 规则名称:
步骤2:配置触发器
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 定时触发 按时间间隔执行 定时模式 选择 间隔定时 每隔X秒执行 间隔秒数 5每5秒采集一次
步骤3:配置动作
点击 添加动作 按钮
填写动作配置:
字段 填写内容 说明 动作类型 选择 传感器读取 读取传感器数据 目标外设 选择 dht_room要读取的传感器 数据字段 temperature读取温度(也可选humidity) 点击 保存 按钮
执行流程:
每5秒
↓
读取 dht_room 传感器
↓
获取 temperature 值
↓
上报到云平台(如果启用上报)💡 提示:DHT11最短采样间隔1秒,建议2秒以上,避免读取失败
场景2:湿度过低报警(轮询触发)
功能:当湿度低于30%时,启动加湿器(继电器控制)
Web界面配置步骤
步骤1:创建规则
- 点击 新增规则
- 填写基础配置:
- 规则名称:
湿度过低报警 - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
步骤2:配置触发器
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 轮询触发 定时检测湿度值 目标外设 选择 dht_room温湿度传感器 轮询间隔 10秒每10秒检测一次 比较操作 选择 小于 下限报警 比较值 30湿度阈值30%
步骤3:配置动作
点击 添加动作 按钮
填写动作配置:
字段 填写内容 说明 动作类型 选择 高电平 GPIO输出HIGH 目标外设 选择 relay_humidifier加湿器继电器 点击 保存 按钮
执行流程:
每10秒
↓
读取 dht_room 湿度值
↓
判断: humidity < 30 ?
↓ 是
启动加湿器(继电器闭合)⚠️ 注意:此规则只有启动功能,没有关闭功能。建议添加另一个规则:湿度>50%时关闭加湿器
场景3:温湿度显示到OLED(定时触发+多动作)
功能:每3秒在OLED屏幕上显示当前温湿度
前提条件
需要先配置OLED显示屏外设(type: 36),假设ID为 oled_display
Web界面配置步骤
步骤1:创建规则
- 点击 新增规则
- 填写基础配置:
- 规则名称:
温湿度显示 - 上报数据:❌ 禁用
- 启用:✅ 启用
- 规则名称:
步骤2:配置触发器
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 定时触发 定时刷新显示 定时模式 选择 间隔定时 每隔X秒执行 间隔秒数 3每3秒刷新一次
步骤3:配置动作(需要3个动作)
动作1:读取温度
- 点击 添加动作 按钮
- 填写:
- 动作类型:选择 传感器读取
- 目标外设:选择
dht_room - 数据字段:
temperature
动作2:读取湿度
- 再次点击 添加动作 按钮
- 填写:
- 动作类型:选择 传感器读取
- 目标外设:选择
dht_room - 数据字段:
humidity
动作3:显示到OLED
第三次点击 添加动作 按钮
填写:
- 动作类型:选择 OLED显示
- 目标外设:选择
oled_display - 显示内容:
温度: ${dht_room.temperature}°C 湿度: ${dht_room.humidity}% - 执行模式:选择 同步
点击 保存 按钮
执行流程:
每3秒
↓
读取温度值
↓
读取湿度值
↓
在OLED上显示两行文本:
第一行: 温度: 25.3°C
第二行: 湿度: 65%💡 变量替换:
${dht_room.temperature}会自动替换为实际读取的温度值
注意事项
- 采样间隔:DHT11 最短采样间隔 1 秒,建议 2 秒以上
- DHT22 兼容:DHT22(AM2302)使用相同配置,精度更高
- 供电:3.3V 和 5V 均可,5V 传输距离更远
- 首次读取:上电后首次读取可能失败,第二次正常
- 线长:数据线不宜超过 20m,长距离需增加上拉电阻
