示例21:红外遥控
大约 3 分钟
示例21:红外遥控
实验概述
通过红外接收器(如 VS1838B)接收红外遥控器信号,解码后触发设备动作。FastBee 在 ESP32-S3(full 固件)中内置 IR_REMOTE 驱动,支持 NEC、RC5、SONY 等协议自动解码。
注意:红外遥控功能仅在 ESP32-S3(full 固件)中可用,需要编译开关
FASTBEE_ENABLE_IR_REMOTE=1。ESP32-S3 RMT 驱动配置:ESP32-S3 的 RMT 驱动存在新旧版本冲突问题。全功能版本已通过以下配置禁用新驱动:
-DCONFIG_RMT_ENABLE=0 -DIR_USE_GPIO=1如果使用其他环境需要红外功能,请确保添加以上编译标志。
硬件接线
| 开发板标识 | GPIO引脚 | 连接设备 |
|---|---|---|
| IR_RX | GPIO15 | VS1838B 红外接收器(OUT引脚) |
VS1838B 接线:VCC→3.3V, GND→GND, OUT→GPIO15。
JSON 配置示例
{
"peripherals": [
{
"id": "ir_recv",
"name": "红外接收器",
"type": 38,
"enabled": false,
"pins": [15],
"params": {
"category": "ir_remote"
}
}
]
}外设执行联动
场景1:遥控器按键控制LED(事件触发)
功能:任意按键按下时切换LED状态
Web界面配置步骤
步骤1:确保已配置LED外设
- 外设ID:
led_d1 - 类型:GPIO输出
步骤2:创建规则
- 点击左侧菜单 外设配置 → 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 填写基础配置:
- 规则名称:
红外控制LED - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
步骤3:配置触发器(事件触发)
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 事件触发 响应红外事件 事件类型 125红外键值接收事件 事件来源 ir_recv红外接收器外设ID
步骤4:配置动作
点击 添加动作 按钮
填写:
- 动作类型:选择 切换电平
- 目标外设:选择
led_d1
点击 保存 按钮
场景2:不同按键执行不同动作(事件触发+脚本)
功能:按键1开灯,按键2关灯
Web界面配置步骤
- 创建规则,名称:
红外多功能控制 - 触发器配置:
- 触发类型:选择 事件触发
- 事件类型:
125 - 事件来源:
ir_recv
- 动作配置:
- 动作类型:选择 命令脚本
- 动作参数:
var code=event.data.code; if(code==0xFF30CF){gpioWrite('led_d1',0);} // 按键1:开灯 if(code==0xFF18E7){gpioWrite('led_d1',1);} // 按键2:关灯 - 点击 保存
常见遥控器键值(NEC协议)
| 按键 | 键值 | 说明 |
|---|---|---|
| 1 | 0xFF30CF | 数字键1 |
| 2 | 0xFF18E7 | 数字键2 |
| 3 | 0xFF7A85 | 数字键3 |
| OK | 0xFF02FD | 确认键 |
| ▲ | 0xFF629D | 上 |
| ▼ | 0xFFA857 | 下 |
💡 提示:不同品牌遥控器键值不同,请先通过日志查看实际接收到的键值
注意事项
- 仅 S3-full:此功能需要 ESP32-S3 + full 固件(
FASTBEE_ENABLE_IR_REMOTE=1) - RMT 驱动兼容性:ESP32-S3 的 RMT 新驱动(driver_ng)与旧版 legacy driver 不可共存,会导致启动失败。全功能版本已配置禁用新驱动
- 接收距离:VS1838B 典型接收距离 8-10m,需对准接收器
- 环境光干扰:强烈阳光或荧光灯可能干扰红外接收
- 协议支持:自动识别 NEC、RC5、RC6、SONY、Samsung 等协议
- 重复码:长按时会收到重复码(NEC: 0xFFFFFFFF),需在脚本中过滤
