1. 项目背景与核心功能
这个项目源于去年夏天一次真实的痛点经历。当时我在工作室调试电路板,38度高温下汗水不断滴到开发板上,而传统风扇要么固定角度吹不到,要么噪音太大影响工作。市面上所谓的"智能风扇"动辄上千元,功能却华而不实。于是决定用STM32开发一套真正实用的智能语音控制系统。
核心功能实现:
- 基础送风:支持3档风速调节,通过PWM控制电机转速
- 语音交互:本地离线识别常用指令("调大风速"、"摇头"、"定时关闭"等)
- 姿态追踪:基于红外热释电传感器自动追踪人体位置
- 节能模式:无人时自动降速,检测到人靠近恢复设定风速
提示:选择STM32F103C8T6作为主控,因其具备足够的GPIO和PWM资源,且成本控制在30元以内,非常适合这类嵌入式控制场景。
2. 硬件设计与关键器件选型
2.1 主控电路设计
采用最小系统板+扩展板的结构:
- 核心板:STM32F103C8T6(72MHz主频,64KB Flash)
- 电源模块:AMS1117-3.3V稳压芯片
- 电机驱动:BTN7971B大电流H桥(峰值电流70A)
- 传感器接口:
- HC-SR501人体红外模块
- MAX9814麦克风放大器
- 180°伺服电机(用于摇头机构)
电路设计中的关键细节:
- 电机电源与MCU完全隔离,防止干扰
- 麦克风电路增加100Hz高通滤波,消除环境低频噪声
- 所有数字信号线串联100Ω电阻抑制振铃
2.2 语音识别方案对比
测试了三种方案后最终选择:
- LD3320语音识别芯片(离线方案)
- 对比项:
- 科大讯飞在线API(需联网)
- SNIPS本地方案(资源占用过高)
LD3320的优势在于:
- 50条本地指令存储
- 95%以上的中文识别率(安静环境下)
- 仅需UART通信接口
- 待机电流<1mA
3. 软件架构与核心算法
3.1 主程序流程图
c复制void main() {
hardware_init();
while(1) {
if(voice_cmd_detected()) {
process_voice_command();
}
