基于STM32 的家居环境检测和家电控制系统设计文档.docx
《基于STM32 的家居环境检测和家电控制系统设计文档.docx》由会员分享,可在线阅读,更多相关《基于STM32 的家居环境检测和家电控制系统设计文档.docx(11页珍藏版)》请在冰豆网上搜索。
基于STM32的家居环境检测和家电控制系统设计文档
孝感定原电子科技有限公司
文档编号
产品版本
密级
产品名称:
一种家居环境检测和家电控制软件
共页
软件设计说明书
摘要
随着信息时代的到来及高速发展,电子产品在日常生活中的应用给人们带来的便利与快捷是有目共睹的。
为人类开发更加舒适便捷、安全高效的产品成为信息社会发展的强有力动力。
在公共场所和工作环境的不断改善下,家庭居住环境也慢慢加入了生活品质的名单。
如今人们的追求不再停留在单纯的物质上,对精神世界的寻求也日益增加。
对于住宅,人们除了关注房屋的大小、外观、安全性,还希望得到更高层次的体验和享受。
例如,在看书时不用起身就可以在光线渐弱的时候打开电灯等智能化控制。
在日常生活中,偶尔也会发生出门前忘记关闭电器的事情,有时甚至发生电器自燃进而引发火灾的突发状况,不仅造成物质上的损失,更产生了心灵上的阴影和伤害。
那么如何通过不断发展的网络设备和通讯设施来实现家居智能化,便成了当今科技领域努力的方向。
智能家居,拥有家庭安全、舒适、信息交互与通信的能力。
这些依赖于家居智能管理系统。
家居生活是人们日常生活中很重要的一部分。
近几年,智能家居的出现颠覆了传统的住房概念,给人们带来了与众不同的家居体验。
通过智能家居人们可以方便地控制家电,同时又能获得安全。
本课题基于目前市场需求,设计了采用以太网进行网络通讯的家居环境检测和家电控制系统,并通过Android应用程序实现最终的检测和远程控制,实现了继电器控制家电、红外学习控制系统、语音提示和温度、湿度、光照度测量等功能。
关键词
环境监测智能家居
1详细设计
1.1软件简述
本课题采用32位的微处理器STM32F107作为硬件设计核心,它具有体积小、性价比高等特点。
该互联型芯片内置的介质访问控制和专用的DMA控制器可以方便地实现以太网传输控制,在现有的网络设备基础上实现可靠的网络通信。
本系统提供了多种监测和控制前端:
通过继电器或者红外学习模块实现对家庭用电器的控制;提供温、湿度及光照度的环境监测;通过语音合成模块进行提示或者警报。
1.2软件功能描述
1.2.1软件功能介绍
驱动部分先配置好主控制芯片STM32的上电参数和时钟系统,再进行各个模块的驱动设计,其中使用到RS232串口通信、ADC模数转换、I2C总线通信等。
为节约数据端口的使用,以太网模块设置为RMII通信模式;语音合成模块和红外学习模块均有自己的命令帧格式,通过串口与STM32联系,本设计采用MAX3232实现RS232通信;继电器可直接通过GPIO端口进行操作;传感器模块中温度传感器有特定的工作时序、湿度传感器使用ADC采集、光照传感器采用I2C通信协议。
系统整体框架如图1所示。
1.2.2软件基本框架
信号调理部分采用了模拟比较器输入的结构,下图是本软件的基本框架图和主程序流程图。
图一基本框架图
信号通过高速运放搭建的模拟比较器,比较器的比较电压通过STM32F417的数模转换器提供,用于初始化进行噪声采集,门限自适应,这样可以滤除存在于信道中的噪声。
若开机检测到串口发送指令,则程序切换到USART串口收发模式,可以进行参数设定和数据的导出操作。
信号经过了模拟比较器后得到了一个标准的方波信号,方波信号进入到多路轮询模块中进行通道切换。
系统以C和汇编语言为编程语言。
该系统通过传感器对室内环境条件进行检测,检测数据传送给单片机,由单片机对数据进行处理并采取相应措施。
系统程序流程如图3所示。
系统启动之后,首先进行初始化操作,为了能够及时显示温度以及对非法入侵报警,系统采用中断技术,使用单片机定时中断TO,每隔500ms中断一次。
打开中断后,系统开始进行工作,当有人进入时,系统调用GSM短信发送程序,并进行蜂鸣器报警,为了让报警产生效果,将报警时间延迟2分钟。
GSM发送短信程序设计的流程图如图4所示。
图二主程序流程图
1.3温度检测及显示模块设计
温度检测及显示模块采用数字温度传感器DS18B20,DS18B20数字温度计接线方便,封装成后可应用于多种场合,耐磨耐碰,体积小,使用方便,并且具有超强的稳定性和卓越的灵敏性。
温度检测电路如图2所示。
1.3.1程序流程图
1.3.2设备侧实现
为了保证采样的精度,因此采用了2路ADC并联使用,使得采样率达到4.8MHz,保证了在500kHz的噪声频带上也能有10倍的采样率。
将噪声采集后使用DMA传输8192个点的噪声信号,计算噪声的幅度,并根据噪声的最大值与均方根值确定比较器的电压幅度门限,然后通过DAC发出门限电压信号给比较器,形成电压门限。
承载了单频脉冲的待测信号经过了模拟比较器后变成了1个方波信号,方波信号进入了微控制器芯片检测端,该信号会触发中断,从而开始记录信号的脉冲次数以及信号的脉冲长度,通过脉冲长度与脉冲次数的商值可以得到信号的频率、脉宽。
当信号的2次脉冲的间隔小于预设区间或者大于预设区间时,就会被判定为无效脉冲或者是噪声脉冲,由此减小信号的虚警概率。
1.1以太网模块
对于以太网模块,本课题除了需要对其进行初始化设置,还需要有收发数据包的函数用于通信。
在此之前,需要注意两点。
首先,虽然在4.3节中统一配置了引脚包括以太网模块,但这里用到了引脚的重映射功能(将普通GPIO引脚映射成以太网引脚),需要在程序中使能,否则不能正常工作:
GPIO_PinRemapConfig(GPIO_Remap_ETH,ENABLE);。
1.1.1程序流程图
v
1.1.2设备侧实现
系统便通过模式设置函数选择以太网通信接口。
设置好这两项后,就开始对以太网进行初始化,其软件流程如图4-5所示。
其中配置参数环节,主要对以太网的自动模式、速度、工作模式、是否重传、是否接收广播帧等进行设置和选择。
DMA接收和发送缓存存放上一次的工作数据,在使用前应该进行清除。
本模块的收发数据包直接调用STM32自带的以太网开发库函数,主要通过DMA读取或发送缓存中的数据。
除此之外,该开发库还带有以太网寄存器读取函数。
DP83848满足IEEE802.3标准,STM32可以通过读写PHY内部寄存器实现对以太网的状态查询和控制[35]。
PHY最多可以定义32个16位寄存器,其中0~15定义的功能,其余可由制造商定义和扩展。
这些寄存器不仅使人更了解以太网的工作状态,还能在调试以太网时检测问题所在。
其中比较常用的有0地址控制寄存器的14位:
LOOPBACK和1地址状态寄存器的2位LinkStatus。
当以太网端口不能正常工作的时候,经常使用LOOPBACK来诊断问题。
LOOPBACK可译为“回环”,当此位置1时,将切断PHY与外部的逻辑连接。
也就是当主控制芯片向网络发送数据时,数据不会传输出去,而是重新返回至PHY的接收区。
这样,在此模式下,若能接收到发送的数据,说明MAC和PHY没有问题,可以检测RJ45或网线;若无法接收,则说明问题存在与MAC、PHY之间,可以进一步通过MAC的LOOPBACK功能找出问题所在。
这一方法在本系统的调试过程起到重要作用。
1.2语音合成模块
同红外学习模块类似,语音合成模块通过串口RS232跟STM32进行通信,命令字是对不同功能的区别,而命令参数是对同一功能中方式的选择。
图4-6展示了语音合成功能的命令结构图,该功能的命令字为0x01。
而跟在命令字后面的参数为编码格式,决定了以哪种汉字标准输出准备合成的文本。
1.2.1程序流程图
1.2.2设备侧实现
当系统正在合成一条语音时,若此时有新的语音合成命令,将会直接覆盖上一条,而执行后来的这一条。
模块的第7脚为状态硬件引脚,低电平表示空闲,高电平表示忙碌。
在设计的过程中,本课题通过判断该引脚的状态来判断是否继续下一条命令合成,具体软件流程图如图4-7所示。
主控制器在发送合成命令之前,先检测语音模块是否空闲,空闲时通过串口发送合成参数和文本,忙碌时等待模块合成完上一条指令再合成当前文本。
除此之外,也可以通过查询命令来获取模块的状态,若STM32收到“0x4F”的反馈,说明模块空闲;若反馈信息为“0x4E”则表示模块忙碌。
1.3传感器模块
DS18B20是单总线数字型的温度传感器[38],为了提高传输可靠性,并简化外围电路,该传感器信号只在测试点被数字化。
DS18B20的温度测试范围为-55~125℃,用12位来存储温度,其中bit0~10用来存放温度数值,bit11~15用于存放正负值。
软件设计中涉及到精确的计时,本设计通过SysTick实现。
SysTick滴答定时器是Cortex-M3内部的24位简单计数器,计数范围不超过2的24次方。
SysTick的配置主要分为三个步骤:
①初始化。
配置触发时间。
因DS18B20的时序为微秒级别,本设计将SysTick的触发时间设置为1μs,设置语句为:
SysTick_Config(SystemCoreClock/1000000);②使能滴答定时器。
尽量不在初始化时使能SysTick,否则容易出现异常,在需要的时候再开启;③设置中断函数。
本设计将SysTick用于延时函数,故在SysTick中断函数将延时参数自减1。
完成之后,构造延时函数,在其内部判断延时参数是否为零就能得到延时参数个μs的时间。
。
1.3.1子程序流程图
1.3.2设备侧实现
HIH4000-003是一款高精度的相对湿度传感器,适用于低功耗系统。
该传感器具有良好的线性输出特性,相对湿度几乎与输出电压值成正比。
通过ADC通道读取输出电压值,再经过线性转换就能得到相对湿度值了。
STM32具有3个12位的内部ADC转换器,共有21个外部通道,足够满足这一部分的设计,配置过程如下:
1设置ADC模式、扫描方式、触发方式、对齐方式、通道等参数,初始化ADC;2配置采样周期,最终的采样时间为:
T=采样周期+12.5;3使能ADC;4复位校准寄存器,并校准ADC。
2编程协定
2.1操作系统
Win7操作系统,keilMDKUvision5集成开发环境
2.2调试工具
J-linkV8仿真调试器
2.3编译链接工具
KeilUvision5