版本:v1.0 | 创建日期:2026-03-02
适用模组:CI-33T、CI-03T(带UART1串口输出功能)
素材来源:SmartPi官方文档(红外控制FAQ/UART配置)+ 技术交流群真实案例

前言

在语音控制空调、电视、机顶盒等红外设备的产品开发中,一个核心问题是:语音模组如何控制红外发射?

CI-33T模组本身不集成红外发射功能,但可以通过UART1串口输出控制外部红外发射模块。这种方案的优势在于:

  • 红外发射模块可以独立安装,获得更好的发射角度
  • 支持多种红外协议(NEC、RC5、RC6等)
  • 语音识别与红外发射解耦,便于调试

本文将系统讲解CI-33T通过UART1控制外部红外发射模块的完整方案。


一、方案架构

1.1 系统组成

┌─────────────┐     UART1_TX     ┌──────────────┐
│             │ ───────────────>  │   外部红外    │
│   CI-33T    │    (3.3V TTL)     │   发射模块    │ ─── IR ───> 被控设备
│  语音模组    │                   │  (NEC/RC5等)  │
│             │                   │              │
└─────────────┘                   └──────────────┘

1.2 各部分功能说明

组件 功能 关键参数
CI-33T 语音识别,识别结果转换为串口指令 UART1_TX,3.3V电平
红外发射模块 接收串口指令,发射红外信号 支持NEC/RC5等协议
被控设备 接收红外信号,执行对应操作 空调/电视/机顶盒等

二、硬件选型:红外发射模块

2.1 常用红外发射模块类型

模块类型 通信接口 支持协议 优势 劣势
NEC协议模块 UART/IO NEC 使用广泛,成本低 协议单一
RC5/RC6模块 UART RC5/RC6 适用于飞利浦设备 应用范围较窄
可编程模块 UART 多协议 灵活性高 成本较高

2.2 硬件连接注意事项

电平匹配

  • CI-33T的UART1_TX输出3.3V TTL电平
  • 大多数红外发射模块也支持3.3V逻辑电平
  • 如果使用5V模块,需要添加电平转换电路

典型连接

CI-33T                  红外发射模块
─────────────────────────────────────
B2 (UART1_TX) ───────> DIN/UART_RX
GND ────────────────> GND
VCC (可选) ─────────> VCC (如需供电)

三、SmartPi平台配置

3.1 启用UART1功能

步骤1:Pin脚配置

在SmartPi平台的Pin脚配置页面:

  1. 找到B2引脚(或其他支持UART1_TX的引脚组)
  2. 将其配置为UART1_TX功能

注意:CI-33T的UART1功能可以在B2/B3、B6/B7等多组引脚之间切换,选择其中一组作为UART1使用即可。

步骤2:波特率配置

在串口配置中设置:

  • 波特率:9600(与红外模块匹配)
  • 数据位:8
  • 停止位:1
  • 校验位:无

3.2 配置语音指令触发串口输出

示例:空调控制

命令词 控制动作 串口输出数据
打开空调 端口输出 → UART1_TX AA 01 55
关闭空调 端口输出 → UART1_TX AA 02 55
制冷模式 端口输出 → UART1_TX AA 03 01 55
制热模式 端口输出 → UART1_TX AA 03 02 55

