STM32;智能家居;物联网;嵌入式_第1页
STM32;智能家居;物联网;嵌入式_第2页
STM32;智能家居;物联网;嵌入式_第3页
STM32;智能家居;物联网;嵌入式_第4页
STM32;智能家居;物联网;嵌入式_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

错误!未找到引用源。。使用库方式进行STM32开发,可以有效避免寄存器使用错误导致的程序异常,提高程序可靠性,缩短开发周期,节约开发和维护成本。一些开发人员认为使用寄存器方式开发,可以使得程序运行效率更高,占用系统资源少,片内节省空间。随着半导体技术和加工工艺的提高,硬件不再是制约电子行业发展的决定因素。以本设计所选用的STM32F103C8T6为例,它的主频率为72M,是8051的6倍。库开发方式带来的资源消耗,基本可以忽略不计。随着官方库的不断升级完善和开发理念的转变,使用库进行开发已经成为主流。因此,我们也将使用库来完成智能家居控制系统的软件。4.4模块软件实现方法4.4.1本地控制实现本地控制通过按键实现,设计使用了一个4X4矩阵按键。按键检测可分为逐行扫描和中断扫描两种实现方式。使用逐行扫描方式,一方面需要占用较多的单片机资源,频繁获取IO值以判断是否有按键按下,另一方面若按下按键时,STM32正在处理其他事件,则会导致此次按键无效,降低了检测的准确性和实时性。而中断检测方式,则能在第一时间识别按键动作并记录,让单片机在合适的时间再进行处理,有着很好的准确性和实时性。在设计中使用中断方式检测。只有在按键更新的时候才会在主程序里做出响应,否则不理睬,要求设计防抖动,只有两次检测为真时,才进行键值的更新4.4.2灯光调节实现为实现灯具的亮度调节。程序使用PWM输出来控制灯光。PWM并不是一种外设,简单来说,使用任意IO口规律输出高低电平即是PWM信号。PWM是一种脉冲宽度调制方法,通过单片机的IO输出控制脉冲的频率和占空比,来实现对模拟电路的控制。STM32通用定时器可以利用GPIO引脚进行脉冲输出。设置脉冲计数方式为向上计数,重载寄存器重载值为N,比较寄存器比较值为A。当前计数值X随着定时器时钟的变化不断累加。若当前计数值X大于比较寄存器比较值A,则IO电平翻转。若当前计数值X大于重载寄存器重载值N,则IO电平再次翻转,且当前计数值清0,重新开始计数。当比较寄存器比较值A变化时,PWM的占空比得到调节。而重载寄存器重载值N的变化,则对应PWM频率的调节。灯光分为level1、level2、level3三个亮度等级。当按下开关打开灯光后,默认亮度为level1。三秒钟内按下按键,亮度变为level2,三秒钟内再次按下按键,亮度变为level3等级,再次按键则关闭。不同亮度等级变化,通过调整占空比实现。灯光调节的程序流程如图4-3所示。4.4.3烟雾报警实现硬件部分提到,MQ-135气体传感器模块有AD和TTL两路信号输出,我们选用了TTL输出方式。查看模块用户手册可以看到,TTL输出模式下低电平有效。即未检测到异常气体超标时,输出高电平;当气体浓度异常时,输出低电平。为了能及时响应报警信号,我们使用中断方式监测TTL变化。将IO口配置为下降沿触中断模式,当空气中出现异常,IO口电平由高电平变为低电平,进入中断,触发声光报警机制,蜂鸣器鸣叫,LED闪烁。烟雾报警程序实现流程如图4-4所示。图4-3灯光调节程序流程图图4-4烟雾报警程序流程图在硬件设计部分,我们选用了一个无源蜂鸣器,与室内灯光的LED驱动方式相同,将蜂鸣器模块的控制IO接到定时器输出功能的IO,调整频率在2-5KHz控制蜂鸣器发声,调整占空比控制声音大小。此部分的LED使用普通IO口,通过翻转电平控制闪烁即可。4.4.4电机控制实现在硬件电路设计中,我们将用于控制步进电机的四个IO信号,直接接入到ULN2003驱动板的输入接口。我们选用的28BYJ48是一个四相八拍电机。对于该步进电机,有单相四拍、双相四拍以及双相八拍三种控制方式。其中单相四拍和双相四拍效果是完全相同的,一个循环可以控制外轴转动5.625/8度。双相八拍的一个循环虽然也是使转子转动5.625/8度,但这种驱动方式耗费的时间较长,转动速度只有四拍的一半。程序中我们使用单相四拍的方式控制步进电机转动。由于ULN2003是一个反向输出器,输出电平与输入电平信号相反。当检测到电机正转按键按下时,STM32会控制A-B-C-D四个控制信号依次输出高电平,为使电机能够连续持续转动,需要循环输出高电平。每当输出完成一次循环,步进电机的转子就转过一个齿距。要注意的是,当我们给某一相输入高电平信号时,其他三相需要重新置0。也就是说,在同一时刻只能有一个相保持高电平。电机控制程序流程如图4-5所示。图4-5电机程序流程图4.4.5远程控制实现GPRS短信模块内部电路相对复杂,且对外接口较多,在本设计中我们只需使用TTL电平的串行接口。STM32与短信模块依靠串口进行通信,而通信的内容是各种AT指令,短信模块需要使用AT指令进行控制。模块软件编程可分为串口驱动和AT指令实现两部分。串口驱动主要实现串口相关函数,用于串口的打开和关闭、串口数据的接收和发送。而AT指令实现主要是对具体AT指令进行封装,通过调用串口驱动函数,将AT指令发送给短信模块。本章小结本章对各模块的软件实现做了详细介绍。程序设计中使用模块化和分层思想,各模块之间驱动程序独立,使得程序更具可移植性。软件过程中应尽可能注意培养良好的编程习惯,在主流程及一些关键位置做好注释,使得程序更易读,既方便他人学习,也方便自己进行调试和更改。

