文档版本: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脚配置页面中:
- 找到B2引脚(或其他支持UART1_TX的引脚组)
- 将其配置为UART1_TX功能
提示:CI-33T的UART1功能可在B2/B3、B6/B7等多组引脚间切换,任选一组即可,无需纠结。
步骤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 |
配置步骤说明:
- 在命令词页面中添加所需的命令词
- 在控制详情中添加端口输出动作
- 选择UART1_TX作为控制类型
- 输入对应的十六进制数据(如
AA 01 55) - 生成并烧录固件
四、红外发射模块配置方法
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 串口有输出但红外不发射
排查步骤:
检查串口连接状态
- 使用示波器或逻辑分析仪观察UART1_TX引脚是否有波形
- 确认TX引脚已正确连接至红外模块的RX/DIN引脚
核对数据格式
- 确认红外模块所期望的帧格式是否与配置一致
- 检查帧头与帧尾是否正确匹配
验证波特率设置
- CI-33T配置的波特率必须与红外模块严格一致,偏差将导致通信失败
检查供电情况
- 确认红外模块供电正常,且发射管工作电流满足要求
6.2 红外发射距离偏短
可能原因与解决方案:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 发射距离<2米 | 发射管角度过大 | 更换小角度发射管 |
| 发射距离<2米 | 驱动电流不足 | 增加限流电阻或更换模块 |
| 发射距离<2米 | 环境光干扰 | 避免阳光直射 |
6.3 部分指令无效
排查方向:
- 确认红外协议:被控设备的红外协议可能与模块默认设置不一致,需仔细核对
- 验证命令码:建议使用红外学习功能抓取遥控器发出的正确码值进行比对
- 检查数据完整性:通过串口调试工具抓取数据,确认是否存在丢包或错位
七、进阶应用场景
7.1 多设备控制
通过UART1输出不同地址的数据,即可实现对多个红外设备的独立控制:
地址0x00 ──> 空调
地址0x01 ──> 电视
地址0x02 ──> 机顶盒
7.2 红外学习功能
部分高级红外模块支持红外学习功能,操作流程如下:
- 将遥控器对准红外模块
- 发送学习命令,模块自动记录红外信号
- 将学习到的信号与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串口控制外部红外发射模块,是目前较为灵活且可靠的语音红外控制方案。回顾全文,核心要点如下:
- 硬件连接:UART1_TX连接红外模块的RX,注意电平匹配
- 平台配置:在Pin脚配置中开启UART1_TX,正确设置波特率
- 数据格式:确保串口输出的数据与红外模块期望的格式完全匹配
- 测试验证:使用示波器或串口调试工具进行一轮验证,确保数据传输正确
如需控制多个设备或处理复杂协议,建议选用可编程红外模块,通过UART实现灵活控制,一步到位。
参考资料
- SmartPi官方文档 - CI-33T产品文档
- SmartPi官方文档 - UART1配置说明
- SmartPi官方文档 - 红外控制FAQ
- SmartPi官方文档 - 串口输入参数配置
