
1. 项目概述1.1 系统定位与设计目标本项目是一款面向家庭场景的嵌入式智能红外中控设备核心目标是解决传统家电遥控器碎片化、协议不兼容、操作路径冗长等实际工程问题。区别于消费级成品遥控器该系统采用模块化硬件架构与分层软件设计强调可扩展性、现场适应性与低门槛复现能力。其技术价值不在于单一功能的性能指标而在于多模态控制逻辑的工程整合红外学习与重放、本地人机交互、语音指令解析、Wi-Fi远程通道、状态可视化五个维度在资源受限的MCU平台上实现协同运行。设计约束条件明确主控平台限定为Cortex-M3内核的STM32F103RCT6LQFP64封装Flash容量256KBSRAM 48KB所有外设模块必须满足3.3V电平兼容性整机功耗需适配USB 5V/500mA供电能力物理尺寸需容纳1.44寸LCD、4×4电容键盘及红外发射管阵列。这些约束决定了系统必须采用事件驱动架构避免实时操作系统开销同时对内存管理与中断响应时间进行精细化控制。1.2 功能边界定义系统功能严格遵循“最小可行产品”原则所有特性均服务于家电控制这一核心任务红外学习与重放非通用协议分析而是基于ASC50K模块的原始脉冲捕获与存储。支持NEC、RC5、RC6等主流编码格式的自动识别但不对未知协议做逆向解析仅保证学习信号的时序精度±10μs与载波频率容差38kHz±1kHz。语音控制依赖海凌科V20模块的离线识别能力仅处理预置唤醒词小爱同学/小度小度/天猫精灵后的单轮指令不涉及自然语言理解或云端交互。指令映射关系通过串口配置固化在模块Flash中。无线远程控制ESP8266工作在AT固件模式仅建立TCP透传通道。APP端协议为自定义二进制帧结构包含设备ID、指令类型、红外码索引、继电器状态位等字段无加密与认证机制。本地交互1.44寸SPI LCD128×128分辨率仅显示关键状态不渲染图形界面4×4电容键盘采用I²C转接芯片如TCA9555降低MCU GPIO占用蜂鸣器反馈为固定频率4kHz单音持续时间50ms。执行机构3路光耦隔离继电器触点容量10A/250VAC直接控制家电电源通断不介入家电内部电路。继电器驱动采用ULN2003达林顿阵列确保驱动电流裕量。该边界定义规避了过度设计风险使开发者能聚焦于硬件接口可靠性、时序敏感操作如红外载波调制和多任务调度冲突等真实工程挑战。2. 硬件系统设计2.1 主控单元STM32F103RCT6资源配置STM32F103RCT6作为系统中枢其外设资源分配遵循功能优先与电气隔离原则外设模块MCU引脚工作模式关键参数设置SPI1LCDPA5/PA6/PA7主机模式全双工8MHz时钟CPOL0, CPHA0MSB先发USART1V20PA9/PA10异步通信115200bps8N1硬件流控禁用USART2ESP8266PA2/PA3异步通信115200bps8N1无校验USART3ASC50KPB10/PB11同步半双工SWD9600bps8N1TX/RX共用引脚TIM2红外载波PA0PWM输出38kHz占空比33%死区时间0nsTIM3蜂鸣器PA6PWM输出4kHz占空比50%I²C1键盘PB6/PB7主机模式100kHz标准模式GPIO继电器PC0/PC1/PC2推挽输出低电平有效上拉电阻10kΩADC1电源监测PA0单通道采样12位分辨率采样周期144个周期关键设计考量红外载波生成TIM2通道1配置为PWM通过GPIO_AFIO_REMAP_TIM2_PARTIAL功能将CH1映射至PA0。选择38kHz而非40kHz因绝大多数家电遥控器采用此载波频率且STM32F103在38kHz下PWM分辨率可达12位计数器周期263满足±10μs精度要求。多串口资源协调USART3采用同步半双工模式连接ASC50K避免使用独立RX/TX引脚。通过软件控制RE/DE信号切换收发方向节省2个GPIO。电源完整性USB 5V经AMS1117-3.3稳压后为MCU、LCD、键盘提供3.3V继电器线圈由单独的5V LDORT9193供电避免大电流切换导致MCU供电跌落。所有模拟地与数字地在AMS1117输入端单点连接。2.2 红外信号处理子系统红外链路由ASC50K模块、红外接收头、红外发射管三部分构成形成闭环学习-存储-重放链路ASC50K模块接口特性通信协议UART9600bps指令集包含LEARN启动学习、SEND发送指定索引码、READ读取存储码等12条基础命令存储容量100组红外码每组最大长度255字节含引导码、地址码、数据码、停止位掉电保存内置FRAM存储器写入寿命10¹⁰次无需外部备份电源信号捕获支持30~60kHz载波频率采样精度1μs自动滤除环境光干扰脉冲硬件连接拓扑STM32 PB10(TX) ────┬─── ASC50K RX STM32 PB11(RX) ────┼─── ASC50K TX STM32 PA0(TIM2_CH1) ────┬─── IR LED阳极 └─── 限流电阻100Ω→ NPN三极管S8050→ GND红外发射电路设计要点采用S8050三极管驱动IR LEDTSAL6200基极串联1kΩ电阻限制驱动电流LED阴极接地阳极接3.3V电源通过PWM控制导通时间布局时IR LED与接收头间距≥15cm避免直射干扰LED前方加装黑色遮光筒减少漫反射2.3 人机交互子系统2.3.1 1.44寸SPI LCD显示单元屏幕型号ST7735S驱动的128×128 RGB TFT16位色深接口信号SCLPA5、SDAPA7、A0PA4、RESPA3、CSPA2关键时序SPI时钟≤12MHz实测8MHz稳定CS低电平期间完成单字节传输显示内容组织第1行系统模式LEARN/SEND/APP第2行当前选中设备TV/FAN/HUMID第3行设备状态ON/OFF第4行Wi-Fi连接状态CONNECTED/DISCONNECTED2.3.2 4×4电容矩阵键盘控制芯片TCA9555I²C端口扩展器地址0x20电容按键布局0-9数字键、*确认、#模式切换、A学习、B发送、C清空、D返回按键检测逻辑MCU每50ms发起I²C读取扫描16个输入端口电平变化。当检测到下降沿时启动去抖计时器10ms确认后触发对应功能蜂鸣器驱动PA6输出4kHz方波通过100Ω电阻驱动有源蜂鸣器发声时长50ms2.4 无线通信与执行机构2.4.1 ESP8266 Wi-Fi模块集成模块型号ESP-01S内置ESP8266EX1MB Flash工作模式AT固件模式通过USART2与MCU通信硬件连接MCU PA2(TX2)→ESP TXPA3(RX2)→ESP RXESP CH_PD悬空默认高电平初始化流程上电后延时200ms等待模块启动发送ATRST复位ATCWMODE1设为Station模式ATCWJAPSSID,PWD连接路由器ATCIPMUX0设为单连接ATCIPSTARTTCP,192.168.1.100,8080建立TCP连接APP服务器IP2.4.2 继电器控制电路模块型号Songle SRD-05VDC-SL-C5V线圈10A触点驱动方案ULN2003达林顿阵列IC2IN1/IN2/IN3接MCU PC0/PC1/PC2OUT1/OUT2/OUT3接继电器线圈电气隔离继电器线圈与MCU电源完全分离线圈侧添加续流二极管1N4007触点接线COM端接市电火线NO端接家电电源输入NC端悬空3. 软件系统架构3.1 整体框架设计软件采用前后台系统Foreground-Background System以SysTick为心跳源1ms中断构建时间片轮询机制主循环后台 ├── 键盘扫描50ms周期 ├── LCD刷新200ms周期 ├── 串口数据解析实时 └── 状态机调度10ms周期 中断服务程序前台 ├── SysTick_Handler更新系统滴答触发周期任务标志 ├── USART1_IRQHandler接收V20语音指令 ├── USART2_IRQHandler处理ESP8266网络数据 ├── USART3_IRQHandler与ASC50K通信 └── EXTI0_IRQHandler红外接收头中断PA0上升沿触发该架构避免RTOS的内存开销FreeRTOS最小占用约4KB RAM同时保证红外学习等时序敏感操作的确定性响应。3.2 关键功能模块实现3.2.1 红外学习与重放流程// 红外学习状态机 typedef enum { IR_IDLE, IR_LEARNING, IR_LEARNED, IR_SENDING } ir_state_t; ir_state_t ir_state IR_IDLE; void ir_learn_start(uint8_t index) { // 发送ASC50K学习指令 uint8_t cmd[] {0xAA, 0xBB, 0xCC, index}; uart3_send(cmd, 4); ir_state IR_LEARNING; } void ir_learn_complete(void) { // ASC50K返回学习成功标志 ir_state IR_LEARNED; } void ir_send_code(uint8_t index) { if (ir_state IR_LEARNED || ir_state IR_IDLE) { uint8_t cmd[] {0xDD, 0xEE, 0xFF, index}; uart3_send(cmd, 4); ir_state IR_SENDING; } }学习过程需用户长按原遥控器按键≥2秒ASC50K自动完成载波检测、脉冲宽度测量、协议识别。存储的红外码以原始脉冲数组形式保存重放时由ASC50K内部定时器精确还原时序。3.2.2 语音指令解析海凌科V20模块输出格式为ASCII字符串WAKEUP: XiaoAiTongXue CMD: OPEN TVMCU解析逻辑#define WAKEUP_LEN 15 #define CMD_LEN 10 char wakeup_buf[WAKEUP_LEN]; char cmd_buf[CMD_LEN]; void parse_v20_response(char *buf) { if (strncmp(buf, WAKEUP:, 7) 0) { strncpy(wakeup_buf, buf7, WAKEUP_LEN-1); } else if (strncmp(buf, CMD:, 4) 0) { strncpy(cmd_buf, buf4, CMD_LEN-1); execute_voice_cmd(cmd_buf); } } void execute_voice_cmd(char *cmd) { if (strstr(cmd, OPEN TV)) { relay_control(0, RELAY_ON); // 控制TV继电器 lcd_show_status(TV: ON); } else if (strstr(cmd, CLOSE FAN)) { relay_control(1, RELAY_OFF); lcd_show_status(FAN: OFF); } }3.2.3 Wi-Fi远程控制协议APP与设备间采用二进制帧结构长度固定16字节字段偏移长度说明02帧头0x55AA21设备ID0x0131指令类型0x01继电器控制41继电器索引0-251状态0x00OFF, 0x01ON68预留字段MCU解析代码typedef struct { uint16_t header; uint8_t dev_id; uint8_t cmd_type; uint8_t relay_idx; uint8_t relay_state; uint8_t reserved[8]; } wifi_frame_t; void wifi_parse_frame(uint8_t *data) { wifi_frame_t *frame (wifi_frame_t*)data; if (frame-header 0x55AA frame-dev_id 0x01) { if (frame-cmd_type 0x01) { relay_control(frame-relay_idx, frame-relay_state); } } }4. BOM清单与器件选型依据序号器件名称型号/规格数量选型依据1主控芯片STM32F103RCT61Cortex-M3内核256KB Flash满足多协议栈存储LQFP64封装便于手工焊接2红外学习模块ASC50K1集成FRAM存储支持100组码工业级温度范围-40℃~85℃免校准设计3语音识别模块海凌科V201支持离线唤醒词定制误唤醒率0.1%/天工作电压3.3V兼容MCU电平4Wi-Fi模块ESP-01S1成本低于ESP32AT指令集成熟内置PCB天线满足家庭环境通信距离≤30m5LCD显示屏1.44寸SPI TFT1分辨率128×128适配信息显示需求SPI接口减少MCU引脚占用ST7735S驱动成熟6继电器模块Songle SRD-05VDC-SL-C3触点容量10A/250VAC覆盖家电功率需求线圈电压5V与USB供电匹配7电容键盘4×4矩阵板1采用PCB蚀刻电容成本低于薄膜键盘I²C接口降低MCU资源占用8稳压芯片AMS1117-3.31最大输出电流1A满足系统峰值功耗低压差1.1V1A提升转换效率9达林顿阵列ULN20031集成续流二极管简化继电器驱动电路灌电流能力500mA/通道10红外发射管TSAL6200138kHz中心频率辐射强度100mW/sr环氧树脂封装抗环境光干扰5. 系统调试与验证方法5.1 硬件层验证要点红外载波测试示波器探头接IR LED阳极观察PA0输出PWM波形确认频率38.0±0.5kHz占空比33±2%串口通信验证使用USB-TTL模块监听USART3发送ATVERSION指令确认ASC50K返回固件版本继电器驱动验证万用表测量继电器线圈两端电压确认MCU输出低电平时为4.8~5.0VULN2003饱和压降0.5VLCD初始化验证上电后观察屏幕是否显示初始化图案如全白/全黑排除SPI时序错误5.2 软件层调试策略状态机跟踪通过PA1引脚输出状态机跳变沿示波器捕获各模式切换时序内存泄漏检测启用STM32CubeMX的heap统计功能监控malloc/free平衡性中断响应测试在EXTI0_IRQHandler中翻转PB0用示波器测量从红外接收头输出跳变到PB0翻转的时间差应5μs5.3 系统级联调流程单模块验证逐个测试红外学习、语音识别、Wi-Fi连接功能确认独立工作正常双模块协同验证语音指令触发继电器动作的端到端延迟实测≤800ms多任务压力测试同时进行红外学习长按遥控器、APP发送指令、键盘操作观察系统是否出现丢包或死锁长期稳定性测试连续运行72小时监测USB供电电流波动应保持在120±15mA该调试体系确保每个硬件模块的电气特性、软件模块的时序约束、系统级的资源竞争均得到量化验证为量产提供可靠依据。