第5章智能家居控制系统测试5.1功能测试根据任务书中的技术指标,对系统进行测试。使用两根USB线插入到笔记本的USB口,分别为STM32和GPRS短信模块进行供电。系统初始化时间约为5S,初始化成功后,STM32上的贴片式封装绿色LED会进行闪烁,此时方可进行操作。整个系统的测试,根据表5-1顺序进行并记录测试结果。表5-1智能家居控制系统测试结果表序号测试步骤观察结果测试结论1连续按下S1按键红灯点亮,亮度依次切换合格2间隔3S按下S1按键红灯熄灭合格3连续按下S2按键S2绿灯点亮,亮度依次切换合格4间隔3S按下S2按键绿灯熄灭合格5按下S5按键电机正转合格6按下S7按键电机停止合格7按下S5按键电机反转合格8按下S7按键电机停止合格9按下按键S6蜂鸣器持续鸣叫合格10向烟雾传感器吹烟蜂鸣器持续鸣叫合格黄色LED持续闪烁合格手机端收到报警信息合格11按下按键S9蜂鸣器停止鸣叫合格黄色LED停止闪烁合格12手机发送打开窗帘电机正转10S后停止合格13手机发送关闭窗帘电机反转10S后停止合格14手机发送打开红灯红灯点亮合格15手机发送关闭红灯红灯熄灭合格16手机发送打开绿灯绿灯点亮合格17手机发送关闭绿灯绿灯熄灭合格从测试结果表可以看出,通过本论文的设计研究,实现了本地和远程控制家庭灯具开关和窗帘升降,且能够实现对家庭火灾的有效监测。5.2稳定性测试根据实际使用中可能发生的一些情况,对系统进行测试。发现系统稳定性有待提高,主要存在以下几个问题:为了保证GPRS初始化的成功率,需要我们先为GPRS短信模块供电,待模块上的红色LED点亮后,再为STM32供电。按键频繁操作时,不能很好地识别,偶现按下按键无响应。短信模块收发信息不稳定,可能因模块天线信号不稳定等原因,造成明显的时间延迟。本章小结本章对主要是对设计所实现的智能家居控制系统进行测试。从测试结果可以看出,系统基本功能已经实现,但稳定性有待提高,程序有待进一步优化。

结论在本论文中,首先介绍了智能家居的研究背景和研究现状,接着对比智能家居系统实现的两种方案,确定使用集成模块完成设计。然后分别从硬件和软件角度,按照功能模块划分,详细描述了本文设计的智能家居系统的具体实现方法,最终完成了基于STM32的智能家居控制系统的设计。本文设计的智能家居系统,通过USB线外接5V电源,即可正常工作。一方面可通过矩阵按键实现本地控制灯光开关和亮度调节、窗帘升降以及烟雾报警。另一方面也可通过短信方式远程控制以及接收烟雾报警的警报通知。此次毕业设计题目的实现,使我对电子设计的一般步骤有了较为深入的理解。从需求提出,到方案论证和确定,再到硬件电路搭建、软件程序调试,环环相扣,缺一不可。而在基本功能指标满足后,还需考虑如何提高系统的稳定性和可靠性。设计过程中不仅要有扎实的理论基础,还有要很好的动手能力

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论