目录
[2.1 硬件清单:](#2.1 硬件清单:)
[2.2 功能介绍:](#2.2 功能介绍:)
[资料获取 查看主页介绍:兆龙电子单片机设计](#资料获取 查看主页介绍:兆龙电子单片机设计)
一、设计背景和意义
1.1设计背景:
在日常家庭生活便捷化操控、老人儿童简易居家交互、全屋智能设备语音联动、独居人群语音便捷求助及别墅家居场景语音高效管控中,语音快速识别、指令精准响应、设备无缝联动、操作简易便捷是核心需求。传统家居控制方式存在明显局限:一方面,高端全屋智能控制系统(如定制化家居中控、多协议工业级智能网关、高端品牌成套智能家居设备)功能虽全但成本高昂,部署复杂且需专业人员上门调试与后期维护,难以普及到普通刚需家庭、小户型住宅及租房群体等日常场景,且设备生态封闭性强,不同品牌、不同协议的智能设备兼容性差,无法与个人移动终端、家庭语音交互设备灵活联动,更换或升级成本高,无法满足不同人群(如普通家庭用户、老人儿童、独居人士)的便捷家居控制需求;另一方面,普通简易家居控制装置(如传统机械开关、单功能遥控控制器、基础款智能插座)虽操作简单、价格低廉,但功能单一,仅能实现单一点位的基础开关或控制,缺乏多设备联动控制、语音指令智能判断、操作记录存储、远程语音交互及设备故障状态提醒(如设备断电、指令接收失灵)等功能,无法满足现代化家居场景下对全面覆盖、智能响应、便捷高效的家居控制管控需求。
现有关家居控制方案还存在功能割裂与集成度低的问题:部分高端全屋智能控制系统虽具备多维度设备控制与场景联动功能,但依赖复杂的软硬件架构与专属生态维护,后期使用成本高,难以覆盖预算有限的普通消费群体或租房过渡性居住场景;而低成本家居控制装置又在功能完整性与智能化上存在欠缺,无法实现语音控制指令与家居设备、移动 APP、家庭中控平台的实时联动,导致指令响应延迟、语音识别误差偏大、个性化需求(如老人语音控制灯光、夜间语音联动窗帘)无法满足等问题,无法为用户安心居家生活(如解放双手便捷操控家居)及高效居家管理(如精准管控全屋智能设备)提供可靠支撑。基于此,本设计以 STM32 单片机为核心,融合高精度语音交互与辅助模块(如语音采集模块、语音识别模块、家居设备联动辅助模块、语音播报模块)、LCD 显示模块、数据存储模块及蓝牙通信与异常提醒模块,构建低成本、高集成度的物联网智能家居语音控制系统,以解决传统家居控制方式操作繁琐、智能化程度低、功能单一及家居控制管控效率低的问题。
1.2设计意义:
从使用体验与家居智能控制效率角度,该系统突破了传统家居控制方式的局限:一是实现了多维度语音交互与全场景家居联动(如支持语音采集识别、家居设备开关控制、场景模式语音触发、设备状态语音查询,联动蓝牙通信模块、语音播报模块、全屋家居联动执行模块),无需用户手动操作各类开关或遥控器,减少家居控制的繁琐性与设备操控的延迟性;二是配备 OLED实时显示模块,直观呈现当前各家居设备运行状态、语音指令类型、系统运行状态(正常 / 异常)及联动设备响应进度,同时支持数据自动存储(可通过蓝牙传输至移动 APP / 家庭智能中控平台 / 全屋智能家居管理平台),方便用户长期追溯操作记录与设备运行历史,也为用户优化居家智能控制方案、排查设备故障及全屋智能统筹管理提供完整数据支撑;三是新增个性化语音场景与自动联动执行功能,当识别到有效语音指令(如灯光开启 / 关闭、窗帘升降、空调温度调节、睡眠 / 离家 / 归家场景触发、设备故障语音查询),系统根据指令内容自动触发对应执行动作(同时通过语音播报模块反馈操作结果与设备当前状态),并联动相关家居设备完成场景化运行(如联动 "睡眠场景" 语音指令,自动关闭灯光、拉合窗帘、调低空调温度、关闭客厅电器),无需人工逐一操控即可实现全屋家居的智能化协同运行,大幅提升了家居控制的便捷性与高效性。
从技术实践与成本控制角度,本设计以 STM32 单片机为核心,充分利用其低功耗、高性价比的优势,搭配低成本的高精度语音交互模块及通用外围模块,在保证交互精度(语音指令识别准确率可控制在 98% 以上,指令响应时间可控制在 0.5 秒以内)的前提下,有效降低了系统整体成本,相比同功能的高端全屋智能控制系统成本降低 40%-60%,更易普及到普通刚需家庭、小户型住宅、租房群体及社区老旧住宅智能改造等场景。同时,系统支持模块化扩展(如后续可新增方言语音识别功能、多人个性化语音权限管理功能、远程语音联动控制功能),为后续功能升级预留了空间,具备良好的灵活性与可扩展性。
**二、**实物展示
下方为实物演示视频
下方为实物展示图片

三、硬件功能介绍
2.1 硬件清单:
-
STM32F103C8T6
-
OLED显示
-
温湿度传感器
-
ULN2003步进电机驱动
-
降压电路
-
语音识别模块
-
蓝牙模块
-
RTC时钟
-
MQ-2烟雾传感器
-
光照采集
2.2 功能介绍:
(1)光强采集:光敏电阻实时采集环境光强度数据
(2)温湿度采集:DHT11温湿度传感器采集环境温湿度
(3)危险气体监测:MQ-2判断烟雾是否超标,语音播报警告提示
(4)窗帘控制:步进电机模拟窗帘驱动开闭
(5)OLED显示:当前时间,温湿度、光照数据,模式信息
(6)实时时钟:DS1302时钟模块显示当前实时时间
(7)控制模式:支持五种窗帘控制模式:自动模式、手动模式、定时模式、蓝牙模式、语音模式,可按键切换
(8)语音控制:语音控制窗帘的打开和关闭,以及播报窗帘开关状态
(9)定时模式:设置定时和关闭时间来控制窗帘
(10)手动模式:按键可控制窗帘开启/关闭
(11)自动模式:由环境光强、烟雾是否超标来自动控制窗帘开/关
(12)蓝牙APP控制:手机端蓝牙APP远程遥控窗帘、模式切换以及数据监控
四、软件设计流程图

五、硬件PCB展示

六、软件主函序展示
int main(void)
{
u16 ii=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //语音模块串口初始化
usart3_init(9600); //蓝牙使用
DHT11_Init();
Adc_Init();
Moto_Init();
ds1302_gpio_init();
//ds1032_init(); //时间设置
ds1032_read_realTime(); //读取实时数据
KEY_Init();
MQ_Init();
LED_Init();
OLED_Init(); //屏幕初始化
TIM3_Int_Init(719,7199);
printf("AF:30");//声音调到31档 最大
delay_ms(100);
delay_ms(1000);
printf("A7:00003");//欢迎使用
delay_ms(1000);
OLED_CLS();
while(1)
{
if(Flag_caidan==1)//自动模式
{
delay_ms(500);
Flag_adc=Get_Adc_Average(0,10);
delay_ms(500);
if(Flag_adc>1000&&Flag_dakai==0)
{
printf("A7:00001");//打开
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
dakai=1;
}
if(Flag_adc<1000&&Flag_dakai==1)
{
printf("A7:00002");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
dakai=0;
}
// MQ_res = MQ_Scan();
if(MQ==0)
{
LED0 = !LED0;
delay_ms(100);
LED0 = !LED0;
delay_ms(100);
}
}
if(Flag_caidan==2)//手动模式
{
if(dakai==1&&Flag_dakai==0)
{
printf("A7:00006");//打开
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
}
if(dakai==0&&Flag_dakai==1)
{
printf("A7:00007");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
}
}
if(Flag_caidan==3)//定时模式
{
if(TimeRAM.kai==1&&Flag_dakai==0)
{
if(TimeRAM.hour_kai==TimeData.hour&&TimeRAM.minute_kai==TimeData.minute)
{
printf("A7:00006");//打开
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
}
}
if(TimeRAM.guan==1&&Flag_dakai==1)
{
if(TimeRAM.hour_guan==TimeData.hour&&TimeRAM.minute_guan==TimeData.minute)
{
printf("A7:00007");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
}
}
}
if(Flag_caidan==4)//遥控模式
{
if(dakai==1&&Flag_dakai==0)
{
printf("A7:00006");//打开
TIM_Cmd(TIM3,DISABLE);
ii=0;
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
}
if(dakai==0&&Flag_dakai==1)
{
printf("A7:00007");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
}
}
}
}
七、单片机实物资料
