IR Remote Receiver
IR Remote Receiver
Synchronized Device Documentation
This page corresponds to the synchronized Chinese source. Commands, JSON examples, API paths, field names, and screenshots are kept aligned with the Chinese device-side source documentation.
What This Page Covers
- Peripheral capability, supported device types, and wiring constraints.
- Web console configuration fields and recommended parameter values.
- PeriphExec integration, validation steps, and troubleshooting notes.
Source Reference
The detailed operational source is preserved below so implementation details stay exact while the English navigation, titles, and reading path remain available.
红外遥控接收器
功能说明
红外遥控接收模块用于接收标准红外遥控器信号(NEC/RC5/Sony等协议),解码后产生系统事件。适用于遥控灯光、切换模式、远程控制等场景。
固件要求:仅 ESP32-S3 full 固件支持(需启用
FASTBEE_ENABLE_IR_REMOTE编译开关)。
支持的外设类型
| 类型 | type值 | 说明 |
|---|---|---|
| SENSOR | 38 | 红外接收器(IR Remote) |
事件编号
| 事件 | 编号 | 说明 |
|---|---|---|
| EVENT_IR_CODE_RECEIVED | 125 | 收到红外编码 |
硬件接线
VS1838B 红外接收头
| 接收头引脚 | ESP32-S3 GPIO | 说明 |
|---|---|---|
| OUT(信号) | GPIO 15 | 数据输出 |
| VCC | 3.3V | 电源 |
| GND | GND | 地 |
红外接收头通常有三个引脚,从正面看(凸面朝向自己):左=OUT,中=GND,右=VCC。不同型号可能有差异,请参考数据手册。
配置方式
方式1:Web界面配置(推荐)
红外遥控保存前重点核对接收/发射引脚、协议类型和载波频率。
步骤1:进入外设管理页面
- 打开浏览器访问 ESP32 IP 地址
- 登录后点击左侧菜单 外设配置
步骤2:添加红外接收器外设
点击 新增外设 按钮
填写配置:
字段 填写内容 说明 外设ID ir_recv1唯一标识符 名称 红外接收器显示名称 外设类型 通用传感器 (type: 38) 红外驱动 引脚配置 15OUT信号引脚 驱动名称 IR_REMOTE固定值 解码协议 NECNEC/RC5/SONY/AUTO 检测间隔 100100ms(50-200) 点击 保存
步骤3:验证配置
- 在外设列表中找到刚添加的外设
- 点击 启用 开关
- 使用遥控器按键,查看上报的红外编码
⚠️ 重要:仅ESP32-S3 full固件支持,需启用红外驱动编译开关
方式2:JSON配置文件导入
将以下配置添加到 data/config/peripherals.json 的 peripherals 数组中:
{
"id": "ir_recv1",
"name": "红外接收器",
"type": 38,
"enabled": false,
"pins": [15],
"params": {
"driver": "IR_REMOTE",
"protocol": "NEC",
"interval": 100
}
}参数说明
| 参数 | 说明 |
|---|---|
| driver | 驱动名称,固定为 "IR_REMOTE" |
| protocol | 解码协议:NEC(默认)、RC5、SONY、AUTO(自动识别) |
| interval | 接收检测间隔(ms),建议 50-200 |
pins[0] = 红外接收头数据引脚
数据上报格式
收到红外信号时通过 MQTT 上报解码值:
[{"id": "ir_recv1", "value": "code:0xFF30CF,protocol:NEC,bits:32"}]| 字段 | 说明 |
|---|---|
| code | 解码后的红外编码(十六进制) |
| protocol | 识别的协议类型 |
| bits | 编码位数 |
常用 NEC 遥控器编码参考
普中实验套件配套遥控器常用按键编码:
| 按键 | 编码 | 按键 | 编码 |
|---|---|---|---|
| CH- | 0xFFA25D | CH | 0xFF629D |
| CH+ | 0xFFE21D | PREV | 0xFF22DD |
| NEXT | 0xFF02FD | PLAY | 0xFFC23D |
| VOL- | 0xFFE01F | VOL+ | 0xFFA857 |
| EQ | 0xFF906F | 0 | 0xFF6897 |
| 1 | 0xFF30CF | 2 | 0xFF18E7 |
| 3 | 0xFF7A85 | 4 | 0xFF10EF |
| 5 | 0xFF38C7 | 6 | 0xFF5AA5 |
| 7 | 0xFF42BD | 8 | 0xFF4AB5 |
| 9 | 0xFF52AD | 100+ | 0xFF9867 |
事件触发机制
收到红外编码时触发 EVENT_IR_CODE_RECEIVED(125)事件,事件数据中包含解码值,可在 periph_exec 规则中使用。
与外设执行联动
Web界面配置步骤
创建遥控器控制LED规则
- 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 配置事件触发器:
- 触发类型:事件触发
- 事件源:ir_recv1
- 事件编号:125(红外编码接收)
- 匹配值:0xFF30CF(按键1的编码)
- 添加动作:
- 动作类型:切换电平
- 目标外设:led1
- 点击 保存
💡 提示:使用“常用NEC遥控器编码参考”表查找按键编码
JSON配置示例
遥控器控制 LED
{
"name": "遥控开灯",
"enabled": true,
"triggers": [
{
"type": "event",
"params": {
"periphId": "ir_recv1",
"eventCode": 125,
"matchValue": "0xFF30CF"
}
}
],
"actions": [
{
"type": "gpio_toggle",
"params": {
"periphId": "led1"
}
}
]
}遥控器调节 PWM 亮度
{
"name": "遥控调亮",
"enabled": true,
"triggers": [
{
"type": "event",
"params": {
"periphId": "ir_recv1",
"eventCode": 125,
"matchValue": "0xFFA857"
}
}
],
"actions": [
{
"type": "pwm_write",
"params": {
"periphId": "pwm_led1",
"value": "255"
}
}
]
}遥控器切换模式
{
"name": "遥控切换模式",
"enabled": true,
"triggers": [
{
"type": "event",
"params": {
"periphId": "ir_recv1",
"eventCode": 125,
"matchValue": "0xFFC23D"
}
}
],
"actions": [
{
"type": "event_emit",
"params": { "event": "mode_switch" }
}
]
}注意事项
- 固件版本:仅 ESP32-S3 full 固件包含红外驱动,slim 固件不支持
- 环境光干扰:强日光或荧光灯可能干扰红外接收,建议遮光安装
- 接收角度:VS1838B 接收角度约 ±45°,正对时效果最佳
- 重复码:长按按键会发送重复码(0xFFFFFFFF),规则设计时需考虑去重
- 多协议支持:设置
protocol: "AUTO"可自动识别协议,但解码速度略慢 - 距离限制:典型接收距离 5-8m,受发射功率和环境影响