配置步骤

  1. 命令词页面添加命令词
  2. 控制详情中添加端口输出动作
  3. 选择UART1_TX作为控制类型
  4. 输入十六进制数据(如AA 01 55
  5. 生成并烧录固件

四、红外发射模块配置

4.1 NEC协议红外模块配置示例

以常见的NEC协议红外模块为例,展示如何将CI-33T输出的串口数据转换为红外信号。

串口数据格式(示例)

帧头    设备ID    命令    帧尾
AA     00 FF    01     55

红外模块处理逻辑(伪代码)

// 红外模块端处理逻辑
void uart_handler(uint8_t data) {
    static uint8_t buffer[16];
    static uint8_t index = 0;

    buffer[index++] = data;

    // 检查接收完整性
    if (buffer[0] == 0xAA && buffer[index-1] == 0x55) {
        // 提取设备ID和命令
        uint8_t device_id_high = buffer[1];
        uint8_t device_id_low = buffer[2];
        uint8_t command = buffer[3];

        // 发射NEC协议红外信号
        nec_transmit(device_id_high, device_id_low, command);

        index = 0;
    }
}

4.2 红外发射角度与距离

因素 建议值 说明
发射角度 30°-60° 典型红外发射管角度
有效距离 5-10米 取决于发射功率和环境
安装位置 设备正前方 避免遮挡
环境光 避免强光直射 强光可能干扰红外接收

五、完整配置示例

5.1 空调控制完整配置

场景描述:用户通过语音控制空调开关和模式切换。

SmartPi平台配置

命令词 串口输出 含义
“打开空调” AA 01 00 FF 55 电源开
“关闭空调” AA 01 01 FD 55 电源关
“制冷模式” AA 01 02 FD 55 模式制冷
“制热模式” AA 01 03 FC 55 模式制热
“风速小” AA 01 04 FB 55 风速低速
“风速大” AA 01 05 FA 55 风速高速

红外模块映射

接收数据 → 设备地址=0x00, 命令码=0x01 → 发射NEC信号 → 空调执行

5.2 电视控制完整配置

场景描述:语音控制电视开关和频道切换。

命令词 串口输出 说明
“打开电视” BB 00 01 FE 55 电视电源
“关闭电视” BB 00 02 FD 55 电视待机
“频道加” BB 00 03 FC 55 频道+
“频道减” BB 00 04 FB 55 频道-
“音量加” BB 00 05 FA 55 音量+
“音量减” BB 00 06 F9 55 音量-

六、常见问题排查

6.1 串口有输出但红外不发射

排查步骤

  1. 检查串口连接

    • 使用示波器或逻辑分析仪查看UART1_TX是否有波形
    • 确认TX连接到红外模块的RX/DIN引脚
  2. 检查数据格式

    • 确认红外模块期望的帧格式
    • 检查帧头帧尾是否正确
  3. 检查波特率

    • CI-33T配置的波特率必须与红外模块一致
  4. 检查供电

    • 确认红外模块供电正常
    • 检查发射管工作电流

6.2 红外发射距离短

可能原因与解决方案

问题 原因 解决方案
发射距离<2米 发射管角度过大 更换小角度发射管
发射距离<2米 驱动电流不足 增加限流电阻或更换模块
发射距离<2米 环境光干扰 避免阳光直射

6.3 部分指令无效

排查方向

  1. 确认红外协议:被控设备的红外协议可能与模块默认不一致
  2. 确认命令码:使用红外学习功能确认正确的命令码
  3. 检查数据完整性:确认串口数据没有丢失或错误

七、进阶应用

7.1 多设备控制

通过UART1输出不同地址的数据,控制多个红外设备:

地址0x00 ──> 空调
地址0x01 ──> 电视
地址0x02 ──> 机顶盒

7.2 红外学习功能

部分高级红外模块支持红外学习功能:

  1. 将遥控器对准红外模块
  2. 发送学习命令,模块记录红外信号
  3. 将学习到的信号与CI-33T输出的命令码关联

7.3 双向通信

部分红外模块支持双向通信(红外发射+接收):

  • 发射:CI-33T → UART1_TX → 红外模块 → 被控设备
  • 接收:被控设备遥控器 → 红外模块 → UART1_RX → CI-33T

八、方案对比

8.1 内置红外 vs 外置红外

对比维度 内置红外(部分模组) 外置红外模块
成本 较低 较高
灵活性 固定协议 可更换协议
发射距离 受限于安装位置 可优化安装位置
调试难度 较高 较低
适用场景 固定设备 多设备/远距离

8.2 直接IO控制 vs UART控制

控制方式 优势 劣势
GPIO直接驱动 简单,成本低 只能简单调制,协议单一
UART控制 支持复杂协议,灵活 需要外部MCU处理

九、总结

通过CI-33T的UART1串口控制外部红外发射模块,是一种灵活且可靠的语音红外控制方案。核心要点:

  1. 硬件连接:UART1_TX连接红外模块的RX,注意电平匹配
  2. 平台配置:在Pin脚配置中启用UART1_TX,设置正确波特率
  3. 数据格式:串口输出数据需与红外模块期望的格式匹配
  4. 测试验证:使用示波器或串口调试工具验证数据传输

对于需要控制多个红外设备或复杂协议的场景,推荐使用可编程红外模块,通过UART实现灵活控制。


参考资料

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