基于STM32+Android的蓝牙语音控制智能家居系统

目录
查新说明 4
第 1 章 引言 5
1.1 选题背景和研究意义 5
1.2 智能家居研究现状 5
1.3 论文研究内容和结构安排 6
第 2 章 智能家居实现的理论分析 7
2.1 蓝牙通信技术 7
2.2 语音识别技术 7
2.3 人脸识别技术 8
第 3 章 智能家居系统设计 10
3.1 智能家居系统整体设计 10
3.2 智能家居硬件设计 13
3.3 智能家居软件设计 18
3.4 通信协议 22
3.4.1 蓝牙通信 22
3.4.2 系统硬件设置操作 22
第 4 章 智能家居系统实现 23
4.1 整体系统的搭建 23
4.2 系统测试方案 23
4.3 智能家居系统的测试 23
4.3.1 智能家居 APP 调试 23
4.3.2 蓝牙通信部分调试 23
4.3.3 语音控制部分调试 24
4.3.4 人脸识别部分调试 24
4.3.5 地震监测部分调试 24
第 5 章 结论与展望 25
参考文献 26
第 3 章 智能家居系统设计

3.1智能家居系统整体设计

3.1.1系统整体架构
如图 2 所示,智能家居系统包括+12 V 电源、主控芯片 STM32F407、LCD 显示屏、SD 卡、按键、TPAD 模块、蜂鸣器模块、继电器模块、蓝牙 HC-05 、语音模块、六轴传感器 MPU6050、摄像头 OV2640、温湿度传感器 DHT11、一氧化碳检测模块、以及升压模块、推拉式门锁、电灯、风扇。
基于STM32+Android的蓝牙语音控制智能家居系统_第1张图片
图 2 智能家居系统整体架构图
一、主控芯片方案 方案一:C51 单片机
一个全双工串行通信口,外部数据存储器寻址空间为 64kB,外部程序存储器寻址空间为 64kB,逻辑操作位寻址功能,双列直插 40PinDIP 封装,单一+5V 电源供电,
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:

用以存放程序、一些原始数据和表格;I/O 口:四个 8 位并行 I/O 口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统;一个全双工 UART(通用异步接收发送器)的串行 I/O 口, 用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路, 石英晶体和微调电容需要外接。最佳振荡频率为 6M-12M。
方案二:STM32F407 单片机
它拥有的资源包括: 集成 FPU 和 DSP 指令,并具有 192KB SRAM、1024KB
FLASH、12 个 16 位定时器、2 个 32 位定时器、2 个 DMA 控制器(共 16 个通道)、 3
个 SPI、2 个全双工 I2S、3 个 IIC、6 个串口、2 个 USB(支持 HOST/SLAVE)、2 个
CAN、3 个 12 位 ADC、2 个 12 位 DAC、1 个 RTC(带日历功能)、1 个 SDIO 接口、
1 个 FSMC 接口、1 个 10/100M 以太网 MAC 控制器、1 个摄像头接口、1 个硬件随机数生成器、以及 112 个通用 IO 口等。
STM32F407 系列面向需要在小至 10 x 10 mm 的封装内实现高集成度、高性能、嵌入式存储器和外设的医疗、工业与消费类应用。STM32F407 提供了工作频率为 168 MHz 的 Cortex™-M4 内核(具有浮点单元)的性能。
性能:在 168 MHz 频率下,从 Flash 存储器执行时,STM32F407 能够提供 210 DMIPS/566 CoreMark 性能,本文转载自http://www.biyezuopin.vip/onews.asp?id=14985并且利用意法半导体的 ART 加速器实现了 FLASH 零等待状态。DSP 指令和浮点单元扩大了产品的应用范围。
功效:该系列产品采用意法半导体 90 nm 工艺和 ART 加速器,具有动态功耗调整功能,能够在运行模式下和从 Flash 存储器执行时实现低至 238 µA/MHz 的电流消耗(@ 168 MHz)。
丰富的连接功能:出色的创新型外设:与 STM32F4x5 系列相比,STM32F407 产品还具有符合 IEEE 1588 v2 标准要求的以太网 MAC10/100 和能够连接 CMOS 照相机传感器的 8~14 位并行照相机接口。可以利用支持 Compact Flash、SRAM、PSRAM、
NOR 和 NAND 存储器的灵活静态存储器控制器轻松扩展存储容量。
考虑到我们要用到较多 FLASH 存储单元存储用户信息,以及需要进行蓝牙通信等,本项目采用方案二,使用 STM32F407ZG 作为主控芯片。

