基于STM32单片机的智能语音控制风扇
本文介绍了一款基于STM32F103C8T6单片机的智能语音控制风扇系统。该系统集成了语音识别、温度传感、人体感应等多种功能模块,实现了手动、自动和语音三种控制模式。在硬件设计方面,详细阐述了各功能模块的电路实现;在软件设计上,采用模块化编程思路,给出了主程序流程和关键功能代码。系统支持温度自动调节、人体感应启停、语音指令控制等功能,并通过LCD实时显示运行状态。该设计体现了嵌入式系统在智能家居领
基于STM32单片机的智能语音控制风扇设计
1 功能介绍
本系统是一款基于STM32F103C8T6单片机的智能语音控制风扇。通过语音识别模块、温度传感器、人体感应模块等多种硬件的协同工作,实现了手动、自动、语音三种控制模式。系统既能满足用户日常手动调节风扇的需求,也能根据环境情况进行自动化控制,还能利用语音指令进行操作,真正实现了人性化和智能化的功能。
具体功能如下:
- 电源指示灯:系统通电后,电源指示灯点亮,提示用户设备已进入工作状态。
- 模式切换:通过按键可以在手动、自动和语音三种模式之间进行切换。
- 手动模式:用户可通过档位按键选择一档、二档或三档控制风扇速度,同时通过人体感应模块实现“人来风扇启动,人走风扇关闭”的功能。
- 自动模式:系统通过温度传感器检测环境温度,并结合人体感应模块判断是否有人,最终根据温度区间控制风扇档位。当温度过高时,蜂鸣器报警,并自动关闭风扇。
- 语音模式:通过ASRPRO语音识别模块采集语音指令,实现与手动模式相同的功能,只是输入方式由按键变为语音。
- 定时模式:用户可在任意模式下按下“定时”键进入定时状态,演示设置的最长定时时间为60s,到时风扇自动关闭。
- 信息显示:LCD1602实时显示温度值、风扇档位、当前运行模式及定时时间,帮助用户清晰了解当前系统工作状态。
该系统充分结合了STM32的强大处理能力与外围模块的多样化功能,体现了现代家用电器的智能化设计理念。
2 系统电路设计
2.1 STM32F103C8T6最小系统
STM32F103C8T6作为主控芯片,承担整个系统的信号采集、逻辑运算、模式判断以及外设驱动功能。最小系统包括电源电路、时钟电路和复位电路。其32位ARM Cortex-M3内核可提供较高的运算效率,足以处理语音控制、传感器数据采集与多任务运行。
2.2 语音识别模块ASRPRO
ASRPRO语音识别模块用于采集用户语音指令并转换为串口信号传输至STM32。该模块支持常用的开关、档位调节等指令,能够快速响应用户的语音输入。在语音模式下,系统将根据识别到的语音指令进行操作,例如“开启风扇”、“关闭风扇”、“一档”、“二档”等。
2.3 温度传感器模块
温度传感器用于检测当前环境温度,并将数据反馈给STM32。通过编程可以实现温度区间判断与风扇档位调节,例如:
- 20℃<温度≤25℃:运行一档;
- 25℃<温度≤30℃:运行二档;
- 30℃<温度≤40℃:运行三档;
- 温度>40℃:蜂鸣器报警并关闭风扇。
2.4 HC-SR501人体感应模块
HC-SR501模块基于红外热释电原理,可检测周围是否有人。在手动和自动模式下,该模块起到启停风扇的重要作用,即“人在风扇工作,无人风扇停止”,从而避免能源浪费并提升安全性。
2.5 蜂鸣器电路
蜂鸣器作为声光报警模块,当温度超过40℃或系统需要发出提示时启动,发出报警声,提醒用户环境异常或操作完成。
2.6 风扇驱动电路
风扇通过三档电机控制电路进行驱动,采用PWM调速方式控制不同的转速档位。电机与单片机之间通过三极管或MOSFET进行隔离与驱动,保证系统稳定性与安全性。
2.7 LCD1602显示电路
LCD1602用于实时显示温度、档位、模式和定时信息。其接口采用并行通信方式,通过数据总线与STM32相连,显示信息清晰直观,便于用户查看。
2.8 按键电路
系统配置了多个按键:
- 模式切换按键:在手动、自动、语音模式之间切换。
- 档位按键:在手动模式下选择不同风速。
- 定时按键:进入定时模式,并设置倒计时时间。
2.9 电源电路
系统采用稳压电源模块,将输入电压稳定为5V供给外围电路,STM32通过LDO稳压进一步得到3.3V电源。电源指示灯用于提示电源状态。
3 程序设计
系统程序基于STM32固件库开发,采用模块化编程思路,将功能分为语音识别、温度采集与处理、人体检测、模式管理、定时管理、风扇控制与LCD显示等部分。
3.1 主程序流程
主程序主要完成系统初始化、模式切换与任务调度。
int main(void)
{
System_Init(); // 系统初始化
LCD_Init(); // LCD初始化
TempSensor_Init(); // 温度传感器初始化
Voice_Init(); // 语音识别模块初始化
PIR_Init(); // 人体感应模块初始化
Fan_Init(); // 风扇控制初始化
Timer_Init(); // 定时功能初始化
while(1)
{
Key_Scan(); // 检测按键输入
Voice_Process(); // 处理语音指令
Temp_Process(); // 处理温度传感器数据
PIR_Process(); // 处理人体感应数据
Mode_Control(); // 模式逻辑判断
Timer_Process(); // 定时功能处理
LCD_Display(); // 刷新显示信息
}
}
3.2 温度采集与控制程序
温度模块通过ADC采样并进行判断,决定风扇档位与报警条件。
void Temp_Process(void)
{
float temp = Temp_Read(); // 读取温度
if(currentMode == AUTO_MODE && pirFlag == 1)
{
if(temp > 20 && temp <= 25)
Fan_SetSpeed(1);
else if(temp > 25 && temp <= 30)
Fan_SetSpeed(2);
else if(temp > 30 && temp <= 40)
Fan_SetSpeed(3);
else if(temp > 40)
{
Buzzer_On();
Fan_Stop();
}
}
}
3.3 人体感应处理程序
人体感应模块用于判断是否有人,若无人则停止风扇。
void PIR_Process(void)
{
if(PIR_Read() == 1)
{
pirFlag = 1;
}
else
{
pirFlag = 0;
Fan_Stop();
}
}
3.4 语音识别控制程序
通过串口接收ASRPRO语音识别结果,并执行相应指令。
void Voice_Process(void)
{
if(currentMode == VOICE_MODE)
{
char cmd = Voice_ReadCmd();
switch(cmd)
{
case '1': Fan_SetSpeed(1); break;
case '2': Fan_SetSpeed(2); break;
case '3': Fan_SetSpeed(3); break;
case 'O': Fan_Stop(); break; // 关闭风扇
default: break;
}
}
}
3.5 手动模式控制程序
用户通过按键进行档位选择,结合人体感应模块进行启停。
void Manual_Control(void)
{
if(currentMode == MANUAL_MODE && pirFlag == 1)
{
if(Key_Read(KEY1)) Fan_SetSpeed(1);
if(Key_Read(KEY2)) Fan_SetSpeed(2);
if(Key_Read(KEY3)) Fan_SetSpeed(3);
}
}
3.6 定时功能程序
定时功能用于在任意模式下自动关闭风扇。
void Timer_Process(void)
{
if(timerEnable)
{
if(timerCount > 0)
{
timerCount--;
if(timerCount == 0)
{
Fan_Stop();
}
}
}
}
3.7 LCD显示程序
LCD显示当前温度、模式、档位和定时信息。
void LCD_Display(void)
{
LCD_Clear();
LCD_ShowString(0,0,"Temp:");
LCD_ShowNum(0,5,(int)temperature,2);
LCD_ShowString(1,0,"Mode:");
if(currentMode == MANUAL_MODE) LCD_ShowString(1,5,"Manual");
else if(currentMode == AUTO_MODE) LCD_ShowString(1,5,"Auto");
else if(currentMode == VOICE_MODE) LCD_ShowString(1,5,"Voice");
LCD_ShowString(0,10,"Fan:");
LCD_ShowNum(0,14,fanSpeed,1);
LCD_ShowString(1,12,"T:");
LCD_ShowNum(1,14,timerCount,2);
}
4 总结
基于STM32单片机的智能语音控制风扇系统,融合了语音识别、温度传感、人体感应、自动调速、LCD信息显示等多种功能。该系统不仅能通过传统按键进行操作,还能根据环境温度和人体活动实现智能控制,更支持语音输入,极大提升了用户体验与交互方式。其设计思路具有较强的扩展性,可进一步拓展到智能家居系统,如与无线模块结合实现远程控制。
整个系统在硬件电路和软件程序上都体现了智能化与人性化,展示了嵌入式系统在智能生活场景中的应用价值。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)