一、设计背景和意义
1.1 设计背景
在日常家庭设备管控、老人儿童便捷操作、全屋场景联动、懒人居家及残障人士无障碍生活场景中,语音快速唤醒、指令精准识别、设备稳定控制、场景一键联动是核心需求。传统家居控制方式存在明显局限:一方面,高端全屋智能控制系统成本高昂,部署复杂且需专业人员上门调试与后期维护,难以普及到普通刚需家庭、小户型住宅及租房群体等日常场景,且设备生态封闭性强,不同品牌、不同协议的家居设备兼容性差;另一方面,普通简易家居控制装置虽操作简单、价格低廉,但功能单一,仅能实现单一设备的通断控制,缺乏语音交互、多设备联动、场景记忆、远程控制及异常状态提醒等功能。
现有关家居控制方案还存在功能割裂与集成度低的问题。部分高端全屋智能系统依赖复杂的软硬件架构与专属生态维护,后期使用成本高;而低成本家居控制装置又在功能完整性与智能化上存在欠缺,无法实现语音指令与家居设备、移动 APP、家庭中控平台的实时联动。基于此,本设计以 STM32 单片机为核心,融合高精度语音与辅助模块、LCD 显示模块、数据存储模块及蓝牙通信与异常报警模块,构建低成本、高集成度的物联网智能家居语音控制系统。
1.2 设计意义
从使用体验与家居管控效率角度,该系统突破了传统家居控制方式的局限:一是实现了多维度交互与多功能联动,无需用户手动操作开关或专业人员现场调试配置,减少家居设备管控的繁琐性与人工操作的失误率;二是配备 LCD 实时显示模块,直观呈现当前受控设备状态、场景联动进度、语音指令识别结果及家居系统运行状态,同时支持数据自动存储,方便用户长期追溯设备使用记录与场景联动历史;三是新增异常预警与自动调控功能,当监测到某项参数超出合理范围,系统自动触发声光报警并联动对应设备暂停运行,大幅提升了家居设备管控的便捷性与时效性。
从技术实践与成本控制角度,本设计以 STM32 单片机为核心,充分利用其低功耗、高性价比的优势,搭配低成本的高精度语音交互模块及通用外围模块,在保证控制精度的前提下,有效降低了系统整体成本,相比同功能的高端全屋智能控制系统成本降低 40%-60%,更易普及到普通刚需家庭、小户型住宅、租房群体及社区老旧住宅改造等场景。同时,系统支持模块化扩展,为后续功能升级预留了空间。
二、硬件功能介绍
2.1 硬件清单
- STM32F103C8T6
- OLED 显示
- 语音识别模块
- 温湿度传感器
- 降压电路
- 蜂鸣器报警
- 烟雾传感器
- 步进电机驱动
- WIFI 机智云平台
- 继电器控制电路
- 风扇
- 台灯
2.2 功能介绍
(1)采用 STM32F103C8T6 主控芯片 (2)检测功能:系统检测周围环境温湿度数据、烟雾浓度、光照强度 (3)显示功能:将检测到的传感器数据、当前模式、窗帘状态显示在 OLED 屏幕上 (4)手动模式:按键控制台灯、风扇、窗帘的开关 (5)自动模式:温湿度、烟雾、光照阈值控制台灯、窗帘、风扇开关以及报警 (6)语音控制:通过语音控制模式切换、台灯、风扇、窗帘的开关等 (7)数据保存:设置阈值断电后,会进行保存,再次上电恢复 (8)机智云 APP:APP 接收传感器采集数据和控制台灯、窗帘、风扇开关
三、软件主函数展示
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "SysApp/AppSys.h"
/**
* name: RCC_Configuration
* brief: 系统时钟树配置
*/
void RCC_Configuration(void) {
#if 1
ErrorStatus HSEStartUpStatus;
/* RCC 系统复位 */
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
(HSEStartUpStatus == SUCCESS) {
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PLLCmd(ENABLE);
(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
}
SystemInit();
}
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
}
{
RCC_Configuration();
NVIC_Configuration();
delay_init();
app_BspInit( &SysParamHandle );
Key2_long_press_down_handle();
( ) {
app_Process( &SysParamHandle );
}
}