二、无线传输方案
方案一:采用 WiFi 的无线传输方案
Wi-Fi 模块又名串口 Wi-Fi 模块,属于物联网传输层,功能是将串口或 TTL 电平转为符合 Wi-Fi 无线网络通信标准的嵌入式模块,内置无线网络协议 IEEE802.11b.g.n 协议栈以及 TCP/IP 协议栈。传统的硬件设备嵌入 Wi-Fi 模块可以直接利用 Wi-Fi 联入互

联网,是实现无线智能家居、M2M 等物联网应用的重要组成部分。方案二:采用蓝牙的无线传输方案
蓝牙(Bluetooth®):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用 2.4—2.485GHz 的 ISM 波段的 UHF 无线电波)。蓝牙技术最初由电信巨头爱立信公司于 1994 年创制,当时是作为 RS232 数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。
方案三:采用 ZigBee 的无线传输方案
ZigBee 是一种基于标准的远程监控、控制和传感器网络应用技术。为满足人们对支持低数据速率、低功耗、安全性和可靠性,而且经济高效的标准型无线网络解决方案的需求,ZigBee 标准应运而生。核心市场是消费类电子产品、能源管理和效率、医疗保健、家庭自动化、电信服务、楼宇自动化以及工业自动化。围绕 ZigBee 芯片技术推出的外围电路,称之为“ZigBee 模块”,常见的 ZigBee 模块都是遵循 IEEE802.15.4 的国际标准,并且运行在 2.4GHZ 的频段上,另外,欧洲的标准是 868MHZ、北美是
915MHZ。
WiFi 模块传输的数据量大,功耗较大,蓝牙 ble 传输的数据量小,功耗低,但是传输的距离近,只有 10 米左右,ZigBee 技术传输的数据量小,但是传输距离较远,有 200 米左右,而且功耗较低。由于本次项目要求实现智能家居系统控制数据的无线传输, 数据量较小,功耗要求低,距离要求低,故采用蓝牙通信技术。

3.1.2系统功能
本智能家居系统基于蓝牙和语音控制,实现以下功能: 一、通过手机实现家电控制: 1、手机发送 Android ID 到 STM32 端实现 root 用户注册;
2、root 用户可使用手机添加或删除家庭成员;
3、root 用户手机遗失时,可通过智能家居系统的 STM32 端的 APP 实现一键重置蓝牙用户;
4、登记在 STM32 的 FLASH 里面的 Android ID 用户可实现手机控制开门/关门、开灯/关灯、开风扇/关风扇。
二、语音识别+人脸识别开门/关门。
三、语音控制开关灯、开关风扇以及切歌,关闭音乐等。
四、STM32 端通过 MPU6050 实现地震监测,通过 DHT11 和光敏传感器实现环境监测,通过 CO 检测模块实现一氧化碳检测报警。
五、用户可通过 LCD 显示屏操作 APP 实现人脸管理、人脸登记、语音留言、文本留言、查看语音、查看文本留言、查看门外情况(监控),以及控制开门/关门、

开灯/关灯、开风扇/关风扇。
六、用户可播放音乐、播放视频等。

3.1.3系统指标
1、语音识别准确率:80%以上;
2、人脸识别准确率:95%以上;
3、蓝牙通信准确率:99.99%;
4、CPU 耗内存:不工作时低于 10%;
5、MPU6050 能监测 3 级以上地震,并且抗干扰。

智能家居系统 STM32 源程序主函数

#include "includes.h"
#include "malloc.h"

#include "spblcd.h"
#include "spb.h"
#include "common.h"
#include "ebook.h"
#include "settings.h"
#include "picviewer.h"
#include "audioplay.h"
#include "videoplay.h"
#include "calendar.h"
#include "nesplay.h"
#include "notepad.h"
#include "exeplay.h"
#include "paint.h"
#include "camera.h"
#include "recorder.h"
#include "usbplay.h"
#include "netplay.h"
#include "wirelessplay.h"
#include "calculator.h"
#include "phoneplay.h"
#include "appplay.h"
#include "smsplay.h"

