M-Design设计竞赛 - 基于STM32实现智能家居系统
该项目使用了STM32,实现了智能家居系统的设计,它的主要功能为:通过蓝牙或语音指令控制门窗、灯光等设备,系统还能实时监测温湿度、烟雾浓度、是否下雨等环境信息,并根据情况自动调节家居设备状态,实现智能化家居管理。。
标签
STM32
M-Design设计竞赛
智能家居系统
yungver
更新2025-04-02
86

基于STM32的智能家居系统

一、项目介绍

本项目是参加2025贸泽电子M-Design创意设计竞赛的方向三:无线通信、物联网 作业。本智能家居系统集成了蓝牙通信、语音识别、环境监测等多种功能,旨在为用户打造便捷、舒适、安全的家居环境。用户可通过蓝牙或语音指令控制门窗、灯光等设备,系统还能实时监测温湿度、烟雾浓度、是否下雨等环境信息,并根据情况自动调节家居设备状态,实现智能化家居管理。

二、创意介绍

本项目将多种交互方式(蓝牙和语音)与全面的环境监测功能相结合,为用户提供多样化控制选择。系统具备自动调节功能,可根据环境变化自动调整设备状态,无需手动干预。此外,用户还能通过蓝牙设置温湿度上下限,增强了系统的个性化和适应性。

三、硬件介绍

  • 主控芯片:STM32,作为核心控制单元,负责处理传感器数据、接收指令并控制执行器。
  • 蓝牙模块:用于与用户蓝牙设备通信,接收蓝牙指令。
  • 语音识别模块(LD3320):将用户语音转化为系统可识别的指令。
  • 温湿度传感器:实时监测室内温湿度。
  • 烟雾传感器:检测室内烟雾浓度,超标时触发报警和通风措施。
  • 雨水检测模块:检测是否下雨,下雨时自动关闭相关设备。
  • 执行器:包括舵机(控制窗户、窗帘开合)、继电器(控制灯光、风扇等设备开关)。

四、方案框图和项目设计思路介绍

方案框图

项目设计思路

采用模块化设计思想,将系统分为输入模块(蓝牙模块、语音识别模块、传感器模块)、处理模块(STM32 主控芯片)和输出模块(执行器模块)。输入模块采集用户指令和环境信息,处理模块分析处理信息并生成控制信号,输出模块根据控制信号驱动设备执行操作。

五、原理图与PCB


原理图

原理图设计介绍

  1. 主控核心:以 STM32F103ZET6 芯片为核心,作为整个系统的控制中枢,连接并协调各模块工作。芯片周边配置了复位电路(保障系统稳定复位)、晶振电路(32.768K 晶振用于低功耗时钟,8M 晶振提供系统主时钟),确保芯片正常运行。
  2. 电源模块
  • TYPE-C 供电口:通过 TYPE-C 接口输入电源,连接降压电路,为系统提供稳定电压。
  • 退耦电容:分布在电源路径上,过滤电源噪声,保证供电稳定性,降低电源干扰对其他模块的影响。
  1. 传感器模块
  • 温湿度监测电路:实时采集环境温湿度数据,为系统自动调节(如加热、降温、喷雾等)提供依据。
  • 雨滴监测电路:检测是否下雨,触发窗户关闭等防护动作。
  • 烟雾检测模块:监测烟雾浓度,超标时联动蜂鸣器报警、风扇启动等操作。
  • 人体感应电路:检测人体活动,实现人来灯亮、设备自动响应等智能场景。
  1. 执行器模块
  • 加热 / 降温电路:根据温湿度数据,控制加热或降温设备,调节环境温度。
  • 风扇电路:配合烟雾检测或温度调节,实现通风散热功能。
  • 喷雾电路:用于调节环境湿度,当湿度不足时启动喷雾。
  • 蜂鸣器电路:作为报警输出,在烟雾超标、异常情况时发出警示。
  • 窗户 / 窗帘 / 房门控制:通过对应电路驱动执行机构(如舵机),实现门窗开关、窗帘开合控制。
  1. 通信与交互模块
  • 语音模块:实现语音指令识别与播报,支持用户语音控制家居设备。
  • 蓝牙模块:提供蓝牙通信功能,允许用户通过手机等设备远程控制。
  • 串口 WiFi:支持无线网络连接,拓展远程控制与数据传输能力。
  • 独立按键:作为本地手动控制入口,方便用户直接操作。
  • OLED:显示系统状态信息,如温湿度数值、设备工作状态等。
  1. 其他辅助模块
  • 存储电路:用于数据存储,记录系统配置、历史数据等信息。
  • BOOT 电路:配合芯片启动模式设置,方便程序下载与调试。
  • 下载口:提供程序下载通道,便于开发阶段烧录代码。

