1、12010 年广东省电子设计竞赛智能家居方案书题目:智能家居模拟系统Simulating System of Intelligent Home姓 名: 刘永鑫,王文雄,江泽良 学院: 华南农业大学 工程学院 指导老师: 俞龙 日期: 2010-9-11 2目 录摘 要 41. 系统方案设计 .51.1.项目背景与需求分析 .51.2.系统概述 .51.3.系统功能与指标 .51.4.方案比较与选择 .61.4.1.处理器比较 61.4.2.硬件系统通信方案比较 61.4.3.操作系统比较 71.4.4.Windwos CE 平台软件开发语言比较 .71.4.5.Windwos CE 平台 We
2、b 服务方案比较 .71.5.系统架构 .82. 系统实现原理 .92.1.基于 Windows CE 嵌入式 Web 服务器(用户接口层) .91.4.6.服务器软件 概览 91.4.7.主控模块 101.4.8.Web 服务模块 .131.4.9.短信查询与控制服务 151.4.10. 状态监视服务 172.2.命令数据交换器(软交换层) .182.2.1.命令数据交换器软件流程图说明 192.2.2.命令数据交换器硬件电路说明 192.2.3.协议帧 1 说明 212.2.4.协议帧 2 说明 232.2.5.RS485 总线网设计方案 .252.3.执行机构实现原理(命令执行层) .2
3、72.3.1.软件流程 272.3.2.硬件电路 283. 系统测试 .313.1.本地用户接口测试 .313.2.Web 服务测试 333.2.1.PC 端测试 .333.2.2.手机远程访问 Web 服务器测试 363.3.手机短信控制测试 .373.4.系统实际工作效果图 .394. 特色 .405. 原创性声明 .406. 附录 .416.1 附录 1 Abstract416.2 附录 2 查新报告 426.3 附录 3 参考文献 436.4 附录 4 关键程序源代码 4436.4.1.软交换层与命令执行层软件代码 446.4.2.用户接口层程序代码 526.5 附录 5 系统实物图
4、596.6 附录 6 TQ2440 开发平台 .604摘 要智能家居,目的是综合运用各种技术手段使人类家居中各组成部分变得智能化和人性化。基于这种理念,本智能家居模拟系统运用 Web 服务技术,为用户提供一套对家居各种构件,如灯光、水龙头、空调、等进行远程实时闭环监控的报告的解决方案。用户可以通过电脑、移动终端等任何可访 Web 服务的设备,登录本系统指定的 Web 站点,通过网页操作方式对家居中上述构件进行操作和状态查询,在此基础上,本系统还提供了手机短息查询与控制功能。具有较强的灵活性和较高的可靠性。关键词: 智能家居 状态监控 Web 服务 手机短信控制51. 系统方案设计1.1. 项目
5、背景与需求分析随着现代家居中电气化程度的逐渐提高,对家中的各种电器进行统一调控,尤其是远程控制,逐渐成为一种迫切的需求。也成为了智能家居技术研究的一大热点。综观目前市场上形形色色的家居电器智能化控制管理装置,均极少能为用户提供网页管理与控制的接口。本文智能家居模拟系统(简称智能家居,下同)在这方面给出了一个实用性较强的方案,并扩展了短信功能,介绍如下:1.2. 系统概述本智能家居模拟系统是一个住房的微缩模型。在设计本模型时,硬件上,只抽象出一般家居内所具有的基本设施,这些基本设施包括灯光照明、空调制冷、水阀、窗帘和门禁 5 个部分,并在本系统中对其进行模型化,进而控制。本模拟系统硬件上使用高亮
6、度发光二极管模拟实际家居中的照明灯具,用制冷片和温度传感器模拟生活中的空调,用电磁阀模拟生活中的浴缸水龙头等。软件上,则按照一个完整的智能家居控制系统的需求来进行系统规划与编码实现。1.3. 系统功能与指标本模拟系统旨在为用户提供一个对家居住房里基本设施的工作状态进行监测和控制的平台,如 图 1 所示,包括以下几个部分:(1)提供两种远程控制方式和一个图形化的本地控制界面,远程控制方式有:Web 网页的方式和用手机短信方式。(2)模拟操作包括:灯光、空调设备、水阀、窗帘的状态检测和控制,即查询状态和控制开关,空调温度设定,门状态检测(开或关)和门禁的开关,以及获取当前住房大厅图像;(3)系统实
7、时检测每个基本设施状态,并实时在 Web 网页上反馈给用户;(4)若开启门禁,或当门被非法打开时,则系统会自行报警并用手机短信的方式告知用户。6手机浏览器或短信P C 浏览器智能家居服务器I n t e r n e t /E t h e r n e t提供 W e b 网页服务G S M 网提供短息控制或门禁报警灯 、 空调 、 水阀 、 窗帘 、 门禁和摄像头检测控制与数据反馈图 1 整体功能架构1.4. 方案比较与选择1.4.1. 处理器比较为实现本系统的功能,硬件处理器有以下选择:STM32 处理器与 ARM9 处理器。以下分别概述。STM32 处理器:代表型号为:stm32f103rb
8、t6,此处理器基于 ARM7TDMI架构,片上资源丰富,具有体积小、功耗低的特点,且容易使用(可视作 32 位单片机使用) 。ARM9 处理器:代表型号为:s3c2440,此处理器基于 ARM920T 架构,具有丰富的扩展接口,由于具有 MMU(内存管理单元) ,因此可以运行复杂的操作系统。虽然 STM32 处理器完全具备实现本系统的硬件资源,但由于其运行主频受到限制(最高只有 72MHz) ,同时运行多个任务时,会出现性能瓶颈。因而采用 ARM9 处理器加操作系统的方案,本次使用的开发板为广州天嵌科技有限公司提供的 TQ2440 开发平台(见附录 6) 。1.4.2. 硬件系统通信方案比较现
9、代家居中往往会存在较多的电器设备,因此会在一定的频率范围内产生噪声干扰,因此选择通信方案时应考虑所组成通信系统的抗干扰能力。常用的通信方案有:RS-232 方案 RS-485 方案、RS-422 方案。以下分点阐述。RS-232 方案,本方案出现最早,主要用于计算机与微处理器以及微处理器之间的短距离通信,通信码率较低(1200bps115200bps) 。抗干扰性能与防静电能力都较差,RS-422 方案:本方案采用两对差分传输线分别进行收发、因此具有较好的7抗干扰能力与较远的通信距离,已成为工业通信标准之一。RS-485 方案:采用一对差分线加上方向控制电路实现半双工通信,通信稳定、可靠,且具
10、有很强的抗干扰以及抗静电的能力。支持多机通信,已成为应用最广泛的工业通信标准。通过上述比较,可知,不可采用抗干扰能力弱的 RS-232 通信,而 RS-422通信需要较多线材(5 条线) 。因而使用 RS-485 通信方案1.4.3. 操作系统比较系统选择上,主流方案选择有二:嵌入式 Linux 方案或 Windows CE 方案,分述如下。嵌入式 Linux:优点:完全开源,不需要授权,且有较多开源驱动或库函数可以调用。缺点:开发环境较差,只支持 C 语言开发。Windows CE:优点:完全开放(Windows CE 6.0 已经实现完全开源) ,官方技术支持良好,开发环境(Visual
11、Studio、Platform Builder)界面友好且功能强大,支持多种开发语言,开发难度低。缺点:商用需要授权,部分驱动程序需要自行编写。在本次设计中,考虑到开发的便捷性,以及项目组成员对开发环境的熟悉程度。选择 Windows CE 作为系统平台。1.4.4. Windwos CE 平台软件开发语言比较Windows CE 下应用软件开发可以有以下两种选择:基于 .Net Compact Framework 托管代码(Managed Code) (以下简称 .Net CF)的软件开发;基于C+本地代码(Native Code )的开发。以下分别阐述。基于.Net CF 托管代码的软件开
12、发:.优点:Net CF 是 Windows 平台下.Net Framework(以下简称.Net)的一个子集,由于它对常用的系统 API 进行了封装,并提供了简洁的调用接口,因此使用方便,且能够快速地开发出功能强大的应用软件,已成为 Windows 平台下软件开发的主流。代表语言为 C#与 VB.NET。由于基于.Net 或.Net CF 的应用程序不发布时不直接成汇编指令,直到执行前一刻才借助目标机器上的.Net 或.Net CF 服务程序翻译成本机指令。因此,程序可以在任何带有.Net 或 .Net CF 服务程序的系统中运行,具有很强的跨平台特性。缺点:C# 或 VB.NET 无法直接
13、调用 C 或 C+编写的程序;启动时会消耗一定的系统资源;无法直接进行系统驱动开发。基于 C+本地代码的开发:优点:在 Windows CE 平台下 C+程序具有较高的运行效率与较低的资源占用率,且能调用到系统中所有的资源,也适合进行底层驱动开发,缺点:提供的接口函数声明大都较复杂,在做人机界面时灵活性较差;由于直接生成基于 CPU 的汇编指令,因此若 CPU 类型发生变化,即使系统相同,程序也必须重新编译。考虑到本项目存在用户接口以及人机界面开发的工作量远远大于驱动的情况,因此,软件主体选用 C#语言开发,摄像头驱动则用 C+编写,调试完成后并封装成动态链接库(DLL) 。这样即可用 C#调
14、用。1.4.5. Windwos CE 平台 Web 服务方案比较8在 Windows CE 上实现 Web 服务有以下两种方案:1、直接使用 Windows CE 系统内核自带的 HTTPD 组件实现 Web 服务。2、移植一套 PC 机中的 HTTP 协议到服务器端软件中。对于方案 1,依赖 Windows CE 系统内核组件,因此存在对运行环境依赖性强的缺点,且 HTTPD 组件只能用 C 或 C+开发,与本项目选定的开发语言(C#)不符。对于方案 2,由于是服务器端软件自带 HTTP 协议,因此不依赖系统环境,并可以根据需求灵活控制;由于 HTTP 协议并不复杂,且有开源实现代码(如k
15、ayak, lightweight C# web server and framework) ,移植并不困难。因此选择本方案。1.5. 系统架构模拟系统的总体架构如 图 2 所示,可以分为 3 个层次,分别如下:(1)第一层:用户接口层,是基于 Windwos CE 的嵌入式 Web 服务器;(2)第二层:软交换层,命令数据交换器;(3)第三层:命令执行层,执行机构(包括摄像头和 GPRS 短息模块等部件)。R S 4 8 5 总线网连接网络摄像头模块G P R S 短信模块门禁控制与检测执行机构窗帘控制与检测执行机构水阀控制与检测执行机构空调控制与检测执行机构灯光控制与检测执行机构命令数据交
16、换器基于 W i n C E 的嵌入式W e b 服务器图 2 系统总体架构图这 3 个层次的内容和作用如下 表 1 所示。表 1:系统个层次内容功能一览表名称 内容 作用用户接口层 1、基于S3C2440ARM 芯片的嵌入式开发板;2、WinCE 嵌入式操1、当用户使用手机等移动终端或电脑终端访问该服务器是为用户提供基于Web 网页的查询、控制服务;2、接收用户提交的操作命令,并将操作命令编码后交给软交换层,如果是用9作系统;3、用 C#编程语言自行设计的 Web 服务器软件。户需要获取当前房屋的图像时就直接控制摄像头模块;3、将用户操作结果反馈给用户(刷新Web 页面,在新 Web 页面中
17、体现) 。4、实时监控房屋各个元素的状况,发生异常状况时(如小偷破门而入)发生报警并将信息通过短信方式告知用户。软交换层 1、具有 2 个异步串行口的单片机最小系统和 RS485电路2、自行设计的通信协议程序。1、 接收来自用户接口层的命令帧并进行解析;2、 根据解析命令帧的结果分别给各个控制机构发送专门的命令帧;3、 收集各个执行机构返回的结果并反馈给 Web 服务器;4、 当出现门被非法打开时向服务器报警。命令执行层 1、 监测和控制家居各种受控元素(灯光、空调、窗帘、水阀、门禁等)的硬件控制电路及其软件程序、执行机构;2、 摄像头模块和GPRS 短信模块控制软件。1、 各个执行机构接收交
18、换器发来的命令帧;2、 各个执行机构根据命令帧内容监控各个受控元素的状态;3、 把执行结果反馈给交换器;4、 需要特别说明:由于门禁要求有较高的实时性,并没有连接入 RS485 总线网,二是直接与交换器相连接。2. 系统实现原理需要说明的是,由于条件限制,对于某些硬件只能利用成品。例如基于S3C2440ARM 芯片的嵌入式开发板,部分软件也只能是在原有基础上进行移植,例如系统中的 HTTP 协议就是从上位机中的 HTTP 协议根据嵌入式 WinCE 平台的特点移植而来的。也就是嵌入式技术。本设计以系统层次分明为其特点,所以实现原理按照分层、分块地进行,介绍关键软、硬件模块的实现方法。着重阐述以
19、下 3 个部分:(1) 基于 Windows CE 嵌入式 Web 服务器实现原理;(2) 命令数据交换器实现原理;(3) 一般执行机构实现原理。2.1. 基于 Windows CE 嵌入式 Web 服务器(用户接口层)1.4.6. 服务器软件概览10W e b 服务( 远程访问 )状态监视与报告服务短信查询与控制服务底层交换器接口C M O S 摄像头主控模块用户界面门禁报警服务I n t e r n e t /E t h e n e tG S M 通信网图 3 服务器总体功能架构服务器功能架构见 图 3,它是整个系统的用户接口与底层服务的核心。实现以下功能:为用户提供图形化的人机界面、与底
20、层交换器通信、驱动 CMOS摄像头、提供 Web 服务、实施状态监视、提供短信查询与控制控制、检测门禁并报警,共 6 项功能。且 6 项功能会被同时开启。因此在软件设计上,须使用多线程的设计方法,以达到较快的响应速度与较好的扩展性。以下将详细参数软件中各个模块实现的功能与实现原理。1.4.7. 主控模块功能概述主控模块是本次设计中软件的核心,负责各个顶层服务模块之间的功能协调与控制,并为用户提供一个图形化的用户界面。实现原理主控模块架构见 图 4门禁报警服务核心业务处理线程摄像头驱动程序通用数据处理模块W e b 远程访问服务通信 、 控制接口短消息查询控制服务通信 、 控制接口状态监视与报告
21、服务通信 、 控制接口底层交换器通信模块图形化用户接口图 4 主控模块架构图在实现用户界面上,C#开发语言的优势非常明显,并不需要编写代码,直接在开发环境中画出即可。由“服务器软件概览”中所述,本次需要使用多线程的设计方法。多线程的实现可以使用 System.Threading.Thread.系统中的主控串口、GSM 模块、摄像头这些资源都无法接受多线程并发控11制或访问类型上属于独占性资源,因此,在软件设计时,将主控串口和摄像头分配给主控模块中的核心业务线程管理。若其他服务(例如:Web 远程访问)需要调用独占性资源时必须先向主控模块提交申请,再由主控模块中的核心业务线程进行统一调配。摄像头
22、驱动程序在本项目中则是通过移植 SMDK2410 Windows CE BSP 中的 ov9650 驱动程序,并进行封装得到。通用数据处理模块是一个全局性数据处理方法的封装。底层交换器与 Windows CE 进行通信时使用的是 RS-232 串口,因此,底层交换器通信模块实质上是一个经过派生的串口通信模块,继承于System.IO.Ports.SerialPort.门禁报警服务,由于门禁报警信号是通过底层交换器通信模块传递,因此可以将此项服务集成到主控模块中,当出现门禁报警信号后,由核心业务线程调用短消息查询与控制服务向用户报警并记录。12开始读取用户配置记录成功根据用户配置发送控制信令收到
23、答复根据答复刷新用户界面核心业务处理线程侦听服务请求已尝试 4 次查 询 控 制 拍 照否否根据通信协议发送查询帧收到答复已尝试 4 次否否刷新用户界面调用摄像头驱动并将图像保存到指定位置结 束关闭启动的各项服务保存配置与需要进行查询的情形一致不再赘述结束启动各项服务门 禁 警 报向用户发送报警信息图 5 主控模块工作流程图131.4.8. Web 服务模块功能概述Web 服务模块作为系统远程控制接口的一部分,目的是让用户可以利用任何可以上网的计算机配合支持 HTTP 协议的浏览器(例如:Internet Explore)实现对家中情况的远程掌控。实现原理以下先对 Web 服务及其相关概念进行
24、阐述广义上的 Web 服务是指一系列互联并可以通过互联网访问的超文本(Hypertext)内容组成的系统。其中信息传输协议为超文本传输协议(Hypertext Transfer Protocol)简称 HTTP 协议。在进行多媒体信息传输时超文本则扩充为超媒体(Hypermedia )HTTP 协议:是一种用于发布和组织超文本内容的网络协议,用于在服务器与客户端间进行请求与应答的协议。也是 Web 服务的最基本通信协议。可见,要实现 Web 服务,首先要实现 HTTP 协议。而 HTTP 协议位于互联网体系结构的应用层。由位于传输层的传输控制(TCP)协议提供通信保障。从传输层上看,基于 HT
25、TP 协议的请求与应答本质上是基于 TCP 协议的数据通信过程。W e b 服务控制接口T C P / I P通信模块主控模块通信接口通用数据处理模块I n t e r n e t /E t h e n e tH T T P 协议解析模块W e b 服务控制线程图 6 Web 服务模块内部架构根据以上原理设计的 Web 服务模块架构如 图 6 所示。其中,TCP/IP 通信模块则负责按照 TCP 通信规范对指定服务端口的侦听。并负责数据通信,在实现上,可以直接使用 System.Net. TcpListener.HTTP 协议解析模块则按照 HTTP 协议规范对收到的数据报文进行解析,以从数据
26、报中提取客户端(可以看成浏览器)的请求,并通过主控模块通信接口与主控模块协作,从而实现远程访问与控制的功能。Web 服务控制线程则为主模块提供对整个 Web 服务模块的控制接口,即:14Web 服务控制接口Web 服务模块详细流程图见 图 7T C P 连接请求侦听指定端口报文符合H T T P 协议用户提交控制请求合法用户是是拒绝服务并结束线程否受理并建立服务线程是是主控模块空闲提交请求并等待答复是是发送 H T T P响应报文超时结束线程是开始图 7 Web 服务模块工作流程图151.4.9. 短信查询与控制服务功能概述短信查询与控制服务模块作为系统远程控制接口的一部分,目的是让用户可以利
27、用在远程尤其是无法使用互联网的时候利用手机短信实现对家中情况的远程掌控。实现原理在嵌入式系统中实现短信收发,往往借助于 GSM(Global System for Mobile)模块,由于 GSM 模块是以 RS-232 串口作为控制与通信接口,并以AT 指令作为控制指令。因此在系统中利用串口实现对 GSM 模块的控制即可实现本部分功能。短信息服务控制接口主控模块通信接口G S M 模块控制线程P D U 编解码模块G S M 模块通用数据处理模块串口通信模块图 8 短信查询与控制服务模块架构图短信查询与控制模块架构如 图 8 所示,其中,串口通信模块实现对串口的初始化串口收发的功能。在实现上
28、,可直接使用 System.IOPorts.SerialPort.PDU 编解码模块实现将 GSM 模块收到的信息进行解码和将需要发送的信息进行编码的功能。由于从手机中发出的短信内容上都经过了 UCS2(中英文混合内容)或者 UCS2-7(全英文内容)编码,GSM 模块收到的是包含短信内容与发送方信息的 PDU 字符串。因此,要从短信中提取出有用信息就必须要进行 PDU 解码。再者,由于 GSM 通信网无法直接发送中文短信,因此在发送中文短信之前要对信息内容进行 UCS2 编码,并将编码后的信息内容连同发送方信息一同打包成 PDU 字符串。GSM 模块控制线程为主控模块提供对短消息查询控制服务
29、模块的控制接与通信接口(见 图 8 短消息服务控制接口、主模块通信接口) ,并对整个服务模块的工作状态进行监控,以实现短信侦听与发送。短信查询与控制模块工作流程图见 图 916超时串口与 G S M模块初始化开 始 服 务启动 G S M 模块控制线程启动 G S M 模块控制线程需 要 发 送 短 信设置短信格式对短信进行P D U 编码控制 G S M 模块发出信息提示用户是从 G S M 模块中读短信收 到 短 信 到 达 提 示确定短信编码类型根据编码类型进行解码向主控模块提交请求并等待收到响应删除 S I M 卡中当前短信通过短信告知用户通过短信向用户反馈结果是超时初始化模块控制线程
30、控制线程开始侦听请求是G S M 模块控制线程结束结 束 服 务关串口开始结束图 9 短信查询与控制模块工作流程图171.4.10. 状态监视服务功能概述状态监视服务模块在启动后将定时向主控模块申请查询智能家居中各个受控量的状态,并与参照表比对,如果有受控量发生变法,则会立即通知主控模块,向用户发出警报信息。实现原理状态监视服务模块架构见 图 10状态监视服务控制接口主控模块通信接口状态监视服务线程定时器通用数据处理模块图 10 状态监视服务模块架构图其中,状态监视服务线程为主控模块提供对本服务模块的控制接与通信接口(见 图 10 状态监视服务控制接口、主模块通信接口) ,并对整个服务模块的工
31、作状态进行监控,以状态监控与报告。定时器则实现对受控量的定时采集。状态监视服务模块工作流程图见18启动服务线程开 始 服 务保存当前状态暂停定时器暂 停 服 务向主控模块提交查询请求并等待定 时 器 触 发 信 号超时通过短信告知用户是状态改变初始化服务线程与定时器服务线程进入等待状态服务线程结束结 束 服 务开始结束启动定时器是图 11 态监视服务模块工作流程图2.2. 命令数据交换器(软交换层)在系统架构部分已经对命令数据交换器的作用进行了说明,这部分不再赘述。在这里需要详细说明的是其软件程序。虽然系统不是很复杂,但是执行机构有多个,为了方便交换器与下面执行机构进行命令数据的通信,需要设计
32、一套简单的协议( 帧) 。另外,由于上层服务器与交换器通信的命令数据格式数量又和交换器与执行机构之间的不同,所以,有需要再设计多一个协议帧来专门用于交换器和服务器之间的通信,所以共有两个协议帧。 在物理层面上,无论是交换器与服务器之间,还是交换器与各个执行机构之间(门禁除外) ,都是用异步串行口 UART 进行通信的。其中,交换器与服务器之间通过 MAX232 芯片转为 RS232 电平进行通信,而交换器与各个执行机构之间则是用 MAX485 芯片 TTL 电平转换为 RS485 电平进行通行,构成 RS485总线网。接下来,将从以下 5 个方面进行说明:(1) 软件流程说明;(2) 硬件电路
33、图说明;(3) 协议帧 1 说明用于交换器与服务器之间;(4) 协议帧 2 说明用于交换器和各个执行机构之间;(5) RS485 总线网说明。192.2.1. 命令数据交换器软件流程图说明交换器的软件流程图如 图 12 所示。是否接收到服务器命令 ?初始化是提取帧类型和命令参数否是是否打开门禁 ?门是否被非法打开 ?是向服务器发送紧急帧否否服务器是否应答 ?是否向各个执行机构发送命令规定时间内是否接收到行机构反馈结果 ?整理结果并反馈给服务器是设置结果为执行机构响应超时否图 12 命令数据交换器程序流程图从 图 12 中,我们可以看到,在初始化后程序就进入对服务器命令帧的侦听状态,分为两种状况
34、,如果接收到来自服务器的命令帧,那么就顺序执行以下操作: 提取帧类型和各个字段的命令参数; 根据帧类型和对应某个执行机构的字段参数,给该执行机构发送命令,同时开启定时器计时(门的状态检测除外,直接检测并返回结果) ; 如果在定时器超时时间(500 毫秒)之内接收到执行机构的执行反馈帧,则把结果整理后反馈给服务器;如果超时,则把结果设置为超时类型,并把超时情况告诉服务器; 继续侦听服务器是否发来命令。如果没有接收到服务器的命令帧,则顺序执行以下操作: 判断用户是否开启门禁(注意门禁开启关闭与门的开启关闭是不同的) 如果用户开启了门禁,则判断门是否被非法打开(如小偷破门而入) ,如果被非法打开,则
35、马上向服务器发送紧急报警帧,直到服务器应答为止。如果用户没有开启门禁或门禁开启但门没有被非法打开,则返回侦听服务器是否发来命令帧。2.2.2. 命令数据交换器硬件电路说明20命令数据交换器的硬件电路图如图 13(下页中)所示。交换器所用的单片机芯片是带有 2 个全双工异步串行口 UART 的宏晶 STC12C5A60S2 芯片,其中,串口 1 通过 MAX232 芯片与服务器通信,串口 2 通过 MAX485 芯片与各个执行机构通信。21图 13 命令数据交换器硬件电路图2.2.3. 协议帧 1 说明22用于交换器与服务器之间的帧格式如 图 14 所示,各个字段参数如 表 2 所示。图 14
36、交换器与服务器通信帧格式表 2:交换器与服务器通信协议帧说明表名称 字节数 参数类型 备注帧头 2 “#” 2 个#号帧尾 2 0x0D 0x0A 回车键分隔符 1 ; 分号帧类型 1 #define FT_Control C /控制类 #define FT_Query Q /查询类 #define FT_Reply_Ctrl R /控制应答类 #define FT_Reply_Query K /查询应答类 #define FT_Emergency E /紧急、突发情况 #define FT_Reply_Emergency T /紧急、突发情/况回复#define FT_HandShake H
37、/握手帧 所有帧类型鸿定义灯光参数 5 服务器命令:#define OT_Open O/打开#define OT_Close C/关闭#define OT_Undo U/不操作 交换器应答:#define RT_ON 0 /打开状态 #define RT_Off 1/关闭状态 #define RT_Unknow 2/不可控状态 #define RT_Timeout 3 5 个参数分别对应 5 颗灯, ”OT”是”Operation Type”的简写,表示操作类型, ”RT” 是”Result Type”的简写,表示结果类型23/超时类型空调窗帘参数4 #define OT_Default D
38、/默认,不改变,专门用/于空调温度设定;4 个字节中第一是空调开关(状态) ,参数与灯光参数值相同;第四字节是窗帘开关(状态) ,参数值与灯光参数形同;第二、三字节是设定空调或当前室内温度,参数值比较特殊,对于设定空调温度时,可以是不改变OT_Default(不是 OT_Undo)或”0”9”,反馈时时当前室内温度,参数值为”0”9”水阀参数 1 与灯光参数值类型相同门禁参数 1 服务器命令:#define Guard_On 0 /门禁开启#define Guard_Off 1/门禁关闭交换器应答:#define RT_ON 0/打开状态 #define RT_Off 1/关闭状态注意门禁开启
39、关闭与门的打开关闭状态时不同的概念2.2.4. 协议帧 2 说明用于交换器和执行结构之间通信的协议帧格式比较简单,如 图 15 所示,各个字段参数说明如 表 3 所示。图 15 交换器与执行机构通信帧格式24表 3:交换器与执行机构通信帧说明表名称 字节数 参数类型 备注帧头 2 “#” 2 个#号帧尾 2 0x0D 0x0A 回车键分隔符 1 ; 分号帧类型 1 #define FT_Control C /控制类 #define FT_Query Q /查询类 #define FT_Reply_Ctrl R /控制应答类 #define FT_Reply_Query K /查询应答类 只有
40、4 种目的地址1 交换器命令;#define LightAddr 0x03 /灯光模块地址#define ConditionAddr0x07 /空调窗帘模块地址#define WaterAddr 0x0f /水控制节点地址执行机构应答#define ServerAddr 0x7e /服务器地址 由于门禁是由交换器直接控制的,所以没有设计地址源地址 1 交换器命令:#define ServerAddr 0x7e /服务器地址执行机构应答:#define LightAddr 0x03 /灯光模块地址#define ConditionAddr 0x07 /空调窗帘模块地址#define WaterA
41、ddr 0x0f /水控制节点地址由于门禁是由交换器直接控制的,所以没有设计地址参数长度1 根据系统当前设计,各个执行机构参数个数都是可知的。#define LightDataNum 0x05 /灯光,5 个#define ConditionDataNum 0x04 /空调窗帘,4 个#define WaterDataNum 0x01 /水阀,1 个#define DoorDataNum 0x01 /门(禁) ,1 个参数 1 交换器命令:#define OT_Open O /打开25#define OT_Close C /关闭#define OT_Undo U /不操作 #define OT
42、_Default D /默认,不改变,专门用/于空调温度设定;执行机构应答:#define RT_ON 0 /打开状态 #define RT_Off 1 /关闭状态 #define RT_Unknow 2 /不可控状态2.2.5. RS485 总线网设计方案为了加强通信的距离和可靠性,命令数据交换器与各个执行机构(门禁除外)之间是通过 RS485 进行通信的,它们分别作为主机或从机接入 RS485 总线网中,其中命令数据交换器是主机,其他执行机构是从机。该 RS485 总线网是半双工的,接收与发送状态的切换时通过软件设置的。在软件设计时规定,主机可在除等待从机应答时之外的任何时候切换发送接收状
43、态,而从机只有在应答主机时时发送状态,其他状态下都是出于接收状态,不允许从机主动给主机发送信息。无论是作为主机的命令数据交换器还是作为从机的各个执行机构,在硬件电路上都设计一个 RS-485 接口电路,在这里给出这个电路并说明,同时给出MAX485 引脚图及其说明(英文) 。在下部分一般执行机构接收电路是就不再阐述。RS-485 接口电路如 图 16 所示。其中,RXD 线接单片机 RXD 引脚,TXD 接单片机 TXD 引脚,LineA 接 RS485 总线网 A 线,LineB 接 RS485 总线网 B 线,DIR是接收和发送状态切换引脚,当 DIR 为低电平时出于接收状态,为高电平时出
44、于发送状态。其中 MAX485 芯片引脚图如 图 17 所示,引脚功能说明(英文)如图 18 所示。26图 16 UART 转 RS485 电路图 17 MAX485 芯片引脚图(原技术文档截图)27图 18 MAX485 芯片引脚说明(原技术文档截图)2.3. 执行机构实现原理(命令执行层)系统中的几个执行机构其原理,包括软件流程和硬件电路基本相似。接下来就一起进行说明。2.3.1. 软件流程首先是软件流程,几个执行机构的软件流程都如 图 19 所示。从图中可以看到执行机构上电后,顺序执行以下步骤:(1) 初始化完成后开始不断侦听交换器是否发来命令帧;(2) 如果接收到命令帧,则立即进行地址
45、匹配,如果接收到命令帧的目的地址与本机地址一致,即表明该帧是发送给本机的,那么就执行第(3)步,否则丢弃命令帧并返回第(1)步继续监听;(3) 提取帧类型和参数,判断帧类型是控制帧还是查询帧,根据帧类型执行不同操作,即执行第(4)步;(4) 如果是控制帧,则根据参数控制控制对象的开关,然后把控制结果反馈给交换器,返回监听命令帧状态;如果是查询帧,查询控制对象的开关状态并反馈给交换器,然后返回监听命令状态。需要说明的关于控制对象开关状态的检测是用 ADC 读取控制对象供电电压来判断是否工作的。28是否接收到交换器命令 ?初始化提取帧类型和参数如果是控制帧否如果是查询帧根据参数执行查询控制对象工作
46、状态将控制结果反馈给交换器将查询结果反馈给交换器帧目的地址是否与本地地址匹配 ?是是否图 19 执行机构软件流程图2.3.2. 硬件电路关于硬件电路,这里不给出每个执行机构模块全部电路,所有执行机构模块都是采用 STC12C5A60S2 这一款单片机,模块的最小系统电路和 UART 转RS485 通信电路就省略,下面仅给出控制对象的接口电路并简单说明。1) 灯光控制电路(用 LED 模拟)29图 20 灯光控制接口电路2) 空调控制、检测电路本次设计中,模型化的空调是一个半导体制冷片,额定工作电压 12V,电流6A,由于工作电流较大,因此需要独立的开关电源进行供电。为了尽量接近真实的控制情况,
47、本次将直接对 220V 交流电的通断,进而实现对制冷片的控制。如 图 21 所示,用单片机 P01 口控制光耦 MOC3021(可控硅输出的光耦) ,再用光耦驱动双向晶闸管 BT139,由于光耦和 BT139 都是双向的,所以能保证交流电正负半周都正确通过,从而使开关电源与制冷片正常工作。图 21 空调控制电路判断空调是否工作,一个简便的方法就是判断制冷片是否供电正常,方法是通过分压电阻将制冷片的 12V 供电电压降压后送入单片机 AD 通道,从而读出制冷片的供电电压值。进而判断空调是否正常工作。303) 窗帘控制电路窗帘的控制实质上就是步进电机的控制,如 图 22 所示,4 条信号线通过R11-R15 限流然后再通过通道的光耦 PC847 实现光电隔离,最后通过 ULN2003驱动芯片把电流放大到 500mA 左右进而驱动步进电机,通过单片机编程改变输入信号的相序就能控制步进电机正反转,进而完成对窗帘的控制图 22 窗帘控制电路4) 电磁阀控制电路电磁阀的控制电路见 图 23,由于该电磁阀需要的工作电流为 1A,所以本电路采用了大功率开关管 13005 来驱动电磁阀,为了防止电磁阀关闭的时候的反电动势对电路造成不良影响,在电磁阀上需要反向并联保护二极管 1N4007。而大功率开关管 13005 则用光耦 PC817 与单片机隔离,以避免强电对弱电的干扰。图 23 电磁阀控制电路