CI-33T 语音控制红外发射指南:从UART输出到外部模块驱动
·
版本: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等多组引脚之间切换,选择其中一组作为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 |
配置步骤:
- 在命令词页面添加命令词
- 在控制详情中添加端口输出动作
- 选择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官方文档 - 串口输入参数配置
更多推荐



所有评论(0)