PCB

PCB 设计要点

  1. 布局设计


  • 功能分区:以 STM32 芯片为中心,电源区(降压电路)、传感器区(温湿度、烟雾检测)、执行器驱动区(加热、风扇电路)、通信区(蓝牙、语音模块)分区明确。例如,电源模块集中布局减少干扰,传感器靠近边缘便于环境检测。
  • 关键元件:主控芯片周边合理放置退耦电容、晶振;大电流驱动元件(如加热电路)独立区域布局,避免干扰小信号电路。


  1. 布线设计


  • 电源与地线:电源线加粗,降低线阻压降;数字地与模拟地分隔,通过磁珠连接,减少地噪声。大面积铺地铜,增强屏蔽。
  • 信号优化:高速信号线(如串口)短而直,模拟信号线(如传感器信号)屏蔽处理,确保数据传输稳定。


  1. 工艺细节


  • 封装与焊盘:元件封装适配实际器件,焊盘设计满足焊接工艺(如 TYPE-C 接口、下载口焊盘加粗)。
  • 标识清晰:PCB 丝印标注模块功能(如 “加热”“温湿度”),红色基板搭配黄色丝印,提升调试与维护便利性。

六、软件流程图和关键代码介绍

软件流程图

关键代码

// 蓝牙指令获取函数

uint8_t lanya_get()
{
int chartemp;
// 检查USART_RX_STA标志位,判断数据接收是否完成
if(USART_RX_STA&0x8000)
{
// 数据接收完成,清除标志位
USART_RX_STA=0;
// 将接收到的字符指令转换为整数
chartemp=atoi((const char*)USART_RX_BUF);
return chartemp;
}
return 0;
}

// 蓝牙指令执行函数

void lanya_run(uint8_t x)
{
if(x<100&&x!=0)
{
switch(x)
{
case 1:

// 控制窗户关闭

pwm_H_Anglex(180);
printf("窗户关闭中");
chflog=0;
delay_ms(500);
break;
case 2:

// 控制窗户打开

pwm_H_Anglex(0);
printf("窗户打开中");
chflog=1;
delay_ms(500);
break;

// 其他设备控制类似

}
}
else if(x>=130&&x<=180)
{
if(sdflog==0)
{

// 设置温湿度下限

sdmin=x-100;
sdflog=1;
}
else if(sdflog==1)
{

// 设置温湿度上限

sdmax=x-100;
sdflog=0;
}
}
}

// 语音识别扫描函数

:void LD3320_scan(void)
{
switch(nAsrStatus)
{
case LD_ASR_RUNING:
case LD_ASR_ERROR:
break;
case LD_ASR_NONE

// 启动语音识别

nAsrStatus=LD_ASR_RUNING;
if (RunASR()==0)
{
nAsrStatus = LD_ASR_ERROR;
}
break;
case LD_ASR_FOUNDOK:

// 获取语音识别结果

nAsrRes = LD_GetResult();

// 处理语音识别结果

User_Modification(nAsrRes);
nAsrStatus = LD_ASR_NONE;
break;
case LD_ASR_FOUNDZERO:
default:
nAsrStatus = LD_ASR_NONE;
break;
}
}

// 语音指令处理函数

void User_Modification(uint8_t dat)
{
if(dat ==0)
{

// 唤醒指令

ldflag=1;
printf(" 我在 \n\r");
}
else if(ldflag)
{

// 清除唤醒标志

ldflag=0;
switch(nAsrRes)
{
case CODE_1KL1:

// 温度上升操作

temp++;
printf(" 温度已上升\n\r");
delay_ms(500);
break;

// 其他语音指令处理类似

}
}
}

