版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE37毕业设计毕业设计题智能家居(小型公寓)毕业设计类型产品设计□工艺设计□方案设计姓名班级所属系部物流工程系专业电子信息工程技术指导教师职称完成时间摘要为了使家居生活变得更加方便和轻松,也为了满足现代智能家居对控制设备集成化、小型化的要求,智能家居是利用综合布线、安全防范等技术将与家居生活有关的系统有机地结合在一起,该系统用来提升家居的便利性、舒适性和安全性。日常的室内起居在人们的生活中扮演着重要的角色,那么如何将智能家居先进的科学技术应用到人们的正常生活中去,从而改善和提高人们的生活质量,成为人们关注的问题之一。本次设计旨在设计一款性价比高,实用性广,功能多样,操作简易,易于被用户接受的智能家居系统。通过对智能家居系统的功能分析,可将该系统划分为四个模块:智能主控制模块,通讯模块,家电模块,电源模块、传感器模块。智能主控制模块,作为整个系统的核心,响应并智能处理其他模块的消息;通讯模块,作为智能家居中提供无线通讯的模块,为用户与智能家居系统之间搭建了信息传递平台,智能主控制模块通过串口与该模块进行通讯,及时将信息传递至用户,用户也是通过该模块对整个智能家居系统进行实时控制。本系统采用STM32系列新一代嵌入式处理器为核心,配合外围的硬件设备和软件的驱动,实现了对家居家电的远程控制、室内监控、安防报警、室内数据信息保存等功能。利用相关的传感器采集室内的数据信息。关键词:智能家居STM32目录1.绪论 21.1设计概述 21.2设计研究的意义 31.3设计的主要工作 42.总体设计方案 42.1系统需求分析 42.2系统设计目标和原则 52.3嵌入式操作系统简介 6(1)嵌入式操作系统的定义 6(2)嵌入式操作系统特性 72.4总体设计 92.5Cortex-M3和STM32介绍 10(1)Cortex-M3介绍 10(2)STM32简介 122.6传感器介绍 14(1)上位机 15(2)温度传感器 16(3)湿度传感器 17(4)可燃气体探测器 17(5)双光束对射红外探测器 17(6)红外探测器 18(7)智能插座 18(8)多功能面板 18(9)风雨探测器 183.硬件设计 193.1系统硬件选型 193.2主机控制板设计 193.3智能家居系统模块功能设计方案 203.3.1硬件平台的主要电路介绍: 20(1)智能主控制模块电源电路主控制模块设计 20(2)主控制器的外围电路设计 21(3)RS485通信模块设计 22(4)家居灯光控制模块设计 224.软件设计 234.1智能家居应用软件实现 25总结 36参考文献 37致谢 381.绪论1.1设计概述伴随着经济迅速发展和社会整体的进步,特别是电脑信息控制技术、自动化技术和移动通讯技术的日渐成熟,逐渐幵始改变日常生活的工作习惯。传统家用电器并没有因信息时代的到来而产生革命性的变化。在这样的背景下,人们对现有生活条件提出了更高的要求。特别是在家居环境方面,高效、快捷、舒适、智能化和低碳等渐渐成为高品质生活的新要求。如何简便的在居家环境中配置适合家庭用的小型网络,将各类生活电器组成一个整体,并通过设备或者个人电脑对家庭各个家电进行方便的管理使用和远程监控,使住户对整个家庭环境更为有效的了解和控制。并且随着大规模集成电路技术、电子通讯技术、电脑控制技术的不断进步,提供给了智能家居技术基础。本设计以应用为目的,将智能家居与遥控相结合,不仅实现通过传感器监视环境,远程报警,远程控制等,而且通过分析传感器信息,控制遥控自动调节室内环境的目的。对于该系统的设计,紧密围绕智能家居系统的设计基本要求,以系统的安全可靠为第一设计要求;系统中加入了大量的安全和保护措施,确保系统的安全性,同时加入备用电源提高了系统的应用领域。1.2设计研究的意义智能家居系统具有广泛的市场前景,不过由于很多现实方面的原因,没有得到快速的发展。这个方面的原因有很多,最重要的原因还是由于这方面的产品价格比较昂贵,以装修户型为3室2厅房子为例(配置家庭网关):国外公司产品需要4-7万元左右不等,国内主流产品则稍微便宜也需要2-3万元左右。高昂的价格对普通消费者而言是笔巨大的幵支,令普通消费者望而却步。因此开发低端的市场产品显的尤为重要。本设计的研究目标是通过以STM32为基础完成一套小型公寓的智能家居控制系统。主要为了实现价格便宜、简单实用等特性,以此来满足社会对于低端智能家居产品方面的需求。同时在研究设计过程中提高自己嵌入式系统开发的能力,和培养自己发现实际问题,解决问题的能力。完成这样一个低端的智能家居系统,能够改变普通的消费者的生活体验,满足他们对家居智能化的要求,同样也能够推动发展智能家居产业。智能家居,旨在为用户居住环境提供温馨、惬意、安全的嵌入式系统。它通过在用户的家庭住宅中,采用多种功能的设计方案,部署智能家居系统,并利用适宜的通讯技术将系统功能模块衔接起来,为家庭住宅组建一套管理家居设施的系统。常见的智能家居系统如:住宅安防系统(防火、防盗、防煤气泄漏等)、家电控制系统、网络通讯系统等等。1.3设计的主要工作本设计构建了一个智能家居控制系统的软硬件平台,考虑到整个系统的通用性和可扩展性,采用嵌入式STM32相结合的方案,配合各种家居子系统,实现了智能家居的各种功能。主要研究内容概括如下:(1)基于智能家居对控制系统软硬件的基本要求,设计嵌入式系统的总体方案。(2)实现智能家居的核心控制器和各子系统包括门禁、烟雾报警的硬件电路的设计。(3)实现以嵌入式为主控制器的家居子系统地软件设计。(4)剖析嵌入式操作系统STM32的内核结构,并在核心控制器中构建STM32嵌入式操作系统平台。(5)在软硬件平台上开发各种嵌入式应用程序,实现智能家居的基本功能。2.总体设计方案2.1系统需求分析智能家居通常以基于Cortex-M3构架的STM32系列芯片为核心,采用标准进行模块化设计,以智能家居为载体,为用户提供微型化、智能化和网络化的控制模块及产品。适用于智能电子产品系统、智能家居等众多领域。2.2系统设计目标和原则设计系统之前,需要对整个系统进行很好的规划,统筹安排开发进度,为项目的顺利完成打下良好基础。本课题的设计目的是实现一个简单的智能家居系统,能够在普通家庭中得到应用,因此在设计的时候遵循以下原则:(1)简单实用对于大多数家庭的日常生活而言,智能家居功能的简单实用性是具有重要意义的。目前市面上的一些看似较为先进的智能家居系统,得不到有效推广的一个重要原因就在于很多功能看似花哨却不实用,有时会使简单的事情变得更加麻烦,同时复杂的操作界面和功能设置也让人头疼,因此简单实用是该系统设计的原则。(2)价格低廉智能家居要在国内得到普及,一个重要的门槛就是价格,这也是制约智能家居现阶段发展的一个重要因素。要做到价格低廉,首先需要成本低廉。要满足性能的同时降低成本,就必须在器件选择上多下功夫。选择高性价比的芯片和外围器件以及开源的软件。(3)稳定耐用好的系统必然是一个稳定的系统,智能家居系统也不例外。要做到性能稳定,就必须保证系统架构的合理性,以及软硬件设计的一协调性。(4)可扩展性可扩展性是判断一个系统好坏的重要因素,在设计各个模块功能时要考虑使系统具备一定的可扩展性,方便日后的优化和升级。2.3嵌入式操作系统简介(1)嵌入式操作系统的定义为了和一般使用的计算机系统进行区分,把系统包含到对象体系中,以此来完成控制的智能化的系统称为嵌入式系统。此类系统己经普遍在移动通讯、数码产品、工控设备、手持终端和医疗设备等各个领域得到应用。由于现代电脑信息技术的快速发展,进行嵌入式系统的应用方面的研究比以往有了更多的实际应用价值。家庭用的个人电脑或者功能强大的MCU都可以成为智能家居系统的控制设备。近年来,由于科技的发展,运用单片机所设计的系统其硬件电路规模变的很大,所具备的功能也变的更多,因此为嵌入式的操作系统开发提供了硬件保证,从而产生了很多具备各种使用优点的系统。所以嵌入式操作系统是指那些能够在嵌入式的平台上开发运行,对全部系统和其所控制作用的装置、部件等其它资源能够一起调用、指挥和控制的软件。(2)嵌入式操作系统特性由于嵌入式操作系统的硬件资源有限、多样化的应用环境和特殊的开发手段,使它和普通应用的操作系统有着很多的不同,其主要特点如下:微型化;嵌入式系统的芯片内部存储的资源空间比较有限,电池的容量比较小以及复杂多变的外部连接设备,这部分客观的条件就决定了嵌入式操作系统允许使用的资源有限,所以在保证所必要使用功能条件下,嵌入式操作系统的所占空间的大小越少越好。可靠性强;嵌入式系统普遍在航空航天、交通工具、武器装备、重要的生产装备领域场合得到使用,这些都要求嵌入式操作系统在可靠性上有非常好的展示,在保障性要求高的地方还必须提供必要的防错和容错方法,以此来提高系统的稳定可靠性。实时性强;现在嵌入式系统在工业现场环境监测、移动通信、生产控制等行业场合被普遍地应用,以上这些领域都需要系统能够及时对事件判断产生反应。所以嵌入式操作系统必须要有比较强的实时性。裁剪性好;采用嵌入式操作系统平台类别非常之多,所以要求该系统中可以提供各种功能组件能够让开发者依照自己的要求选择使用,既要求它具有较好的裁剪性。易移值性;为了适合各种各样的硬件资源平台,嵌入式操作系统应该能在做较少更改的情况下可以平稳可靠的运行在不同处理器芯片的硬件平台上。这就要求嵌入式操作系统应该具有易移植性。国际上各家大型软件公司、还有个人在面对嵌入式系统的广阔的使用领域和诱人的钱景下,都陆续开发研究出具有自身优势的嵌入式操作系统。目前,在各个领域被应用开发较多的嵌入式操作系统有WindRiver公司的pSOS、VxWorks,Micosoft公司的WindowsCE,QNX公司的QNXOS,还有在手机等移动手持设备中广泛被使用的WinCE、安卓Android、苹果OS、WP等,但是使用这些大企业开发的操作系统一般需要支付比较昂贵的授权使用的费用。正是由于这些情况,一些个人和组织也开发了一些免费的、开源的操作系统在互联网上发布,在这中间比较有名的是tiC/OS-n和iCLinux。通过选择比较,本论文选用了基于Cortex-M3内核的STM32系列的微处理器和c/os-n作为本论文所设计开发的智能家居控制系统的软硬件基础。此外,由于个人电脑操作方便,可以很便捷的开发设计项目,重要的是处理运算的能力比较强大,所以本论文个人电脑作为智能家居控制系统软件设计调试和异常环境监测方法的验证平台,但是整个实际的系统还是以开发板载上的嵌入式操作系统为控制系统的核心。2.4总体设计本系统是以基于Cortex-M3为内核的STM32微处理器为嵌入式控制器的核心CPU,选择tiC/OS-II为智能家居系统的操作系统,以iC/GUI为系统人机界面的软件平台,以此组建本论文家居控制系统的控制中心,向外部的设备模块收发信号来控制实际的外围设备,从而实现家电控制和对室内环境的监测。由智能家居系统流程图,图.1所示。家用电器控制家用电器控制电灯窗帘空调……………家电控制模块STM32控制器家居传感器煤气传感器光电烟雾传感器热红外传感器……………本地用户控制触摸屏通信模块远程控制模块/PD用户远程监控室内环境异常入侵安防监控异常检测模块室内环境数据监控RS485RS232ZigbeeZigbeeGPRS图2.1智能家居系统流程图2.5Cortex-M3和STM32介绍(1)Cortex-M3介绍Cortex-M3是第一款根据ARMv7-M架构所设计的32位微处理器,具备能耗低、调试花费少等很多特点。在机械控制系统、乘用车内部电子控制系统、移动通讯网络和工控领域等对能耗和价格低廉的领域广泛的使用该类芯片,该类芯片幵发编程比较简单,具有出色的运算处理性能强、能耗低、开发花费少等特点。该架构的MCU—般有内核、总线接口部分、控制嵌套中断使用情况的NVIC、调试跟踪单元和保护存储器单元MCU等几部分组成,它们有以下竞争优势:采用了哈佛架构的3级流水线处理工艺内核,将硬件乘除法等很多功能集于一体,运算性能快,能耗低特点。由于该类芯片运用Thumb-2命令集,具有性能更加卓越和指令执行的效率更高,Thumb-2命令集综合了16位和32位指令的各自性能特点,而且C语言由于底层芯片架构的特点运行得更快,降低了系统软件以后维护升级的难度。该系列处理器运用了ARMCoreSight的调试方式,该方式有两种接口:访问端口DAP和追踪端口TP。DAP端口可以用作串行JTAG调试口或者串行调试口SW-DPo而SW-DP调试更为简单方便只要数据和时钟两根线就能够调试,调试具有和JTAG同样的效果。MCU能够保护存储的数据,在该类处理器中是可以选择使用或者不使用的。NVIC是该系类芯片中断管理部分,能够管理多达240个中断以及对其配置256个中断优先级。使用各中中断管理技术,使得CPU响应中断处理的速度比以前更加快速,唤醒从低功耗模式时间、背对背中断之间的延时都只要六个CPU周期时间。处理器的总线矩阵BusMatrix将核和外面的总线和调试用的接口进行连接,此外还采用位段处理技术和不对称数据访问机制,大大加快了处理器访问外部设备的速率。由于这些特点,该系列处理器比ARM7TDMI的运行的速率能够快35%而编程的代码能够减少45%。(2)STM32简介意法公司开发的STM32系列处理器采用了Cortex-M3的内核架构。该系列芯片专用于为了满足能耗使用低、处理性能强、芯片的实时性效果好、价格低廉的嵌入式场合要求。STM32系列给微处理器使用者带来了广阔的开发空间,提供全新的32位产品供用户选择使用,结合了产品性能高、能耗低、实时性强、电压要求低等特点,而且还具备芯片的集中程度高和方便开发的优点。STM32系列处理器目前主要有三个大的类别。STM32F101是基础产品系列,其处理运算速率可以达到36MHz。STM32F103是加强型产品系列,其处理运算速率可以达到72MHz,该系列芯片本身集成很多内部的RAM和外围设备。STM32系列的F105和F107是该公司最先进应用于网络通信的芯片产品,和其它系列的芯片相比,增加了以太网接口和USB接口。意法半导体公司的STM32系列MCU芯片具备很多特点,如下:运用了ARM公司最新的、最先进的Cortex-M3内核。突出的能耗控制。STM32经过特别设计,将动态耗电机制、电池供电方式下低电压工作性能和等待运行状态下的低功耗进行最优化处理控制。创新出众的外设。提供各种开发资源和固件库便于用户开发,促使新研发的产品很快上市。STM32F10X系列MCU的内部结构参考如下图所示,该系列芯片内部结构随着其型号不同,具体的结构也略有不同。智能家居控制器以基于Cortex-M3构架的STM32系列芯片为核心的标准模块式产品,预留标准的以太网接口、4路RS485接口、I\O、AD、DA接口。图2.2STM32引脚图2.6传感器介绍系统采用的传感器主要包括上位机和主控制器两类。上位机包括:主控制器。主控制器包括:温度传感器、湿度传感器、光照传感器、可燃气体探测器、烟火探测器、红外探测器、智能插座、多功能面板、双光束探测器、风雨探测器等等。由于两类主控制器返回的信号不同,所以系统分别对他们进行主控制器以后上位机,如图.3所示:上位机上位机主控制器湿度传感器温度传感器光照传感器可燃气体探测器烟火探测器红外探测器智能插座多功能面板双光束探测器风雨探测器图2.3主要传感器介绍:(1)上位机是指人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。简言之如此,真实情况千差万别不离其宗。上下位机都需要编程,都有专门的开发系统。
在概念上
:控制者和提供服务者是上位机
,被控制者和被服务者是下位机
也可以理解为主机和从机的关系
,但上位机和下位机是可以转换的。两机如何通讯,一般取决于下位机。TCP/IP一般是支持的。但是下位机一般具有更可靠的独有通讯协议,购买下位机时,会带一大堆手册光盘,告诉你如何使用特有协议通讯。里面会举大量例子。一般对编程人员而言一看也就那么回事,使用一些新的API罢了。多语言支持功能模块,一般同时支持数种高级语言为上位机编程。(2)温度传感器是应用最广的一类传感器。温度传感器的市场份额大大超过了其他的传感器。从17世纪初人们开始利用温度进行测量。在半导体技术的支持下,本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。与之相应,根据波与物质的相互作用规律,相继开发了声学温度传感器、红外传感器和微波传感器。温度传感器是指能感受温度并转换成可用输出信号的传感器。温度传感器是温度测量仪表的核心部分,品种繁多。按测量方式可分为接触式和非接触式两大类,按照传感器材料及电子元件特性分为热电阻和热电偶两类。(3)湿度传感器湿敏元件是最简单的湿度传感器。湿敏元件主要有电阻式、电容式类。湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空中的水蒸气吸附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量湿度。(4)可燃气体探测器是对单一或多种可燃气体浓度响应的探测器。可燃气体探测器有催化型、红外光学型两种类型。催化型可燃气体探测器是利用难熔金属铂丝加热后的电阻变化来测定可燃气体浓度。当可燃气体进入探测器时,在铂丝表面引起氧化反应(无焰燃烧),其产生的热量使铂丝的温度升高,而铂丝的电阻率便发生变化。红外光学型是利用红外传感器通过红外线光源的吸收原理来检测现场环境的烷烃类可燃气体。(5)双光束对射红外探测器其基本的构造包括瞄准孔、光束强度指示灯、球面镜片、LED指示灯等。其侦测原理乃是利用红外线经LED红外光发射二极体,再经光学镜面做聚焦处理使光线传至很远距离,由受光器接受。当光线被遮断时就会发出警报。报警信号采集到智能家居控制器中,配合组成安防系统。(6)红外探测器是一种当入侵者接近它时能触发报警的探测装置。报警信号采集到智能家居控制器中,配合组成安防系统。(7)智能插座以基于Cortex-M3构架的STM32系列芯片为核心的智能产品,内含ADE7753电能芯片、液晶屏、继电器等,可计量显示对应家用电器的电量参数,并可设置何时启动该家用电器的电源,可合理分配家中用电负荷,实现智能电网功能。可通过485总线与家庭控制中心通讯。也可独立工作。(8)多功能面板以基于Cortex-M3构架的STM32系列芯片为核心的智能产品,包含4路继电器输出,可同时控制4路负载(灯、排气扇等),可通过485总线与家庭控制中心通讯。也可独立工作。(9)风雨探测器风感器:脉冲发生器,频率/电压转换器;雨感器:镀金电极间水阻传导。用风叶转动和雨滴接收器感应并发出信号,敏感度高,并且风向可从1-6级风自已设定,一般出厂设定为3级风,雨量也可从雾、微雨、小雨、中雨、大雨、暴雨调节,一般出厂设定为小雨,调节办法,在风雨感应器背部用一字型螺丝刀逆时针转动,即灵敏度越来越高。配合电动窗帘、电动窗户、智能家居控制器组成情景模式设定的舒适系统。3.硬件设计一个稳定可靠的系统硬件平台是系统幵发成功与否的关键。本章主要介绍系统的硬件平台,对整体框架、系统主机板、RS484通讯模块、基于传感器模块、家居灯光控制模块等进行设计介绍和说明。3.1系统硬件选型只有稳定可靠的硬件平台才能确保智能家居控制系统的正常平稳地运行。一个良好的硬件平台设计,既能实现系统运行所要求的目标功能,还能为后续的系统升级、功能扩展提供后续开发的空间和丰富的接口。同时根据系统自身设计定位,结合综合的成本考虑,设计符合实际需要的硬件系统,根据需求进行最后的硬件选型。本次所设计的智能家居控制系统是为填补目前市场中低端廉价产品的市场空白,设计一套廉价好用的智能家居系统。所以本系统硬件主要包括STM32主机控制模块、RS485通讯模块、基于传感器模块、以及家居灯光的控制模块等。3.2主机控制板设计本论文选用主控制板的MOT为一款基于ST(意法半导体)公司STM32系列处理器(ARMCortex-M3内核)STM32F103ZET6(LQFP144),片内集成512KBFlash、64KBRAM、1个USB、1个CAN、1个SDIO、8个定时器、112个GPIO输入输出端口、5个USART、3个ADC、3个SPI、2个I2C、2个DAC、2个I2S、FSMC总线。CPU主频为72MHz,其具有丰富的硬件资源、很低的能耗、开发过程简单、成本低廉,广泛适用于各种应用领域。考虑到开发的周期和成本,主机控制板的稳定性等因素,选用冰凌科技开发的STM32幵发板作为硬件平台。主机控制板上的硬件资源如下:(1)、3种启动方式:用户Flash、系统存储器、SRAM;(2)、8M晶振作为MCU的时钟,32768KHZ晶振用于RTC;(3)、256KBSRAM,16MBNORFlash,128MBNANDFlash;(4)、2MB串行Hash,1KB串行EEPROM;(5)、1个CAN2.0A/B接口,2个IIS232串口;(6)、2个DAC引出端子,2个PWM引出端子。3.3智能家居系统模块功能设计方案3.3.1硬件平台的主要电路介绍:(1)智能主控制模块电源电路主控制模块设计因为STM32F103自身芯片上就配置了很多内部资源,给主机控制板的电路设计带来了很多便利,降低外部设备设计的难度,使设计更加稳定,也减少了幵发费用。系统的电源负责给整个控制平台提供电能,它设计是否稳定,决定了整个系统是否能够正常地运行。在设计系统输入电源时,需要给整个系统供电的电压为12V髙质量稳压直流电源,而且为了降低电源电路设计的难度,在设计时采用ST公司的L7805CV线性电源芯片,电源的电压不得高于18V,否则L7805CV芯片发热严重。选择的电压调节器为SPX1117-3.3,将5V的直流电转换成3.3V,在电源转换芯片前后加上合适的电容起到滤除相应的高频低频信号干扰。图3.1电源电路部分(2)主控制器的外围电路设计图3.2外围电路设计(3)RS485通信模块设计智能家居控制器及RS485扩展模块均为标准模块式产品,预留标准的以太网接口、RS485接口、I\O、AD、DA接口。可将家居模型任意改变、配置相关智能产品、亦可增加第三方产品。5路RS485通信口,每路带ESD保护,其中(USART1~UART4)外界各个485通信智能电子产品,另一路为RS485扩展模块,扩展接口支持RS485扩展模块级联和ADC转换模块扩展。各个485接口的通信协议为ModbusRTU,每路仅支持半双工通信,最高通信速度:250kbps,本系统通信波特率设置值:19200。(4)家居灯光控制模块设计智能家居系统除了具备最基础的保证住宅的安全功能,对家电的自动控制是体现其智能化的一面。用户可以通过智能主控制模块,对家里的各种家电进行开关操作。试想,当用户外出时,只需要通过手机来检测家里灯具,电视,空调等电器的使用情况,可见该系统实用性很高。在当代智能家居系统中,加入了更多智能的元素,例如:在室内安装了,温湿度传感器,烟雾传感器,煤气传感器等,一旦温湿度,烟雾浓度,新鲜空气浓度与标准水平相差较大时,智能主控制模块就会对家电模块进行相应的操作。由于本次智能家居系统设备的局限性,并没有将这些家电加入到设计中,通过了3盏LED灯进行替代,模拟控制家电的效果。不可调光部分,采用的是继电器控制电路,可以允许通过的是大电流灯具,用二极管反接保护继电器的线圈不被瞬间大电流烧毁。可调光部分,采用的是可控桂元件进行控制,对外部信号隔离,增强抵抗干扰的能力。4.软件设计系统的软件设计在整个系统开发中占用了大量的时间,是系统正常运行的大脑。软件设计在完成整个智能家居控制系统设计中占有极其重要的地位。本章主要阐述了系统整体的软件设计及各子功能模块的软件设计,以及各个模块的程序实现方法,并进行实验调试测试。图4.14.1智能家居应用软件实现(1)控制程序intmain(void){ MOT_Init(); Delay_Init();// AT24CXX_Init();// IR_ReceiveInit(); RS485_Init();/*双色LED初始状态,低电平点亮,全都亮红色*/ LED1ON_RED(); LED2ON_RED(); LED3ON_RED(); LED4ON_RED(); BUZZER_Off();//蜂鸣器初始关闭/*继电器初始状态设置*/ Relay_CloseState();// while(AT24CXX_Check())//检测不到24c02// {// GPIO_SetBits(BUZZ_PORT,BUZZ);// } while(1) {// if(RcvShakeHand_flag==0)// {// Send_ShakeHands();// }// else// {// function_MODBUS();// } Send_ShakeHands(); function_MODBUS(); Button_key1_Func(); Button_key2_Func(); Button_key3_Func(); Button_key4_Func(); REED_Switch(); Location_SizeData=(Window_SizeData|Curtain_SizeData); }}(2)RS485通讯程序voidRS485_SendString(char*str){ u16i=0; /*让收发器进入发送模式*/ RS485_EnterSend(); /*延迟一小段时间,让收发器响应过来进入发送模式。这个时间应该根据具体型号的 485收发器来决定,可以从它的Datasheet中获得这个参数*/ DelayN100nop(2); while(str[i]!='\0') { RS485_SendByte(str[i]);i++; } /*发送最后一个字符串结束符*/ RS485_SendByte('\0'); /*延迟一小段时间,让收发器把数据全部送出到485总线上*/ DelayN100nop(2); /*让收发器恢复接收模式*/ RS485_EnterReceive();}(3)电机驱动程序#include"home_mot.h"#include"delay.h"uint8_tkey1_state=0; //按键状态值uint8_tkey2_state=0;uint8_tkey3_state=0;uint8_tkey4_state=0;uint8_tFlag_REED5;uint16_tTime_Cnt=0; //时间计数uint8_tfall_state=0;//下降沿标志位uint16_tTime_CountData[10]; //时间累计值uint8_tcnt;externuint8_topenflag;externuint8_tcloseflag;voidMOT_Init(void){ GPIO_InitTypeDefGPIO_InitStructure;// NVIC_InitTypeDefNVIC_InitStructure;// EXTI_InitTypeDefEXTI_InitStructure; /*EnabletheClock*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC| RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE); //使能PB,PE端口时钟 /*ConfigureButtonpinasinputfloating*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //PC.0PC.1PC.2PC.3端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉输入 GPIO_Init(GPIOC,&GPIO_InitStructure); //根据设定参数初始化GPIOC.5/*ConfigureButtonpinasinputfloating*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14; //TEST-->PC.14端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //浮空输入 GPIO_Init(GPIOB,&GPIO_InitStructure); //根据设定参数初始化GPIOB.14 /*ConfiguretheGPIO_LEDpin*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; //LED1-->PC.5端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOC,&GPIO_InitStructure); //根据设定参数初始化GPIOC.5 GPIO_SetBits(GPIOC,GPIO_Pin_5); //PC.5初始输出高,灯灭 /*ConfiguretheGPIO_LEDpinPORTA.1\2LED5PORTA.11\12LED4PORTA.4\5RelaysK3,K4PORTA.6\7RelaysK1,K2*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_11|GPIO_Pin_12;//LED引脚配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15;//LED6引脚配置,蜂鸣器 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_ResetBits(BUZZ_PORT,BUZZ);//蜂鸣器初始状态设置 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;//LED3引脚配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&GPIO_InitStructure); /*ConfigurethereedswitchPORTD.8~12*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10| GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13;//REED引脚配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOD,&GPIO_InitStructure); // /*ConnectEXTI8LinetoPG.08pin*///GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource8);//REED5//// /*ConfigureEXTI8line*///EXTI_InitStructure.EXTI_Line=EXTI_Line8;//EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//EXTI_InitStructure.EXTI_LineCmd=ENABLE;//EXTI_Init(&EXTI_InitStructure);//// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);///*EnableandsetEXTI9_5Interrupttothelowestpriority*///NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;//NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01;//NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//NVIC_Init(&NVIC_InitStructure);} /*按键1功能程序,按键按下释放后,LED1亮蓝色,窗帘打开,第二次按下,LED1亮红色,窗帘停止运行*/voidButton_key1_Func(void) { if((0==BUTTON_Key1_GetState())&&(key1_state==0)) { while(!BUTTON_Key1_GetState()); //等待按键释放 key2_state=0; //互锁按键2状态 LED2ON_RED(); key1_state=1; //按键1状态置1 LED1ON_BLUE(); Curtain_Open(); } if((0==BUTTON_Key1_GetState())&&(key1_state==1)) { while(!BUTTON_Key1_GetState()); //等待按键释放 key1_state=0; //按键1状态复位 LED1ON_RED(); Relay_CloseState(); }}/*按键2功能程序,按键按下释放后,LED2亮蓝色,窗帘闭合,第二次按下,LED2亮红色,窗帘停止运行*/voidButton_key2_Func(void) { if((0==BUTTON_Key2_GetState())&&(key2_state==0)) { while(!BUTTON_Key2_GetState()); //等待按键释放 key1_state=0; //互锁按键1状态 LED1ON_RED(); key2_state=1; //按键2状态置1 LED2ON_BLUE(); Curtain_Close(); } if((0==BUTTON_Key2_GetState())&&(key2_state==1)) { while(!BUTTON_Key2_GetState()); //等待按键释放 key2_state=0; //按键2状态复位 LED2ON_RED(); Relay_CloseState(); }}/*按键3功能程序,按键按下释放后,LED3亮蓝色,窗户打开,第二次按下,LED3亮红色,窗户停止运行*/voidButton_key3_Func(void) { if((0==BUTTON_Key3_GetState())&&(key3_state==0)) { while(!BUTTON_Key3_GetState()); //等待按键释放 key4_state=0; //互锁按键4状态 LED4ON_RED(); key3_state=1; //按键3状态置1 LED3ON_BLUE(); Window_Open(); } if((0==BUTTON_Key3_GetState())&&(key3_state==1)) { while(!BUTTON_Key3_GetState()); //等待按键释放 key3_state=0; //按键3状态复位 LED3ON_RED(); Relay_CloseState(); }}/*按键4功能程序,按键按下释放后,LED4亮蓝色,窗户闭合,第二次按下,LED4亮红色,窗户停止运行*/voidButton_key4_Func(void) { if((0==BUTTON_Key4_GetState())&&(key4_state==0)) { while(!BUTTON_Key4_GetState()); //等待按键释放 key3_state=0; //互锁按键3状态 LED3ON_RED(); key4_state=1; LED4ON_BLUE(); Window_Close(); } if((0==BUTTON_Key4_GetState())&&(key4_state==1)) { while(!BUTTON_Key4_GetState()); //等待按键释放 key4_state=0; LED4ON_RED(); Relay_CloseState(); }}voidRelay_CloseState(void) //继电器全部关闭{ GPIO_ResetBits(RELAY1_PORT,RELAY1); GPIO_ResetBits(RELAY2_PORT,RELAY2); GPIO_ResetBits(RELAY3_PORT,RELAY3); GPIO_ResetBits(RELAY4_PORT,RELAY4);}voidCurtain_Open(void) //打开窗帘{ GPIO_ResetBits(RELAY2_PORT,RELAY2); DelayMs(15); GPIO_SetBits(RELAY1_PORT,RELAY1); //继电器1上电 }voidCurtain_Close(void) //关闭窗帘{ GPIO_ResetBits(RELAY1_PORT,RELAY1); DelayMs(15); GPIO_SetBits(RELAY2_PORT,RELAY2); //继电器2上电}voidWindow_Open(void) //打开窗户{ closeflag=0; GPIO_ResetBits(RELAY4_PORT,RELAY4); DelayMs(15); GPIO_SetBits(RELAY3_PORT,RELAY3); //继电器3上电 openflag=1;}voidWindow_Close(void) //关闭窗户{ openflag=0; GPIO_ResetBits(RELAY3_PORT,RELAY3); DelayMs(15); GPIO_SetBits(RELAY4_PORT,RELAY4); closeflag=1;}voidLED1ON_RED(void) //LED1亮红色{ GPIO_ResetBits(LED1_PORT,LED1_Red); //低电平点亮 GPIO_SetBits(LED1_PORT,LED1_Blue);}voidLED1ON_BLUE(void) //LED1亮蓝色{ GPIO_SetBits(LED1_PORT,LED1_Red); GPIO_ResetBits(LED1_PORT,LED1_Blue); //低电平点亮}voidLED2ON_RED(void) //LED2亮红色{ GPIO_ResetBits(LED2_PORT,LED2_Red); //低电平点亮 GPIO_SetBits(LED2_PORT,LED2_Blue);}voidLED2ON_BLUE(void) //LED2亮蓝色{ GPIO_SetBits(LED2_PORT,LED2_Red); GPIO_ResetBits(LED2_PORT,LED2_Blue); //低电平点亮}voidLED3ON_RED(void) //LED3亮红色{ GPIO_ResetBits(LED3_PORT,LED3_Red); //低电平点亮 GPIO_SetBits(LED3_PORT,LED3_Blue);}voidLED3ON_BLUE(void) //LED3亮蓝色{ GPIO_SetBits(LED3_PORT,LED3_Red); GPIO_ResetBits(LED3_PORT,LED3_Blue); //低电平点亮}voidLED4ON_RED(void) //LED4亮红色{ GPIO_ResetBits(LED4_PORT,LED4_Red); //低电平点亮 GPIO_SetBits(LED4_PORT,LED4_Blue);}voidLED4ON_BLUE(void) //LED4亮蓝色{ GPIO_SetBits(LED4_PORT,LED4_Red); GPIO_ResetBits(LED4_PORT,LED4_Blue); //低电平点亮}/**获得按键值*/uint8_tBUTTON_Key1_GetState(void)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃定西市岷县岷州国有投资集团有限公司招聘8人笔试参考题库附带答案详解
- 2025湖南君山生态渔业集团有限公司劳务派遣人员招聘3人笔试参考题库附带答案详解
- 2025海南保亭农水投资有限公司招聘22人笔试参考题库附带答案详解
- 2025浙江温州市平阳县城发集团下属房开公司招聘项目制员工(9月27日)拟聘用(二)笔试参考题库附带答案详解
- 2025浙江宁波市北仑区交通投资集团有限公司招聘矿山专职技术人员6人笔试参考题库附带答案详解
- 2026及未来5年中国29寸电视机前罩模具市场数据分析及竞争策略研究报告
- 国家电投集团北京公司招聘3人笔试历年难易错考点试卷带答案解析
- 青岛市2025中国地质调查局青岛海洋地质研究所第二批招聘6人(山东)笔试历年参考题库典型考点附带答案详解
- 石家庄市2025年河北石家庄市中医院选聘事业单位11人笔试历年参考题库典型考点附带答案详解
- 海南省2025海南容诚会计师事务所(特殊普通合伙)招聘笔试历年参考题库典型考点附带答案详解
- 五一游西安作文400字左右
- 毒品与艾滋病预防智慧树知到期末考试答案章节答案2024年湖南警察学院
- 北京海淀区重点高中高一物理下学期期中考试试卷含答案
- 初中部学生习惯养成教育记录表和家长评价表
- 公司债券合同
- 七年级历史下册 期中考试卷(一)(人教版)
- CSC-300系列发变组保护调试说明
- 全航速减摇鳍
- E级控制测量技术方案
- YY 0777-2023射频热疗设备
- 河南建设工程项目安全生产综合评定表
评论
0/150
提交评论