#include "usart3.h"
#include "sim900a.h"
#include "mpu6050.h"
#include "wm8978.h"
#include "lan8720.h"
#include "lsens.h"
#include "usb_app.h"
//--------------------------------------------------------------------------------------------
// 设置 FLASH 保存地址(必须为偶数,且所在扇区,要大于本代码所占用到的扇区.
// 否则,写操作的时候,可能会导致擦除整个扇区,从而引起部分程序丢失.引起死机.
#define FLASH_DATA_SAVE	0X080FF000

// 0~3:num
// 4~19:root user Android ID
// 20~35:common user Android ID 1
// ...
// 132~147:common user Android ID 8 u8 flash_data_save[148];



// 用于存放 root ID
const u8 id_root_buf[]={"7659483c763e8649"};
// 用户 id 索引,其中 find_id[0]为 root 用户 id u8 find_id[9]={4,20,36,52,68,84,100,116,132};

#define COMMON_BUF_LENTH sizeof(id_common_buf)
#define ROOT_BUF_LENTH sizeof(id_root_buf)
#define	COMMON_BUF_SIZE
COMMON_BUF_LENTH/4+((COMMON_BUF_LENTH%4)?1:0)
#define ROOT_BUF_SIZE ROOT_BUF_LENTH/4+((ROOT_BUF_LENTH%4)?1:0)

/提示信息///

//删除所有蓝牙用户
u8*const delethbt_remindmsg_tbl[GUI_LANGUAGE_NUM]=
{
"你已经删除所有蓝牙用户",
"你已经删除所有蓝牙用户",
"你已经删除所有蓝牙用户",
};

//删除所有蓝牙用户
u8*const ndelethbt_remindmsg_tbl[GUI_LANGUAGE_NUM]=
{
"你没有删除蓝牙用户",
"你没有删除蓝牙用户",
"你没有删除蓝牙用户",
};

//关于我们提示信息
u8*const aboutus_remindmsg_tbl[GUI_LANGUAGE_NUM]=
{
"2018 年广东省大学生电子设计竞赛\r\
一种基于蓝牙和语音控制的智能家居系统\r\ 手机通过蓝牙连接本系统可以实现控制\r\
通过语音控制+人脸识别实现安全的家居控制\r\ 参赛队伍号:00237\r\
作品属性:智能家居",
"2018 年广东省大学生电子设计竞赛\r\
一种基于蓝牙和语音控制的智能家居系统\r\

手机通过蓝牙连接本系统可以实现控制\r\
通过语音控制+人脸识别实现安全的家居控制\r\ 参赛队伍号:00237\r\
作品属性:智能家居",                     "2018 年广东省大学生电子设计竞赛\r\
一种基于蓝牙和语音控制的智能家居系统\r\ 手机通过蓝牙连接本系统可以实现控制\r\
通过语音控制+人脸识别实现安全的家居控制\r\ 参赛队伍号:00237\r\
作品属性:智能家居",
};

//地震提示信息
u8*const dizhen_remindmsg_tbl[GUI_LANGUAGE_NUM]=
{
"危险警报:\r\
地震啦!\r\ 地震啦!!\r\
地震啦!!!\r\ 地震啦!!!\r\ 地震啦!!!",
"危险警报:\r\
地震啦!\r\ 地震啦!!\r\
地震啦!!!\r\ 地震啦!!!\r\ 地震啦!!!",
"危险警报:\r\
地震啦!\r\ 地震啦!!\r\
地震啦!!!\r\ 地震啦!!!\r\ 地震啦!!!",
};

基于STM32+Android的蓝牙语音控制智能家居系统_第2张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第3张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第4张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第5张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第6张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第7张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第8张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第9张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第10张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第11张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第12张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第13张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第14张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第15张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第16张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第17张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第18张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第19张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第20张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第21张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第22张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第23张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第24张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第25张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第26张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第27张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第28张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第29张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第30张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第31张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第32张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第33张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第34张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第35张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第36张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第37张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第38张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第39张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第40张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第41张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第42张图片
基于STM32+Android的蓝牙语音控制智能家居系统_第43张图片

你可能感兴趣的