// 温湿度监测与控制函数

void wenshidu()
{
kayscan=key_scan(0);
if(wenshimode==0)
{
if(kayscan==4&&oledfloat==1)
{

// 切换OLED显示模式

oledmode=oledmode?0:1;
OLED_Clear();
}
if(kayscan==3&&oledfloat==1&&oledmode==0)
{

// 切换温湿度模式

wenshimode++;
OLED_Clear();
oled_scan();
if(wenshimode==4)
wenshimode=0;
}

// 读取温湿度数据

dht11_read_data(&temperature, &humidity);
if(temperature>=temp-1&&temperature<=temp+1)
{

// 温度在设定范围内,关闭加热和降温设备

JR(0);
JW(0);
}
else if(temperature<temp)
{

// 温度低于设定值,开启加热设备

JR(1);
JW(0);
}
else if(temperature>temp)
{

// 温度高于设定值,开启降温设备

JR(0);
JW(1);
}

// 湿度控制逻辑类似

}

// 其他模式处理类似

}

// 雨水检测扫描函数

void yd_scan(void)
{
int yd;

// 获取雨水检测结果

yd=yd_run();
if(yd==0)
{

// 检测到下雨,关闭窗户、房门、窗帘和橱窗

pwm_H_Anglex(180);
chflog=0;
Servo_SetAngle(90);
menflog=0;
Servo_SetAngle2(0);
chuangflog=0;
Servo_SetAngle1(0);
chuflog=0;
}
}

// 烟雾浓度检测函数

uint32_t MQ2_GetData_PPM(void)
{
uint16_t adcx;

// 读取烟雾传感器数据

adcx = adc_get_result_average(ADC_ADCX_CHY, 10);

// 计算烟雾浓度

ppm=adcx/10;
while(ppm>60)
{

// 烟雾浓度超标,触发报警和通风措施

adcx = adc_get_result_average(ADC_ADCX_CHY, 10);
ppm=adcx/10;
BEEP(0);
FS(1);
pwm_H_Anglex(0);
chflog=0;
Servo_SetAngle2(180);
chuangflog=0;
chuflog=1;
Servo_SetAngle1(180);
}

// 关闭报警

BEEP(1);
return ppm;
}

七、智能家居 3D 模型展示与介绍


该模型以白色箱体为载体,模拟家居场景。箱体侧面设交互区,包含显示屏(实时呈现温湿度等数据)与功能按键(如开关、模式切换),支持本地操作。侧面的风扇对应通风功能,与烟雾检测联动,烟雾超标时自动启动换气。箱体配备可控制窗户,能联动雨水检测模块,遇雨自动关闭;顶部预留传感器安装位,用于采集环境数据。整体设计融合功能模块与家居外观,直观展现环境监测、设备控制及交互操作等智能家居核心功能。

  • 尺寸:这类模型通常为适配内部电路与展示效果,长宽高在 25cm×20cm×20cm 左右,既容纳传感器、执行器等模块,也便于演示操作。
  • 材质
    • 3D 打印材质:PETG。
    • 手工制作材质:选用亚克力板(透光性好,便于加工显示屏、窗口部分)、ABS 塑料(强度高,抗冲击),部分结构也可能搭配 PVC 板,平衡成本与制作难度。
  • 八、设计中遇到的难题和解决方法

    • 蓝牙通信不稳定问题:优化蓝牙模块天线设计、调整通信波特率、增加数据校验机制,提高通信稳定性。
    • 语音识别准确率问题:调整语音识别模块声学参数、增加降噪算法、训练特定语音模型,提高识别准确率。
    • 传感器数据干扰问题:对传感器进行屏蔽处理、优化安装位置、采用滤波算法,减少干扰,提高数据准确性。
  • 九、心得体会

  • 通过参加本次竞赛,提升了硬件设计和软件开发能力,学会了系统集成和解决实际问题。团队合作让我体会到沟通和协作的重要性。


附件下载
ProProject_智能家居_2025-03-07.epro
原理图以及PCB
3D.zip
代码.zip
团队介绍
热爱电子开发的小火汁
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号