您的当前位置:首页正文

智能家居监测系统的设计毕业设计论文[管理资料]

2022-03-14 来源:钮旅网
石家庄铁道大学毕业设计

智能家居监测系统的设计

Design of The Intelligent

Home Furnishing Mornitorning System

毕业设计成绩单

学生姓名 学号 班级 电1002-2 专业 工业自动化 毕业设计题目 智能家居监测系统的设计 指导教师姓名 指导教师职称 评 定 成 绩 指导教师 得分 得分 评阅人 答辩小组长 成绩: 得分 院长签字: 年 月 日 毕业设计任务书

题目 学生姓名 学号 关于Zigbee的智能家居监测系统的设计 班级 导师 姓名 专业 导师 职称 工业自动化 承担指导任务单位电气与电子工程学院 一、主要内容 ; ; 。 二、基本要求 ; ; 。 三、应收集的资料及参考文献 ; 。 四、进度计划 收集资料,熟悉设计环境,比较系统设计方案; 确定系统总体设计方案; 设计,优化,仿真,调试,完成设计; 整理论文,准备答辩。 教研室主任签字 时间 年 月 日 毕业设计开题报告

题目 学生姓名 一、研究背景 现代社会,人们越来越忙碌,生活节奏越来越快,人们对于舒适生活的要求也变得越来越强烈。智能家居控制系统可以提供更好的处理方案,既快捷又省力,还能提供舒适健康的环境。Zigbee可以用来检测室内温度、湿度,进而控制空调的运行,同时它又加强了处理紧急情况了能力,增加了住户的安全感,从而提高生活质量。Zigbee的低能耗与高效率,大大满足了智能家居的要求,使用起来快捷方便,节能高效,它对于改善现代人类的生活质量,创造舒适、安全、便利的生活有着非常重要的意义。 二、国内外研究现状 自从世界上第一栋智能建筑1984在美国出现后,西方国家先后提出了各种智能家居照明方案,在这方面美国一直处于领先水平。现在,国外的智能家居系统技术己日趋成熟,预计今年,50%以上的新房将具有一定的“智能型家居”功能。于此同时,由于技术的日益标准化,。近年来,以美国微软公司以及摩托罗拉俄日收的一批国际知名企业,先后跻身于智能家居的研究与开发中,例如:微软的“梦之家”、IBM的“家庭主任”、摩托罗拉的“居所之门”等。此外,日韩新等国的龙头企业纷纷致力于家居智能化的开发,对家居市场更是跃跃欲试。 在国外大型企业研发的同时,国内厂商也已开始智能家居产品的研发与生产,尤其是一些大公司凭借自己在资金与技术方面的又是,在低端产品市场上占据了相当重要的地位。、北京的德达创先集团、伤害艾智系统有限公司等都在研发智能家居系统的相关产品。尤其是在最近几年基于Zigbee的智能家居系统发展迅速,各个公司的Zigbee产品正如雨后春笋一般迅速出产,智能家居正在逐步覆盖各个阶层。目前,国内的这些智能家居系统还处于萌芽的阶段。近些年来,在各个大公司和媒体的大力宣传下,我国的家居环境监测行业开始起步,已经有一些前瞻性很强的公司在从事此类系统的开发。另外,国内亦有些电器厂家也在市场上推出了自主的智能家居系统,类似的系统在家居环境的监测中均可以实现各种功能。 三、主要工作及采用的方法 1采用实验方法进行方案论证,模拟Zigbee无线网络实现智能家居网络; ,并通过分析Zigbee技术及智能家居的特点,去定了智能家居内部的网络拓扑,寻址方式,消息类型等特征; 学号 智能家居监测系统的设计 班级 电1002-2 专业 工业自动化 ,并通过与Zigbee协议栈的接口实现数据传输,并对Zigbee的主要功能进行了测试; ,进行改进。 四、预期达到的结果 掌握Zigbee模块的参数功能与ZStack协议,实现数据采集模块与芯片的数据 传输并向上位机发送无线数据。 指导教师签字 时间 年 月 日 摘 要

随着嵌入式计算、传感器、无线通信等技术的飞速发展,无线传感网被广泛应用于环境监测、军事国防和工农业控制等诸多领域,已成为电子信息技术发展的一个热点。CC2530是TI公司针对Zigbee的无线传感网芯片解决方案,具有功耗低,可靠性高,组网简单等优势。基于CC2530和Zigbee协议,设计了温湿度数据采集系统。在干扰环境下测试表明,网络具有较强的鲁棒性和自组能力。

本课题主要介绍基于CC2530为核心的家庭环境监测系统的硬件电路设计和软件流程设计,实现了在家庭环境中对温度、湿度、烟雾的监测。将温度、湿度的信息量经过单片机处理后通过无线发送给上位机。本设计使用Zigbee无线网络协议,将系统参数传输及控制,可与上位机实时通讯和监控。

关键词:CC2530 传感器 Zigbee 环境监测

ABSTRACT

With the rapid development of embedded computing, sensor, wireless communication technology, wireless sensor network is widely used in environmental monitoring, military defense, industrial and agricultural control fields, has become a hotspot in the development of electronic information technology. CC2530 is a wireless sensor network chip for Zigbee TI solution, with low power consumption, high reliability, simple networking advantages. CC2530 and based on Zigbee protocol, design the temperature and humidity data acquisition system, the software algorithm coordinator and ordinary nodes are given respectively, tested in interference environment, the network has strong robustness and self-organizing ability.

This paper mainly introduces the design of hardware circuit and software flow design of family environment monitoring system based on CC2530 as the core, realizes in the home environment of temperature, humidity. Among them, the analog temperature, humidity, light sensor through the SCM processing output control action corresponding adjusting the corresponding parameters; SCM outputs corresponding protection control: instantaneous over current protection. This design uses Zigbee wireless network protocol, the system parameters of transmission and control, is also available with a PC real-time communication and monitoring.

Key words: CC2530 Sensor Zigbee Environmental Monitoring

目 录

第1章 绪论 ....................................................................................................................... 1

本文研究背景与意义 ............................................................................................... 1 智能家居环境监测系统的特点 ............................................................................... 1 国内外发展现状及分析 ........................................................................................... 2 典型无线网络技术介绍 ........................................................................................... 2

Zigbee技术 ....................................................................................................... 2 Wi-Fi技术 ......................................................................................................... 3 蓝牙技术 ........................................................................................................... 3 本文主要研究内容 ........................................................................................... 3 本文主要研究创新点 ....................................................................................... 4

第2章 Zigbee技术综述 ................................................................................................... 5

Zigbee技术介绍 ....................................................................................................... 5 Zigbee技术的特点 ................................................................................................... 6 Zigbee网络设备组成和网络结构 ........................................................................... 6 Zigbee协议分析 ....................................................................................................... 7

网络层(NWK) ................................................................................................... 7 应用层(APP) ..................................................................................................... 8

第3章 家居环境监测系统方案 ..................................................................................... 11

系统结构 ................................................................................................................. 11 系统功能定义 ......................................................................................................... 12 系统设计要求 ......................................................................................................... 12 第4章 家居环境监测系统硬件设计 ............................................................................. 14

系统电源电路 ......................................................................................................... 14 Zigbee芯片CC2530 ............................................................................................... 15 家居环境参数采集模块 ......................................................................................... 15

数字温湿度传感器DHT11 ............................................................................ 15 烟雾传感器MQ-2 .......................................................................................... 16 CC2530通讯 ........................................................................................................... 17

LCD液晶显示模块 ................................................................................................ 18 第5章 系统软件设计 ..................................................................................................... 19

Zigbee无线通讯协议 ............................................................................................. 19 温湿度传感器程序 ................................................................................................. 20 烟雾传感器程序 ..................................................................................................... 20 第6章 系统性能测试与评述 ......................................................................................... 21

硬件测试 ................................................................................................................. 21 软件测试 ................................................................................................................. 21 第7章 结论与展望 ......................................................................................................... 22

结论 ......................................................................................................................... 22 展望 ......................................................................................................................... 22 总结 ..................................................................................................................................... 23 参考文献 ............................................................................................................................. 24 致谢 ..................................................................................................................................... 25 附录 ..................................................................................................................................... 26

附录A 外文文献...................................................................................................... 26 附录B 中文翻译...................................................................................................... 34 附录C 程序.............................................................................................................. 39

第1章 绪论

本文研究背景与意义

千百年来,人类都在关注着自身的生活和居住条件,并努力改善和提高之。随着工业革命和信息技术革命的成功,进入21世纪后,人类的各种技术包括通信技术、计算机网络、控制理论、互联网等都有了很大的发展,另外,经济的发展也使我们都希望居住在一个舒适的家居环境中,只有这样我们的生活才会更好,身体才会健康。由于人们又了这种想法,由此智能家居系统也就越来越多的被人们所重视了。研究人员希望能通过这种新的技术将家居中各种智能化的设备、家用电器和家庭安防设备等整合一个智能化的系统上进行资源共享、分析、控制和管理这些设备,控制这些设备来对家居中的环境参数符合人们舒适居住使用的要求,营造一个良好的环境,从而可使用户能够居住在一个更高要求的环境中。

本文研究设计了一种智能家居环境监测子系统,实现对家庭环境的实时监测,实时为用户提供可靠并且全面的环境信息。智能家居系统中一个非常重要的部分就是本文所研究的环境监测子系统。在这个系统中,人们可以获得实时的居住环境信息,如温度和湿度、各种有害气体的浓度、光照强度、火灾信息等。同时,此系统中传感器所得到的环境参数可以为其它家居设备做决策参考,最终由智能家居系统实现对家庭环境的智能调节,比如,当测量到的光照强度高于用户设定的一定值的时候,系统就将启动自动窗帘系统的马达,自动将窗帘关到一定程度,以降低室内的光强度,适合居住;又如,当温度值偏低时,系统就将启动空调设备进行工作,来增高室内温度。因此,智能家居系统为用户提供了安全、舒适、便捷生活的环境,从而使环境监测子系统成为了智能家居系统的一个非常重要关键部分与基本环节,能否拥有一个好的智能家居系统的关键在于能否设计出好环境监测子系统,这对改善人们生活环境的舒适度有非常重要的意义。

智能家居环境监测系统的特点

无线环境监测系统拥有全面、可靠的环境信息采集分析能力。为了实现环境信息监测的精确性、全面性并且方便使用,本文的环境监测系统应具有以下各种特点:

(1)多对象监测,环境监测系统需要检测多种环境信息,如:温湿度、有害气体浓度、光照强度等。这样才能为用户提供全面的环境信息参考。

(2)多点监测,需要对同一环境参数在不同地点和不同时间分别进行测量,这是因为环境中各种环境信息不同的时间和空间上分布不具有均匀性,由此实现监测的全面性和高精度性,甚至有时需要对同一环境参数在多点进行测量。

(3)系统灵活,当有新的环境参数被要求测量时,系统的可扩展性要求灵活,方便增加节点,以降低成本[1]。

国内外发展现状及分析

随着经济的发展和我们生活质量的提高,智能家居的智能化要求也是愈来愈高,智能家居亦成了近几年来学者们的一个研究热点。现有的智能家居产品大部分是以有线网络作为家庭的内部网络,有线网络布线麻烦,终端节点数量多而需要数量庞大的电缆,而无线通讯技术能很好的解决以上问题。国际上的家庭智能化系统已经形成集中以有线为基础的标准,包括有:美国的X-10 CEBus、欧洲的EIB、日本的HBS等。

目前,国内的这些智能家居系统还处于萌芽的阶段。近些年来,在各个大公司和媒体的大力宣传下,我国的家居环境监测行业开始起步,已经有一些前瞻性很强的公司在从事此类系统的开发。另外,国内亦有些电器厂家也在市场上推出了自主的智能家居系统,类似的系统在家居环境的监测中均可以实现各种功能。虽然现在的各种有线技术亦能够对环境信息进行监测与处理,让各种监测设备之间进行连接通信。但当采用有线技术方案时,根据智能家居环境监测系统的特点,它存在一些缺点,如下面几项所示。

(1)系统布线麻烦。采用有线技术时,对各个监测点分别进行布线将是一份复杂庞大的工作,特别是当系统监测对象的数量较多时更是如此,又容易破坏家庭之前装修的完整性;

(2)安装与维护成本高。在安装系统时,需要安装大量的线缆,家居装修建材等,特别是当用户要需要增加节点以增加系统功能时,更是要重新对其进行布线。

(3)系统可扩展性差。增加或减少新的监测对象必将要求系统具有良好的软件与硬件扩展性。硬件可扩展性是有线技术方案的主要技术难点之一[2]。

(4)移动性较差。由于有线的束缚和影响,其美观性较无线系统差,不利于家居的后续装修。

典型无线网络技术介绍

Zigbee技术

Zigbee 技术主要用于低数据传输速率并且传输距离要求不是很远的各种通信设备之间[3]。Zigbee的名字主要来源于蜜蜂通过跳ZigZag形状的舞蹈来传递所发现的食物的位置、距离和方向等信息,一只一只的传递下去,此种技术与蜜蜂的这种通信方式相类似。Zigbee联盟则于2001年成立,而在2002年下半年,以及四大半导体公司共同宣布加盟Zigbee技术联盟,以研发名为Zigbee的新一代无线通信标准。而在2006年作为中国通信行业龙头的华为公司亦加入了此联盟。

Wi-Fi技术

Wi-Fi是由一个名为“无线以太网相容联盟”(Wireless Ethernet Compatibility Alliance, WECA)的组织所发布的业界术语,中文翻译为“无线相容认证”。,所支持的速度达54Mbps(,理论最高速度600Mbps)。但随着技术的进步,其速度在目前看来较慢,现逐渐退出市场主流。热点是通过将访问节点安装在互联网连接上来创建的。这个访问节点通过无线信号将信息传到互联网上,一般覆盖到200米以内。虽然Wi-Fi有覆盖范围较广等特点,但是其的基带协议和射频协议比较复杂,实现成本较高,而且其功耗比较大,根本上满足不了电池供电的要求。

蓝牙技术

爱立信公司制定了初始的蓝牙技术,此技术一开始是爱立信公司在1994年的一个研究移动电话和其他配件期间进行的低功耗、低成本的无线通信连接方法的方案。,确定了使用频段,最高数据传输速度达 ,和红外技术相比,蓝牙有着较高的传输速率,而且不需要像红外线那样进行口对口的连接才能传输数据,所有的蓝牙终端基本上只要在有效的范围内使用,就随时可以进行连接收发数据。

本文主要研究内容及创新

本文主要研究内容

随着我国经济和科技的迅猛发展,人们的生活水准越来提高,日常家居的环境更受到了人们的关注。近年来随着家庭装修时工业板材及其他有毒气体释放源的使用,室内的环境不容乐观。这就要求有各种有害气体监测功能的家居环境监测系统介入,为我们营造一个安全健康的家居环境。

(1)Zigbee协议的介绍。主要介绍了Zigbee协议中各个部分的组成和数据结构,并对各层中的重点内容进行了详细的分析;

(2)本文以无线传感网络为基础,以Zigbee技术纽带,详细设计出的家居环境监

测系统中的两种节点--协调器节点(控制中心)和传感器节点。在协调器节点中,本文实现了电源、串口通信、PCB天线等主要电路的设计;而在传感器节点中,由于其与协调器类似,故仅针对不同的环境信息,设计出了不同的传感模块;

(3)本论文还设计了串口调试操作界面,可以方便用户的调试和使用,由此用户就可以实时的了解到家庭中个中环境信息的参数。

本文主要研究创新点

本文利用Zigbee技术,以实现无线系统的组网,可以为家居环境提供多地点、多对象的监测,由于Zigbee技术的自组网性,在增加或减少监测终端时系统灵活性较大。同时此系统还省去了繁琐的有线系统布线对家居美观性的损害。终端通过显示器及数据上传到智能家居系统可以实时显示并控制空气净化器等为家居环境,实现健康家居。

第2章 Zigbee技术综述

,根据此协议的规定,Zigbee技术是一种短距离、低功耗的无线通信技术。这一名称来源于蜜蜂的一种名叫Zigbee的舞蹈,由于通过持续不断地跳这种舞蹈来实现对新发现的食物或其他信息的传递,换句话说蜜蜂是依靠这样的通信方式来实现了一个通信网络,而每个个体则是网络中的一个节点。这样做的好处是不需要专门的通信蜜蜂,通过信息接力就完成了整个通信,从而实现了蜜蜂的低成本、低数据速率、自组织、低功耗、近距离、低复杂度等的信息传递方式。受蜜蜂的这种特殊的通信方式的启发,Zigbee技术的研究也主要是在低速率、低功耗通信领域进行应用,亦可以低成本地嵌入各种设备中组成庞大的网络。总而言之Zigbee技术就是一种低功耗,低成本的无线网络通信技术。

Zigbee技术介绍

Zigbee技术主要用于低数据传输速率并且传输距离要求不是很远的各种通信设备之间。Zigbee的名字主要来源于蜜蜂通过跳ZigZag形状的舞蹈来传递所发现的食物的位置、距离和方向等信息,一只一只的传递下去,此种技术与蜜蜂的这种通信方式相类似。Zigbee联盟则于2001年成立,而在2002年下半年,以及四大半导体公司共同宣布加盟Zigbee技术联盟,以研发名为“Zigbee”的新一代无线通信标准,而在2006年作为中国通信行业龙头的华为公司亦加入了此联盟。截至目前,该联盟大约已有约27家成员企业,所有这些公司都参加了负责开发Zigbee协议物理层和媒体控制层技术标准的 工作组。Zigbee联盟负责开发网络层及以上的协议。Zigbee协议则比蓝牙技术、。Zigbee使用的是波段,采用了跳频技术,这和蓝牙技术相似,可以说是同族兄弟了。但相比之下,Zigbee协议比蓝牙更简单、速率更慢、功率及费用也更低。Zigbee的基本速率是,传输半径可扩大到400米,并可得到更低的功耗和更高的可靠性。此外,单个Zigbee无线模块就可与254个节点互联,若网络中加入路由节点,则网络最大承载量可支持65535个节点设备互联。由于它的低延迟和低功耗性能优越性,所以在支持鼠标、键盘等电脑周边产品和家庭自动化仪器等低速率应用时可以比蓝牙做地更好,人们更希望能在无线玩具、传感器网络、家庭监控、工业监控和安全系统等众多领域拓展Zigbee的应用。

Zigbee技术的特点

Zigbee网络采用的是无线自组织网络技术,与蜜蜂的通信类似,网络中的各个节点间通信以一跳或多跳的形式自动建立网络。网络节点则以Zigbee协议为基础进行通信,与各种传统无线网络相比,其主要优点有以下几个方面。

(1)网络稳定性好。其设计的网络自己组织性能使网络各个节点在无需人工干预的情况下自己组网并实现数据传输的任务,当添加或去除网络中某个节点时,其余节点可以自行寻找其他节点替代中转信息,具有较强网络自愈能力;

(2)成本低。由于Zigbee联盟已经有二十多家,他们的研发实力都很强,好多公司均已在2003年正式推出自己的Zigbee芯片,竞争较大,近年来应用于主机端的芯片成本将会比蓝牙等模块更具价格上的优势。

(3)功耗低。它的超低功耗也使得在应用中两节普通AAA干电池即可使用6个月至2年的时间,这也是Zigbee的最大的一个优势;

(4)网络容量大。每个Zigbee设备可以与另外254台节点设备相连接,而加入路由节点的Zigbee网络最多可容纳多达65000多个节点的网络;

(5)数据传输速率低。只有10kb/s-250kb/s,符合本设计需求;

(6)工作频段灵活。,欧洲使用868MHz,美国则使用915MHz频段,但这些均是免申请频段,可以直接使用;

(7)网络延迟时间短。活动设备信道接入延时和休眠激活延时均仅为15ms,而搜索设备延时时间达到30ms;

Zigbee网络设备组成和网络结构

根据Zigbee联盟所设定的技术标准,按功能分其网络设备划分为三种:Zigbee协调器,Zigbee路由器,Zigbee终端设备。他们的功能分别如下。

(1)Zigbee协调器:它是个全功能的设备,包含所有的网络功能,是3种设备中功能最全面亦最复杂的一种,特点是计算能力强、存储量大。它的作用是发送网络信标、建立并且管理一个网络及网络节点、存储节点信息并且不断地接收下级节点所发来的信息。

(2)Zigbee路由器:它也是全功能设备在加入网络后,协调器就会分配给它一定量的十六位地址空间,再由其分别分配给下级节点使用,方便每个节点接入或离开网络,具有数据转发及路由之功能。

(3)Zigbee终端设备:其一般的简化的功能设备。只能自己的与上一级如协调器或

路由器之间通信,包括获取网络地址等。在Zigbee协议规范中,组网时有三种网络拓扑结构可供选择:星型结构,网状结构和簇树型结构,图2-1所示。

星状 簇状

图2-1 Zigbee网络拓扑结构图

终端设备

路由器 协调器 网状 在星状结构中无论是路由器或终端设备都是直接与协调器进行通信,在Zigbee协调器则负责运作与维护着整个网络;在簇状和网状网络结构中,协调器负责初始化和建立网络的操作,而路由器则对网络进行扩展,终端设备的信息由路由器进行转发,只不过在簇状结构中终端间的信息交换只能通过一级级向上传递到协调器,再由协调器将信息分发下去。

Zigbee协议分析

网络层(NWK)

Zigbee网络层的主要功能就是确保Zigbee的MAC层(IEEE )正常工作,同时定义了一些必须的函数,并且为应用层提供适合的服务接口。网络层提供了两个必须的功能服务实体来向应用层提供服务接口,它们分别是管理服务实体和数据服务实体。

通过网络层数据服务实体服务接入点(NLDE-SAP),网络层的数据实体(NLDE)得以提供数据传输服务;网络层管理实体(NLME)与之不同,它是通过网络层管理实它体服务接入点(NLME-SAP)来提供网络管理服务的。网络层管理实体则是利用网络层数据实体完成一些网络的管理工作,并且网络信息库(NIB)理是网络层管理实体完成的。 网络层数据实体(NLDE)

网络层数据实体为数据提供服务,在两个或多的设备之间进行数据传送任务时,则是按照应用协议数据单元(APDU)的格式进行传送的,并且所有的这些设备必须是在同一个网络中,即要求在同一个个域网中。

网络层数据实体提供的服务如下三项:

(1)指定拓扑传输路由,网络层数据实体发送一个网络层的协议数据单元到一个合适的接受设备,此设备可能是一个在通信链路中的中间通信设备,也可能是最终的目的通信设备。

(2)生成网络层的协议数据单元(NPDU):通过增加一个适当的协议头,网络层数据实体从应用支持层协议数据单元中生成网络层的协议数据单元。

(3)安全:确保通信的机密性和真实性。 网络层管理实体(NLME)

络层管理实体允许应用与堆栈相互作用,并且提供网络管理服务。网络层管理实体提供了以下的几种服务:

(1)配置一个新的设备:设备应具有足够的堆栈来保证其正常工作的需要,并且满足配置的需要。配置选项包括对连接一个现有网络设备或一个Zigbee协调器的初始化的操作。

(2)初始化一个网络:使设备有能力建立一个新的网络。

(3)连接和断开网络。要求设备具有断开网络的能力和具有连接一个新的网络的能力,以建立一个Zigbee协调器或者路由器。

(4)邻居设备发现:需要具有发现、汇报和记录相邻设备信息的能力。 (5)寻址:Zigbee协调器和路由器具有分配地址给新加入网络的设备的能力。 (6)路由发现:具有发现并且记录传送信息的网络路由的能力。

(7)接收控制:具有控制设备是否处于接收状态的能力,即控制接收机接收信息时间的长短和什么时候来接收信息,以此来保证MAC层的正常接收和同步等。

应用层(APP)

应用层主要由用户根据具体的应用进行自我开发,用以维持节点的各种功能,发

现此节点工作空间范围内其他节点的工作,再根据服务的需求为各个不同的节点提供通信服务。Zigbee应用层有三个不同的部分分别是:应用支持 (Application Support Sub1ayer,简称APS)子层、Zigbee设备对象 (Zigbee Device Object,简称ZDO)和制造商定义的应用对象。 应用支持子层

APS层提供了这样的接口:在NWK层和APL层间,从设备对象到供应商的应用对象的通用服务集。这服务由两个实体得以实现:APS管理实体(APSDE)和APS数据实体APSDE。

(1)APSME通过APSME服务接入点(APSME-SAP); (2)APSDE通过APSDE服务接入点(APSDE-SAP)。

APSDE提供了多种服务给应用对象,维护管理对象的数据库,也就是我们常说的AIB,同时这些服务包括绑定设备和安全服务。

APSDE则提供在同一个网络中的两个或多个应用实体间进行数据通信的服务。 应用层框架

为存在Zigbee设备中的应用对象提供活动的环境的是Zigbee中的应用框架。其最多可以定义240个较为独立的应用程序对象,任意一个对象的端点编号都是从1到240。另外还有两个附加的节点终端为了APSDE-SAP的使用:端点号0专门应用于ZDO数据接口;而另外一端的端点号255则专门应用于所有应用对象广播数据的数据接口;最后,端点241-254则是要保留给有需要扩展的时候使用的。 Zigbee设备对象

Zigbee设备对象(ZDO),描述了一个基本的功能函数,这个函数为在应用对象、设备profile和APS之间提供了一个接口。ZDO位于应用支持子层和应用框架之间,在Zigbee协议栈中应用操作的一般需求它有所满足。ZDO还有以下作用:

(1)初始化安全服务规范(SSS),应用支持子层(APS)和网络层(NWK)。

(2)从终端的应用中集合配置的信息来执行和确定发现、网络管理、绑定管理,以及安全管理等作用。

ZDO描述了应用框架层的应用对象的网络功能和应用对象的公用接口用以控制设备。在终端节点0处,ZDO则提供了与协议栈中低一层进行连接的接口,若接受的是数据,则通过APSME-SAP接入点,而若是控制信息则通过APSME-SAP的接入点。ZDO公用接口则在Zigbee协议栈的应用框架中提供设备发现、绑定、以及安全等各种功能的地址管理服务。

Zigbee设备对象的主要功能如下:

(1)初始化网络层、应用支持子层和安全服务层;

(2)发起或响应绑定请求;

(3)在网络内部发现设备,并且确定为此发现的设备提供的应用服务种类; (4)定义设备在网络中的各种角色,如,终端设备、路由器或协调器;

(5)从终端的应用来收集各个配置信息来确定和执行发现管理、网络管理、安全管理和绑定管理等;

(6)在网内各个设备之间建立起安全又可靠的关系。

第3章 家居环境监测系统方案

本文的家居环境监测系统,通过对传感器技术、无线网络技术和计算机等技术的综合运用,得以实现对家庭环境的实时监测,从而间接地为用户创造一个健康的,适宜居的,舒适的家居环境。

系统结构

本论文是基于Zigbee技术的无线传感器网络环境监测系统,故根据Zigbee技术的标准和特点设计了由多传感器节点,协调器节点和PC组成的该系统。其中,传感器节点通过无线技 术与协调器进行信息的交换;协调器则通过串口 进行相连通信。本文设计的系统结构如图3-1所示。

LCD 温湿度传感器

CC2530

上位机

图3-1 系统结构图

烟雾传感器

本系统中传感器节点主要负责的是环境信息的采集与发送,协调器节点主要负责的是网络的建立、终端节点管理、数据处理和对PC端的数据通信。当然在实践过程中可以根据家庭居住环境的大小和所需监测的内容,来增加或减少传感器节点,而只需做小许改动即可[4]。当监测区域较大时,可用增加传感器节点的方法来保证网络的连通性,相反区域较小时可以根据情况减少路由器节点的设置以节省系统资源,降低成本。在本设计的实践环节,本人只象征性的做了一个传感器节点进行试验演示。

系统功能定义

本文设计的环境监测系统主要检测家庭环境中以下一些环境参数以实现对环境信息的全面监测,从而为用户的准确决策提供参考。下面对各种参数进行如下介绍。 (1)温度湿度

人体对温度的变化甚为敏感,在环境温度高于35摄氏度后,每增加一度对人体的负面影响都是几何级的增加,故此系统中最重要亦是最基本的就是环境中温度的采集。温度传感器可以在用户设定的频率下采集区域的温度信息,并将其发送到协调器节点进行处理,再由协调器将处理结果数据通过串口发送到PC,此时,PC可按之前用户设置好的参数和程序对空调系统进行控制,从而实现对室内温度的控制,当然这些是后续控制,不在本文讨论范围内。家庭中的每个房间可以多放几个这样的类似节点,可实现在同一个房间进行多点的温度信息采集,以提高温度测量的准确度。 (2)湿度

人类对湿度虽然不是特别敏感,但其时时刻刻亦影响着人们的健康,尤其是老年与儿童。目前人们经常是通过普通的加湿器来调节室内湿度,此类加湿器一般只是手动操作,这样就存在着人为的主观不确定性,最终也有可能不利于环境之改善。而在本系统中,通过湿度传感器对湿度信息的采集,再经由PC的处理后,对加湿器进行控制,即可达到科学明了地控制室内的湿度。 (3)烟雾

燃气的主要造成烟雾源,当燃气发生泄漏时,就会对家庭人员生命带来威胁。故对一氧化碳气体浓度监测也是必不可少的一部分。当系统检测到烟雾浓度大于用户设定是初值时,PC会立即发送报警信号到报警装置或者是家庭成员的手机或直接报警,PC在启动报警装置的同时,或可以自动控制开窗,以达到室内空气流通的效果,保证家庭成员的安全。

系统设计要求

本系统是在家庭环境中实现各种功能,根据此特点,可以总结出以下几种要求。分别从软硬件两个方面来得以实现。

(1)低功耗:由于是无线传感网络,节点很多,故只能由电池供电,故要求低功耗以延长使用,减少电池更换次数。

(2)安全性:本系统为家居环境控制系统做前期的数据采集,若出现错误,则可导致PC判断错误,导致错误控制。如:未发生一氧化碳泄露即报警等。故要求系统的

安全性

(3)外观:由于要安装在家庭各个地点,故要求其尽量小巧,美观。 (4)可扩展:能根据用户的不同需求,随时增加或减少节点设置[5]。

软件方面要求程序模块化设计,可以使系统升级方便以备增加节点时修改其中一个模块而其他地方无需改动;程序设计要简单,数据传输格式要统一。

第4章 家居环境监测系统硬件设计

在Zigbee传感器网络中,传感器节点兼顾传统网络节点的终端和路由器双重功能,在采集、接收、处理及发送数据进的同时,还要对其他节点转发来的数据进行存储、管理和融合等处理,并与其他节点协作完成一些特定任务。根据系统的需要,传感器节点应具备以下功能。 (1)传感器信号的采集和处理; (2)无线数据的发送或转发; (3)液晶显示和键盘输入; (4)通讯功能。

无线传感器网络的节点通常由传感器模块、微处理器模块、无线通信模块和电源模块构成,CC2530集成了这些功能。微处理器和无线通信模块采用支持Zigbee协议,大大简化了射频电路的设计。传感器模块采用集成温湿度传感器DHT11、MQ-2型气体传感器,电源采用5V电池供电。硬件系统结构框图如图4-1所示。

5V电源 烟雾传感器 温度传感器DHT11 CC2530 LCD 128*64 上位机

图4-1 硬件系统结构框图

系统电源电路

电源管理是对电源电压调节和分配,为其他各模块提供可靠和正常工作的电压。电源模块相当于房屋的基石,所以高性能的电源管理模块对于整个控制系统稳定运行实至关重要的。电源模块为控制单元、传感器、控制输出(电机、继电器)等模块提供可靠且不同的工作压。在设计过程中,不仅要考虑电压和电流大小等基本参数而且要考虑电源使用效率、降低噪声、复杂程度和干扰等方面优化[6]。电源供电电路如图4-2所示。

图4-2 5V电源电路图

Zigbee芯片CC2530

IEEE 、Zigbee和RF4CE应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。CC2530结合了领先的RF 收发器的优良性能,业界标准的增强型8051CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。CC2530有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB的闪存。CC2530具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。

CC2530最小系统的设计包括的外围模块有:复位电路,振荡电路[10]。最小系统电路图如4-3下图所示。

家居环境参数采集模块

数字温湿度传感器DHT11

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接[11]。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。连接方便,数字温湿度传感器电路图4-4如下所示。

图4-3 CC2530最小系统的电路图

图4-4 数字温湿度传感器电路图

烟雾传感器MQ-2

本次设计的烟雾传感器用MQ-2。MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化

转换为与该气体浓度相对应的输出信号[11]。

该传感器需要施加二个电压:加热器电压(VH)和测试电压(VC)。其中VH用于为传感器提供特定的工作温度。VC 则是用于测定与传感器串联的负载电阻(RL)上的电压(VRL)。这种传感器具有轻微的极性,VC 需用直流电源。在满足传感器电性能要求的前提下,VC和VH可以共用同一个电源电路VCC。为更好利用传感器的性能,需要调节可调电阻Rp恰当的RL值。其烟雾传感器电路如图4-5所示。当检测到烟雾控制器输出报警,蜂鸣器报警电路如图4-6所示。

图4-5 烟雾传感器电路图

图4-6 报警电路图

CC2530通讯

CC2530具有一个IEEE 。RF内核控制模拟无线模块,强大地址识别和数据包处理引擎, 能够很好的匹配RF前端,封装更小,支持Zigbee 2007/PRO 和Zigbee RF4CE。另外,它提供了MCU和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。Zigbee技术是一种双向性无线短距离通信技术,具有通信距离短、能耗低、复杂度低、数据传输速率低、制作成本低等诸多特点。虽然点对点之间的通信只有10-75m的范围。但是zigbee可以通过组网,以多跳的方式来实现远距离的通信。

LCD液晶显示模块

带中文字库的128*64是一种具有4位/8位并行、2或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,可以显示8×4行16x16点阵的汉字,也可完成图形显示,低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。液晶屏的各引脚说明如下表4-1所示。液晶显示接线如下图4-10所示。

表4-1 液晶屏的各引脚说明表

管脚号 1 2 3 4 5 6 7-14 15 16 17 18 19 20

管脚名称 GND VCC V0 D/I R/W E D0-D7 PSB NC RET NC LED1 LED2

电平 0V +5V - H/L H/L H/L H/L H/L - H/L - VDD VSS

管脚功能描述 电源地 电源正 对比度(亮度)调整

D/I =“H”,表示DB7-DB0为显示数据 D/I =“L”,表示DB7-DB0为显示指令数据 R/W=“H”,E=“H”,数据被读到DB7-DB0 R/W=“L”,E=“H/L”, DB7-DB0的数据被写

使能信号 三态数据线

H:8位或4位并口方式,L:串口方式

空脚

复位端,低电平有效 LCD驱动电压输出端 背光源正端(+5V) 背光源负端

图4-10 液晶显示接线图

第5章 系统软件设计

Zigbee无线通讯协议

终端节点的软件主要实现以下功能:

(1)数据采集功能:采集各个传感器的输出信号并进行数据分析存储。

(2)数据显示功能:能够在LCD上将采集处理后的传感器数据实时显示。每个不同类型的传感器构成一个单独的节点,液晶显示当前环境下温度(℃)、湿度(%RH)和烟雾强弱。

(3)数据传输功能:采用标准的MODBUS协议通过上位机修改系统参数。 (4)与无线模块通讯:单片机将要发送的数据以特定的波特率通过串口送到无线模块发送[12]。

Zigbee无线通讯协议程序流程图如图5-1所示。

图5-1 Zigbee无线通讯协议程序流程

有待处理事件? 给节点分配地址 初始化硬件 初始化软件配置 建立网络 开始 Y 有节点加入网络? N N Y 处理事件 温湿度传感器程序

,在这里给出温湿度传感器采集信号的程序见附录。

烟雾传感器程序

本论文中,对于烟雾传感器主要解决的问题是检测烟雾传感器的烟雾浓度信号,然后对信号进行AD转换,数字滤波,线性化处理,浓度强弱显示。

因为MQ-2型烟雾传感器在不通电存放一段时间后,再次通电时,传感器需要一段时间预热。程序初始化结束后,系统进入监控状态。其主程序流程图如5-2所示。

开始 程序初始化 传感器预热 键盘扫描与键值处理 A/D 转换 平均值法滤波 线性化处理 是否超过报警 Y 进入警报处理程序

N 浓度强弱显示 设置指示灯状态 图5-2 烟雾传感器流程图

第6章 系统性能测试与评述

硬件测试

电路板焊接完毕后,找出硬件整体上的错误,如接口松动、接触不良,电源不稳定等。

(1)稳定性测试:长时间运行系统检查电源电压,液晶显示,传感器,无线模块等。经测试系统各电源运行正常,电压均在正常值范围之内;液晶显示正常清晰无闪屏;传感器工作正常,采样的数据正确;无线模块无死机现象。

(2)硬件安全性:检查各类接口,保证电路不出现短路等问题。长时间运行程序并检查芯片工作情况与工作状态(温度、电压等)。经测试系统各接口运行正常[13]。

软件测试

(1)传感器采样程序测试,以1s或2s间隔频率采集各个传感器,连续采集24小时以上,观察LCD显示是否有异常数据出现。测试结果:采样正常,数据可靠。

(2)单片机与无线模块通讯测试:单片机每采样到一次传感器信号,处理后及时将数据发送到无线模块,通过观察电路板上的通讯指示灯观察无线模块是否接收到数据。测试结果:无线模块接收正常。

(3)人界操作界面程序测试:多次重复操作按键菜单,设置各个系统参数,查看程序是否跑死,分析是否有bug。测试结果:程序运行无错误,无死机现象。

(4)上位机通讯程序测试:以1s间隔频率发送命令(24小时以上),查看系统是否能及时返回数据,返回数据是否正确。设置各个波特率,查看通讯是否正常。测试结果:通讯正常。调试接口如图6-1所示。

图6-1 Zigbee调试接口

第7章 结论与展望

结论

随着计算机软硬件技术、网络技术和工业综合自动化系统整合水平的不断发展,对监控数据传输的实时性、数据接口的开放性以及数据链接的安全性的要求越来越高,有线控制网络的局限性也越来越突出,无线的优势也越来越明显。其中Zigbee短程无线网技术以其数据传输安全可靠、组网简易灵活、设备成本低、电池寿命长等优势,在工业控制领域中展现了深厚的发展潜力[2]。

本论文以Zigbee无线通信技术为基础,设计了无线家居环境监测系统,给出了总体的设计方案,同时还给出了硬件、软件及上位机软件的设计。所得到的系统易用、可扩展,基本达到了设计要求。

展望

在本次设计中,尽管达到了设计的要求,但系统比较简单,可移植性差,在外部环境复杂的实际生活中实用性不大。

另外,本系统还有许多可改进的地方,比如说功耗方面,可以在电源管理程序和无线发射程序方面改进,以达到更节省能源的效果;本系统中使用的是串口将信息发送到管理中心,以后还可以通过无线发送到手机客户端,以便人们无论在何处都能实时了解到环境的变化。还有报警方面做得还不够完善,有待提高。

总结

Zigbee无线传感器网络是基于Zigbee协议的无线传感器网络,是Zigbee协议与传感技术的结合,是应用性非常强的技术,它具有耗资小、安装方便、维护和更新费用低等优势,非常适合于对布线困难、人员不能到达的区域和一些临时场合的状况进行远程监控,如大型建筑的健康状态监控、空间探索、灾害预测等,它在当前我国环境监测系统中有着巨大的应用潜力的。

目前市场上的近距离无线通信技术有很多种,如无线局域网WiFi、蓝牙、IrDA、UWB、RF等。经过市场调研,发现Zigbee无线通信技术在在无线传感网络中占有广泛的市场,具有低功耗、数据传输可靠、网络容量大、兼容性强、安全性高、成本低等特点。本设计采用了Zigbee技术实现无线网络的搭建。经过反复的测试,我们研制的无线网络节点通信平台已经可以稳定的运行,并且有较好的可靠性和扩展性。

本次设计主要涉及到硬件设计和Zigbee协议编程两方面的内容。通过该设计,使得自己在学业上受益匪浅,它不仅要求我灵活应用以前所学的知识,也要求自己在工作中不断学习和接受新知识,极大的锻炼了自己独立研发的能力,为今后的工作开创了新的前景。

参考文献

[1] 叶朝辉,[J].计算机应用研究,2000. [2] 徐君丽,刘冀伟,[M].微计算机信息,2005. [3] 高守玮,[M].北京航空航天大学出版社,2011. [4] [D].武汉科技大学,2009

[5] Jane K,Hart,Kirk Sensor Networks:A revolution in the earth system —Science Reviews,2006. [6] [J].高等教育出版社,2010. [7] [M].华南理工大学出版社,2007 [8] [M].重庆大学出版社,2003 [9] [M].清华大学出版社,2002. [10] [M].清华大学出版社,2010. [11] [M].北京:电子工业出版社,2000. [12] 孙利民,,2005. [13] 陈玲,,2004.

致谢

在这次毕业设计中,杨明老师给了我很大的帮助。本篇论文是在杨老师的悉心指导下完成的,遇上的各种问题在他的指导下也都很好的解决了,他以严谨的学术态度、广博的专业知识、独到的见解给予我精心的指导和帮助,并时刻督促我完成这次毕业设计,所以我要再次衷心感谢我的指导老师杨明老师,在此向老师表示深深的谢意!

我还要感谢我的同学在四年的大学学习期间,不仅在学习上给予了我无私的帮助,在生活上也给我留下了美好的回忆。在这次毕业设计中也给我很大的帮助。

最后我特别要将诚挚的谢意献给我的家人,感谢他们多年来对我的关爱、理解和支持。正是他们自始至终的支持和鼓励,我才能够顺利完成学业。

附录

附录A 外文文献

A Coal Mine Environmental Monitor System with Localization

I.RESEARCH STATUS

As an important energy, coal plays a pivotal role in the economic development. Coal mine monitoring system, is the important guarantee for coal mine safety and high efficiency production. In order to ensure the safe operation, the installation of environment monitoring node in tunnels to real-time detection is very important. However, commonly used traditional monitoring node wired connection to obtain communication with the control system, this node exist wiring difficulties, expensive and other shortcomings. In contrast, wireless sensor node can be easily with current mine monitoring network connection, and good compatibility, facilitate constituted mine gas monitoring network, to suit various size of mine applications. Since wireless nodes are battery powered, so completely out of the shackles of the cable, shorten the construction period can be arranged at any time where the need to use.

The Zigbee wireless communication technology is used in this coal mine environmental monitor system. This is a new short-range, low complexity, low power, low data rate, low-cost two-way wireless communication technology. Now, wireless sensor network product based on Zigbee technology are quantity and variety, but the real product can be applied in underground environments of special sensor node is very few. The sensor node that we designed in the system is truly able to apply to in-well environment, it through the wireless sensor node security certification. At the same time, due to the special nature of the wireless network is that it can spread the wireless signal, we can easily locate staff for coal mine safety monitoring provides more protection. II. SYSTEM ARCHITECTURE

This system is a comprehensive monitoring system which is combined with software and hardware. Hardware part includes wireless mobile nodes and fixed nodes which were

deployed in the underground tunnel, the main function of them is to collect coal mine environment data and require person’s location. Software part refers to the PC monitoring software which is designed in VC++ is used to summarize and display the data of each node. Monitoring node is divided into mobile nodes and fixed nodes; they are using Zigbee protocol for wireless transmission of data. Because the fixed node is also using wireless data transmission method, so it's deployed in the underground roadway becomes very convenient. As the mobile node is carried by the miner, it must be using wireless transmission method. This allows the mine to form a topology of Zigbee wireless sensor network. The fixed node in wireless sensor network is router device and the mobile node carried by miner is the end device. Normally, the router of Zigbee network has no sensor equipment; it is only responsible for data forwarding. But considering the practical application, we believe that add sensor devices on the router will be better on monitoring underground coal mine environment. So in our design, the router also has an environment monitoring function which is usually designed in end device.

Fixed node will sent received data from mobile node to the gateway, then the gateway transmits data to monitor computer through RS232 or optical fiber. The PC monitor software in the computer will process all data and display them in a visualization window. The PC software also calculates each mobile node’s real-time location through the specific localization algorithm, according to the received signal strength (RSSI) obtained from mobile nodes. III. NODE DESIGN

Since the Zigbee wireless network platform sold on present market was designed for the general environment, for special underground so they are not suitable for the environment. Therefore, we need to customize the system for underground environment whit a special hardware circuit. Node photo are shown in Fig. 1

Then wireless microcontroller CC2530 chip is the core processor of the node device, it can constitute a Zigbee network with very few peripheral circuits. The CC2530 is an IEEE compliant true System-on-Chip, supporting the proprietary market as well as the Zigbee, Zigbee PRO, and Zigbee RF4CE standards. Unlike other wireless chip, CC2530 built-in 8051 monolithic integrated circuits kernel, therefore we no longer need to use a single MCU to control the circuit, and this save us a lot of cost.

A. Mobile Node

The mobile node is the end device of a Zigbee network that can be carried by miner; it should be a portable and low power consumption node. So the mobile node we designed is only as small as a mobile phone, and it is by built-in lithium ion battery power supply. In power loss, the core processor CC2530 is a low power consumption chip, when it is in the sleep mode, it only need to use less then 1uA work current. In order to reduce power consumption as much as possible on the display, a 100*32 pixel matrix with no backlighting LCD screen was used. The battery’s capacity of the mobile node is 1500mAh, so it is enough to meet the miner’s long hour works in the underground. The battery charge management chip is TP4057, the maximum charge current can up to 500Ma.

The mobile node circuit includes the gas concentration sensor and temperature sensor PT-1000. As far as we know, many wireless sensor platforms use the digital type sensor. The communication between the digital sensor and the MCU need strict timing requirements. But considering the actual application, the wireless MCU usually has a real-time operating system in general, if we use the microcomputer to simulate the strict timing, it will affect the real-time of whole operating system. These two sensors output analog signals not digital signals. Only input this signal into a differential amplifier, can we get an appropriate signal that can be converted to a digital signal by an ADC mode within the CC2530 chip. In order to facilitate the carrying, external antenna was not used in our mobile node, instead of using a patch antenna. And we customize a shell like a cell phone size; it is enough to put all PCBs, sensors and battery in it. Taking into account the small shell of the explosive performance is not very good, the design of PCBs and the selection of component are all carried out the safety assessment.

B. Fixed Node

Fixed node is installed in the wall of the underground tunnel. Because it is big than the mobile node, it is not appropriate to carry around. The circuit of the fixed node is almost same with the mobile node, it also use a CC2530 chip as core processor. Because of underground tunnels generally deploy with power cable, fixed nodes can use cable power-supply modes. At the same time, because we use wireless signal transmission, the deployment of new fixed nodes become very convenient, which also resolves the problem of the signal lines deployment.

As a fixed node, the minor who is doing work may far from it, in order to facilitate the miners observed environmental data around the fixed nodes, it uses LED digital display. At the same time, the large current LED lights and buzzer are designed in the circuit; it makes

the fixed node with the function of sound-light alarm. Considering that it may occur the emergency of without electricity, fixed node also built-in a lithium-ion battery. Under normal conditions, lithium-ion battery is in charging status, when external cable disconnect, fixed node is automatic switched to battery power, which can ensure the mobile node can deliver the information through fixed nodes in underground.

Without regarding to fixed nodes’ portability, we have a customized shell that has excellent explosion properties, and the internal space is enough to hold down the GHz antenna. To ensure safety, all cables and the location of sensors are placed with particular glue sealed, so that it has a good seal. IV. POSITIONING FUNCTION

One of the important functions of the wireless sensor networks is localization,

especially in the underground tunnel, it relates to the safe of the miner's life. Currently most widely used orientation method is GPS satellite positioning, it is a high precision, all-weather and global multifunctional system with the function of radio navigation, positioning and timing. But the GPS positioning method is not suitable for the underground work environment of coal mine, once you enter the underground, it cannot receive satellite signal, thus unable to achieve targeting. We need to consider how to use wireless network to realize positioning function, means using wireless signal between the communications of devices for positioning. The existing distance measuring technology between the wireless-devices basically is the following kinds of methods: TOA, TDOA, AOA and RSSI.

About the TOA method, the distance between the two devices is determined by the

product of the speed of light and transmission time. Although the precision of this method is accurate, but it require a precise time synchronization, so it demand hardware is higher.

TDOA technology need ultrasonic signal,which is setting on a node with receive and transmit function. When measure the distance, it can sent ultrasonic wave and wireless signals together. By measuring the difference between two signals arrival time, we can calculate the distance between two devices. Using this method can also obtain accurate result, but the method need to increase ultrasonic sending and receiving device on the node circuit, it will increase cost.

AOA technology needs to install multiple antennas through the nodes so it can obtain adjacent nodes’ signals on deferent directions. With this it can determine the location

information from number of adjacent nodes and calculate its own position. This method not only need to add additional hardware, but also it's still very vulnerable to external disturbance, therefore it's not suitable for utilize.

RSSI ranging is a cheap and easy technology. By using this method, we don't need to add additional hardware design. We also do not need very precise time requirements. This technique is about with measuring the wireless signals strength in the propagation of the loss, to measure the distance between two nodes. Because of this method requires hardware equipment is less, algorithm is simple, so it has been using in many wireless communication field. Comprehensive all conditions, positioning on the use of RSSI ranging technique.

A. Hardware Location Engine

The CC2431 wireless microcontroller chip produced by TI Company has a hardware location engine. From the software's point of view, CC2431’s hardware location engine has a very simple API interface, as long as writing the necessary parameters and waiting for calculation, it can read the location results.

The hardware location engine is also based on RSSI technology. The localization system includes reference nodes and blind nodes. The reference node is a fixed node that located in a known position, the node know their place and send a packet notify to other nodes. The blind node receives packets from reference nodes, which can obtains reference nodes’ location and the corresponding RSSI value and put them into the hardware location engine, and then the blind node’s location can be read from the engine.

On the surface, using the CC2431 hardware location engine targeting the program as a good choice, but considering the practical application, it will encounter the following problems. First of all, we have choose the CC2530 as the main chip of fixed nodes of the system, its internal programs is running in Zigbee2007 protocol, but CC2431 as a early chip, it applies only to Zigbee2006 protocol. In the communications between CC2431 and CC2530 that will have compatibility problems. Secondly, CC2431 hardware location engine use the distributed computing, all mobile nodes’ location are calculated by themselves, and then they upload information to the gateway node, this will not only occupy the mobile node processing time, still it can take up more network resources. For this reason, we have to shelve this approach, consider how to implement location by using CC2530 chip.

B. Software Location Engine

If we want to use CC2530 to implement location function, that we must write

software location engine by ourselves. Because that chip do not have a hardware location engine inside of it. This software location engine is still used RSSI technology; meanwhile mobile node position is calculated by the PC software, so as to reduce the burden of mobile node computing. To calculate the mobile node location, there must be at least three reference nodes. We will regard router nodes as reference nodes in network, and record the X, Y coordinates of every reference node. Then we let the mobile node send signal to each reference node, so that each reference node can obtain a RSSI values, with these parameters, we can use trilateral measurement method to calculate the specified location of the mobile node. The simpler way give the mobile node to broadcast way to send data, then around it every router node would receive the data from the mobile node, thus obtains RSSI values. Once the mobile node number increasing network, this method will make router nodes more burden, because the every radio message that the router node receives will transmit from the low layer to the top layer. Finally the application layer will analyze data packets. In fact, the mobile node need not to broadcast transmitted data, other routing node can also receive the mobile node packets. Only child mobile nodes of the router node will continue to transmit the packet forwarding upward, the other router nodes will shield out the packet in the bottom of the protocol.

In order to let all router nodes can receive the packet which sending by mobile nodes, and send its RSSI values up to the gateway node, we need to modify the relevant function in Z- Stack protocol which is provided by TI. First we find the function named afIncomingData, it deals with the received data from the bottom of protocol, in which we add some code that can obtain packet’s RSSI value. Then through the osal_set_event function to add and send an event MY_RSSI_REPORT_EVT of RSSI value task to OSAL polling system. This event’s corresponding function will be executed in the task of OSAL interrupt-driven function, thus the mobile node corresponding RSSI values will be sent to gateway node. Through this method, the packet will only be processed by bottom function of the protocol. According to this method we can obtain corresponding RSSI value and save the computation time of mobile nodes.

In fact, this software location engine is not implementing with a single mobile node,

but through the operation of the whole system to achieve. By which the mobile node is only responsible for sending unicast packets. The mobile node’s parent router node is responsible to forward the packet to the gateway. Other router nodes are not responsible for

forwarding this packet, just clipping the mobile node of RSSI value, then forwarded to the gateway. Finally the gateway bring all RSSI values of the mobile node to PC monitoring software, the corresponding mobile node’s location is calculated. In order to reduce the error, monitoring software will collect 10 times of the RSSI value and take average on it, and then select the nearest value of the three fixed nodes. Finally the trilateral measurement method is used to calculate the location of mobile nodes. V.SYSTEM IMPLEMENTATION

All software systems embedded in nodes are based on Z-Stack. Because Z-Stack is

an open-source project, it is very beneficial to the secondary development. These nodes were tested in a real coal mine locate in Shanxi Province. We deployed the fixed node every 50 meters in the tunnel, and also set a fixed node in each entrance of the work area. Because the fixed node have large size digital LED displays, so the display content of the fixed node can be seen far from away the miner. Each miner carries a mobile node, the temperature and gas concentration is displayed on the LCD screen at real-time.

The gateway node is placed at the entrance of the mine, through the RS232 cable

connected to the monitoring computer in the control room. In this system all packets collected by the gateway node are transmitted to PC through a serial port, and it can save historical data backup to a SQL database. The main function of monitoring software is to display and store the data of every node, and calculates related mobile nodes’ location according to RSSI values. The monitoring software has two main dialog interfaces, one is used to display a two- dimensional profile of the coal mine, and user can see all the miners' working position. Another interface is data displaying interface, and environmental data were shown here. The picture of PC monitoring software is shown in. VI.SYSTEM EVALUATION

Through repeated testing of the system, we made the system an objective assessment. First is the power consumption assess for node hardware, fixed node’s working voltage is in 9V ~ 24V when the power supplied by cable. The maximum operating current for fixed node is 93mA; the average operating current is . When the power cable was disconnected, fixed node powered by lithium-ion battery. On battery power, the fixed node’s maximum working current is 147mA; average working current is . Fixed nodes can work 8 hours on battery power at least.

Another quite important performance is the location function of the system

performance. At four different locations of tunnel and working areas, mobile nodes were placed there. Two sets of different average error data were shown in From table 1. Because this system uses RSSI technology and it relies mainly on the signal strength, the signal quality will be affected by interferences. From different locations’ errors we can see that, the error in working areas was larger than it in tunnels, because the tunnel is generally straight, but the shape of the working areas are uncertainty.

We gratefully acknowledge Texas Instruments for devices provided to us free of charge. And also thank staffs of XinNuoJin Company for giving us supports on system testing.

附录B 中文翻译 一、研究现状

作为一种重要的能源,煤炭在经济发展中起着举足轻重的作用。煤矿监控系统是煤矿安全和生产效率高的重要保证。为了确保安全运行,环境监测节点的安装是非常重要的。然而,常用的传统监控节点通过有线连接获得与控制系统的通信,这个节点存在布线困难,价格昂贵等缺点。相比之下,无线传感器网络节点可以很容易地与当前矿井监测网络连接,和良好的兼容性,方便组成煤矿瓦斯监测网络,以适应各种大小煤矿的应用。由于无线节点是电池供电,所以完全摆脱线缆的束缚,缩短建设周期,可以随时安排使用。

这是一个新的短距离,低复杂度,低功耗,低数据速率,低成本的双向无线通信技术。现在,无线传感器Zigbee无线通信技术应用于煤矿环境监测系统。基于Zigbee技术的网络产品的数量和种类很多,但真正的产品可以应用在地下环境中的特殊传感器节点是很少的。我们设计的系统,是真正能够适用于在井下环境,它通过无线传感器网络节点的安全认证。同时,由于无线网络的特殊性质,它可以传播无线信号,我们可以很容易地找到工作人员以便对煤矿安全监控提供更多的保护。

二、系统架构

该系统是一个软件和硬件综合监控系统的融合。硬件部分包括无线移动节点和固定节点而被地下隧道部署,它的主要功能是收集煤炭矿山环境的数据和人的位置。电脑监控软件由VC++设计,是用于以总结和展示每个监控节点中移动节点和固定节点的数据。他们正在使用的数据由无线传输Zigbee协议传输,由于在固定节点也使用无线数据传输的方法,所以在地下巷道部署变得非常方便。由于移动节点是由矿工进行,就必须使用无线传输方法。在固定无线传感器网络节点是路由器设备,矿工移动节点通常是终端设备,Zigbee网络的路由器有没有传感器设备;,它是只负责数据转发,但考虑到实际应用,我们在路由器上附加的传感器设备,将更好地监测煤矿井下环境,这让我们进一步确定Zigbee网路拓扑结构。因此,在我们的设计中,路由器还具有环境监测功能。

固定节点和移动节点通过网关发送接收到的数据,然后网关通过RS232或光纤将数据传输到监控计算机。通过电脑的计算机软件处理所有数据,并通过一个可视化窗口显示出来。根据从移动节点接收到的信号强度(RSSI),PC软件通过特定的定位算法计算每个移动节点的实时定位。

三、节点设计

目前市场上出售的Zigbee无线网络平台,适用于一般的环境,而在特殊的地下,所以他们不适合的环境,因此,我们需要定制一个适合地下特殊的硬件电路系统。节点的照片如图1。

无线单片机CC2530的芯片是节点设备的核心处理器,它可以用很少的外围电路构成一个Zigbee网络。CC2530是一个IEEE , PRO和Zigbee RF4CE的标准。CC2530不同于其他的无线芯片,内置8051单片机集成电路的内核,因此我们不再需要使用一个单一的单片机控制电路,这为我们节省了大量的成本。 A。移动节点

移动节点是一个由Zigbee网络组成的矿工移动的终端设备,它应该是一种便携式低功耗节点,所以我们设计的移动节点是小如手机,它是通过内置锂离子电池供电, CC2530的核心处理器是低功耗的芯片,它在睡眠模式时,只需要使用小于1uA的工作电流。为了尽可能降低在显示屏上的功耗,使用1100*32无背光液晶屏幕的像素矩阵。移动节点的的电池容量是1500mAh,所以它足以满足矿工在地下长时间工作的产品,电池充电管理芯片是TP4057,最大充电电流可高达500mA。

。据我们所知,许多无线传感器平台使用数字式传感器,数字传感器和MCU之间的通信需要严格的时序要求。考虑到实际应用中,无线MCU通常有一个一般的实时操作系统,如果我们用微机模拟严格的时序,它会影响整个操作系统的实时。这两个传感器输出的模拟信号,而不是数字信号。输入到差分放大器,我们可以得到适当的信号,可以由CC2530的芯片内的ADC模式转换为数字信号。为了方便携带,不使用外接天线,在我们的移动节点天线是我们定制一个像手机大小的外壳,。设计的PCB和元件选择,都进行了安全评估,这足以考虑到它所有的电路板、传感器和电池爆炸性能不是很好。

固定节点安装在地下隧道的墙壁。因为它是比大的移动节点,它是不适合随身携带。电路的固定节点与移动节点几乎是相同的,它也使用CC2530的芯片核心处理器。由于在地下隧道,一般部署电力电缆,固定节点可以使用电缆供电模式。同时,因为我们使用的无线信号传输,新的固定节点的部署变得非常方便,这也解决了问题信号线条部署。

作为一个固定的节点,做的工作可能远非如此,为了方便矿工观察周围的固定节点的环境数据,它使用LED数字显示。同时,大电流LED灯和蜂鸣器的设计电路。考虑到固定节点可能会出现无电的紧急声光报警功能,固定节点也内置锂离子电池,

正常情况下锂离子电池在充电状态,当外部电缆断开,固定节点是自动切换到电池供电,可确保移动节点可以接收固定节点提供的信息。固定节点不方便携带,我们有一个定制的外壳,具有良好的爆炸性能, GHz天线。为了确保安全,所有的电缆和传感器的位置放置,特别是胶密封,因此它具有良好的密封性。

四、定位功能

无线传感器网络的重要功能之一是定位,特别是地下隧道,它涉及到矿工的生命安全。目前使用最广泛的定位方法是GPS卫星定位,它是一个高精度,全天候和全球无线电导航定位和定时的多功能系统,但在全球定位系统定位方法是不适合的煤矿井下工作环境,一旦你进入地下,就不能收到卫星信号,从而无法达到目标。我们需要考虑如何使用无线网络实现定位功能。定位现有的无线设备之间的距离测量技术的设备之间的通信手段使用无线信号基本上是以下几种方法:TOA,TDOA,AOA和RSSI。

关于的TOA方法,在两个设备之间的距离是由产品的高速光传输时间确定。虽然这种方法的精确度是准确的,但它需要一个精确的时间同步,所以它要求的硬件高。 TDOA技术需要的超声波信号,这是一个节点上设置接收和发送功能。测量距离时,它可以发出超声波和无线信号。通过测量两个信号到达的时间之间的差异,我们可以计算出两个距离设备。使用这种方法也可以得到准确的结果,但该方法需要增加超声波的发送和接收节点上的电路装置,它会增加成本。

AOA技术需要安装多个天线,所以它可以通过节点直接获得相邻节点的信号[9]。这可以从相邻节点的数目确定位置信息,并计算出自己的位置。这种方法不仅需要添加额外的硬件,并且它仍然很容易受到外界干扰,因此它不适。

RSSI的技术特点是廉价和容易,通过使用这种方法,我们不需要添加额外的硬件设计。我们也不必非常精确的时间要求。这种技术是关于测量无线信号强度的传播损失,两个节点之间的距离来衡量的,因为这种方法。需要硬件设备少,算法很简单,所以它已经在许多无线通信领域使用。综合所有条件,使用的RSSI测距技术的定位。

无线微控制器芯片TI公司生产的CC2431有一个硬件定位引擎。从软件的角度来看,CC2431的硬件定位引擎有一个非常简单的API接口,只要编写必要的参数和计算,就可以读取位置结果。

硬件定位引擎基于RSSI的技术,包括参考节点和盲节点,参考节点是一个固定的节点,节点在一个已知的位置,知道自己的位置和发送报文通知其他节点。盲节点接收数据包的参考节点,从而获得参考节点的位置和相应的RSSI值,进入硬件定位引擎,然后盲节点的位置可以从发动机读取。

表面上使用了CC2431的硬件定位引擎是为一个不错的选择方案,但考虑到实际应用中,会遇到以下问题。首先,我们选择作为主芯片CC2530的系统固定节点Zigbee2007协议,但CC2431的其内部运行的程序为一个早期的芯片,它适只用于Zigbee2006协议。第二,在CC2431和CC2530的之间的通信,这将有兼容性问题。CC2431的硬件定位引擎使用分布式计算,所有的移动自行计算节点的位置,然后上传到网关节点的信息,这将不仅占据了移动节点的处理时间,而且占用更多的网络资源。出于这个原因,我们不得不暂时搁置这个方法,可以考虑如何实现使用的CC2530芯片的定位功能。

如果我们想使用CC2530的实现定位功能,我们必须通过自己编写的软件的位置引擎,因为该芯片没有它里面的硬件定位引擎,该软件定位引擎仍然使用的RSSI技术,同时移动节点的位置是PC软件计算,从而减少移动节点的计算负担。要计算移动节点的位置,必须有至少3个参考节点,我们将网络中的参考节点视为路由器节点,并记录在X,Y为每个参考节点的坐标,然后我们让移动节点发送信号到每个参考节点,使每个参考节点可以获取RSSI值,通过这些参数我们可以使用三边测量方法来计算移动节点的指定位置。通过这个简单的方法给移动节点以广播方式发送数据,然后围绕它每一个路由器节点将收到来自移动节点的数据获得RSSI值。一旦移动节点数量网络的增加,这种方法会使路由器节点更多的负担因为每个电台消息,路由器节点接收从低层传送到上层,最后应用层分析数据包。事实上,移动节点需要广播传输的数据,其他路由节点也可以接收移动节点的数据包。子节点的路由器节点和移动节点将继续向上传输的数据包转发,其他的路由器节点在该协议的底部将屏蔽掉的数据包。

为了让所有的路由器节点可以接收由移动节点发送的数据包,并传送到网关节点的RSSI值,我们需要修改这由TI提供的Z-Stack协议相关的功能。首先,我们发现名为afIncomingData功能,它涉及从底部协议,在其中我们添加一些代码,可以获取包的RSSI的值接收数据,然后通过该osal_set_event功能来添加和发送一个RSSI值到MY_RSSI_REPORT_EVT OSAL轮询系统。此事件的相应的功能将在OSAL中断驱动功能任务执行,因此,移动节点相应的RSSI值将被发送到网关节点。通过这种方法,只会协议的底层函数处理。据这种方法,我们可以得到相应的RSSI值,并保存移动节点的计算时间。

事实上,这个软件的位置引擎不执行单个移动节点,但通过整个系统的运作实现移动节点负责发送单播数据包。移动节点的父路由器节点负责转发网关路由器节点的数据包,不是转发这个包,只是裁剪移动节点的RSSI值,然后转发网关负责最后的

网关,使电脑监控软件监控所有移动节点相应的RSSI值的位置计算。为了减少错误,监控软件将收集RSSI值的10倍,并采取上的平均,和然后选择固定节点最近的三个值用三边测量方法用于计算移动节点的位置。

五、系统实施

节点中的所有软件嵌入式系统基于Z-Stack。因为Z-Stack是一个开源项目,它非常有益的二次开发。这些节点测试是在一个位于山西省的煤矿,在隧道内每隔50米部署固定节点,并在每个工作区的入口处还设置了固定节点。由于固定的节点有大尺寸的数字LED显示屏,使固定节点的显示内容可以看到远在矿井中每个矿工携带一个移动节点的温度和气体浓度值。

网关节点被放置在矿井入口处,通过中控室的监控计算机连接RS232电缆,在这个系统由网关节点收集到的所有数据包通过串口传送到PC,它可以保存历史数据备份到一个SQL数据库。监控软件的主要功能是显示和存储的每一个有关移动节点位置的数据,根据RSSI值计算的监控软件有两个主要对话接口,一个用于在个人主页上显示一个两维煤矿,用户可以看到所有矿工的工作位置。另一个接口是数据显示界面,显示这里的环境数据。

六、系统评价

我们通过反复的系统测试,系统客观的评估首先是节点的硬件功耗评估,固定节点的工作电压在9V~24V,电源通过电缆提供。固定节点的最大工作电流目前是93毫安,当断开电源线,固定节点由电池供电的锂离子电池供电,,,固定节点可以至少工作8小时。

节点的另外一个很重要的表现是系统的定位功能。在隧道和工作区的四个不同地点,移动节点被放置在那里。两套不同的平均错误数据,从表1所示,由于本系统使用的RSSI技术和它主要依赖信号强度,信号质量将受干扰的影响,从不同的地点的错误我们可以看到,在工作领域更大的地方误差更大,因为隧道是一般直,但工作领域有不确定性。

我们非常感谢德州仪器公司为我们免费提供的设备,而且还感谢给予我们支持系统测试XinNuoJin公司的员工。

附录C 程序

* INCLUDES */ #include \"\" #include \"\" #include \"\" #include \"\" #include \"\"

#include \"\" #include \"\"

#include \"\"

/* HAL */ #include \"\" #include \"\" #include \"\" #include \"\" #include \"\" #include \"\"

#include \"\" //添加温度传感器头文件

#define Yanwu P2_1 //烟雾

/********************************************************************* * MACROS */

/********************************************************************* * CONSTANTS */

/********************************************************************* * TYPEDEFS */

/********************************************************************* * GLOBAL VARIABLES */

// This list should be filled with Application specific Cluster IDs.

const cId_t SampleApp_ClusterList[SAMPLEAPP_MAX_CLUSTERS] = {

SAMPLEAPP_PERIODIC_CLUSTERID, SAMPLEAPP_FLASH_CLUSTERID };

const SimpleDescriptionFormat_t SampleApp_SimpleDesc = {

SAMPLEAPP_ENDPOINT, // int Endpoint; SAMPLEAPP_PROFID, // uint16 AppProfId[2]; SAMPLEAPP_DEVICEID, // uint16 AppDeviceId[2]; SAMPLEAPP_DEVICE_VERSION, // int AppDevVer:4; SAMPLEAPP_FLAGS, // int AppFlags:4;

SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters; (cId_t *)SampleApp_ClusterList, // uint8 *pAppInClusterList;

SAMPLEAPP_MAX_CLUSTERS, // uint8 AppNumInClusters; (cId_t *)SampleApp_ClusterList // uint8 *pAppInClusterList; };

// This is the Endpoint/Interface description. It is defined here, but // filled-in in SampleApp_Init(). Another way to go would be to fill // in the structure here and make it a \"const\" (in code space). The // way it's defined in this sample app it is define in RAM.

endPointDesc_t SampleApp_epDesc;

/********************************************************************* * EXTERNAL VARIABLES */

/********************************************************************* * EXTERNAL FUNCTIONS */

/********************************************************************* * LOCAL VARIABLES */

uint8 SampleApp_TaskID; // Task ID for internal task/event processing // This variable will be received when // SampleApp_Init() is called. devStates_t SampleApp_NwkState;

uint8 SampleApp_TransID; // This is the unique message ID (counter)

afAddrType_t SampleApp_Periodic_DstAddr; afAddrType_t SampleApp_Flash_DstAddr;

afAddrType_t Point_To_Point_DstAddr;//网蜂点对点通信定义

aps_Group_t SampleApp_Group;

uint8 SampleAppPeriodicCounter = 0; uint8 SampleAppFlashCounter = 0;

/********************************************************************* * LOCAL FUNCTIONS */

void SampleApp_HandleKeys( uint8 shift, uint8 keys );

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pckt ); void SampleApp_SendPeriodicMessage( void );

void SampleApp_SendPointToPointMessage(void); //网蜂点对点通讯定义 void SampleApp_SendFlashMessage( uint16 flashTime ); void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg);

/********************************************************************* * NETWORK LAYER CALLBACKS */

/********************************************************************* * PUBLIC FUNCTIONS */

/********************************************************************* * @fn SampleApp_Init *

* @brief Initialization function for the Generic App Task. * This is called during initialization and should contain * any application specific initialization (ie. hardware * initialization/setup, table initialization, power up * notificaiton ... ). *

* @param task_id - the ID assigned by OSAL. This ID should be * used to send messages and set timers. *

* @return none */

void SampleApp_Init( uint8 task_id ) {

SampleApp_TaskID = task_id; SampleApp_NwkState = DEV_INIT;

SampleApp_TransID = 0;

/***********串口初始化************/ MT_UartInit();//初始化

MT_UartRegisterTaskID(task_id);//登记任务号 HalUARTWrite(0,\"Hello World\\n\

// 温度传感器初始化

P0SEL &= 0xbf; //DS18B20的io口初始化

/******烟雾传感器电路初始化******/ P2SEL &= ~0X02; //设置P21为普通IO口 P2DIR &= ~0X02; // 在P21口,设置为输入模式 P2INP &= ~0x02 //打开P21上拉电阻,不影响

// Device hardware initialization can be added here or in main() (). // If the hardware is application specific - add it here. // If the hardware is other parts of the device add it in main().

#if defined ( BUILD_ALL_DEVICES )

// The \"Demo\" target is setup to have BUILD_ALL_DEVICES and HOLD_AUTO_START

// We are looking at a jumper (defined in ) to be jumpered // together - if they are - we will start up a coordinator. Otherwise, // the device will start as a router. if ( readCoordinatorJumper() )

zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR; else

zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER; #endif // BUILD_ALL_DEVICES

#if defined ( HOLD_AUTO_START )

// HOLD_AUTO_START is a compile option that will surpress ZDApp

// from starting the device and wait for the application to // start the device. ZDOInitDevice(0); #endif

// Setup for the periodic message's destination address // Broadcast to everyone

= (afAddrMode_t)AddrBroadcast; = SAMPLEAPP_ENDPOINT; = 0xFFFF;

// Setup for the flash command's destination address - Group 1 = (afAddrMode_t)afAddrGroup; = SAMPLEAPP_ENDPOINT; = SAMPLEAPP_FLASH_GROUP;

// 网蜂点对点通讯定义

= (afAddrMode_t)Addr16Bit; //点播 = SAMPLEAPP_ENDPOINT; = 0x0000;//发给协调器

// Fill out the endpoint description. = SAMPLEAPP_ENDPOINT; = &SampleApp_TaskID;

= (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc; = noLatencyReqs;

// Register the endpoint description with the AF afRegister( &SampleApp_epDesc );

// Register for all key events - This app will handle all key events

RegisterForKeys( SampleApp_TaskID );

// By default, all devices start out in Group 1 = 0x0001;

osal_memcpy( , \"Group 1\ );

aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );

#if defined ( LCD_SUPPORTED )

HalLcdWriteString( \"SampleApp\#endif }

/********************************************************************* * @fn SampleApp_ProcessEvent *

* @brief Generic Application Task event processor. This function * is called to process all events for the task. Events * include timers, messages and any other user defined events. *

* @param task_id - The OSAL assigned task ID.

* @param events - events to process. This is a bit map and can * contain more than one event. *

* @return none */

uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) {

afIncomingMSGPacket_t *MSGpkt;

(void)task_id; // Intentionally unreferenced parameter

if ( events & SYS_EVENT_MSG ) {

MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );

while ( MSGpkt ) {

switch ( MSGpkt-> ) {

case CMD_SERIAL_MSG: //串口收到数据后由MT_UART层传递过来的数据,编译时不定义MT_TASK,则由MT_UART层直接传递到此应用层

// 如果是由MT_UART层传过来的数据,则上述例子中29 00 14 31都是普通数据,串口控制时候用的。

SampleApp_SerialCMD((mtOSALSerialData_t *)MSGpkt); break;

// Received when a key is pressed case KEY_CHANGE:

SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break;

// Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break;

// Received whenever the device changes state in the network case ZDO_STATE_CHANGE:

SampleApp_NwkState = (devStates_t)(MSGpkt->);

if ( //(SampleApp_NwkState == DEV_ZB_COORD)协调器不能给自己点播 (SampleApp_NwkState == DEV_ROUTER) || (SampleApp_NwkState == DEV_END_DEVICE) ) {

// Start sending the periodic message in a regular interval. osal_start_timerEx( SampleApp_TaskID,

SAMPLEAPP_SEND_PERIODIC_MSG_EVT,

SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); } else {

// Device is no longer in the network } break;

default: break; }

// Release the memory

osal_msg_deallocate( (uint8 *)MSGpkt );

// Next - if one is available

MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); }

// return unprocessed events

return (events ^ SYS_EVENT_MSG); }

// Send a message out - This event is generated by a timer // (setup in SampleApp_Init()).

if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) {

uint8 T[8]; //温度+提示符 DHT11_TEST(); //温度检测 T[0]=wendu_shi+48; T[1]=wendu_ge+48; T[2]=' ';

T[3]=shidu_shi+48; T[4]=shidu_ge+48; T[5]=' '; T[6]=' '; T[7]=' ';

/*******终端LCD显示温湿度*********/

HalLcdWriteString(\"Welcom to use!\显示欢迎语 HalLcdWriteString(\"Temp: humidity:\显示 HalLcdWriteString( T, HAL_LCD_LINE_3);//LCD显示 //替换成点对点通讯的程序

SampleApp_SendPointToPointMessage();

// Setup to send message again in normal period (+ a little jitter)

osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,

(SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) );

// return unprocessed events

return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT); }

// Discard unknown events return 0; }

/********************************************************************* * Event Generation Functions */

/********************************************************************* * @fn SampleApp_HandleKeys

*

* @brief Handles all key events for this device. *

* @param shift - true if in shift/alt.

* @param keys - bit field for key events. Valid entries: * HAL_KEY_SW_2 * HAL_KEY_SW_1 *

* @return none */

void SampleApp_HandleKeys( uint8 shift, uint8 keys ) {

(void)shift; // Intentionally unreferenced parameter

if ( keys & HAL_KEY_SW_1 ) {

/* This key sends the Flash Command is sent to Group 1. * This device will not receive the Flash Command from this * device (even if it belongs to group 1). */

SampleApp_SendFlashMessage( SAMPLEAPP_FLASH_DURATION ); }

if ( keys & HAL_KEY_SW_2 ) {

/* The Flashr Command is sent to Group 1. * This key toggles this device in and out of group 1. * If this device doesn't belong to group 1, this application * will not receive the Flash command sent to group 1. */

aps_Group_t *grp;

grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );

if ( grp ) {

// Remove from the group

aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP ); } else {

// Add to the flash group

aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group ); } } }

/********************************************************************* * LOCAL FUNCTIONS */

/********************************************************************* * @fn SampleApp_MessageMSGCB *

* @brief Data message processor callback. This function processes * any incoming data - probably from other devices. So, based * on cluster ID, perform the intended action. *

* @param none *

* @return none */

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//协调器显示 {

uint16 flashTime; switch ( pkt->clusterId )//

{

case SAMPLEAPP_POINT_TO_POINT_CLUSTERID: /***********温度显示***************/

HalLcdWriteString(\"Welcom to use!\显示欢迎语 HalLcdWriteString( &pkt->[0], HAL_LCD_LINE_2 );//LCD显示温度

/***************湿度显示***************/

HalLcdWriteString(&pkt->[2], HAL_LCD_LINE_3 );//LCD显示湿度

if(pkt->[2]==1) { //有烟雾

HalLcdWriteString(\"Got bad Air!\ //有烟显示 } else { //无烟雾

HalLcdWriteString(\"No bad Air!\ //无烟显示 } break;

case SAMPLEAPP_FLASH_CLUSTERID: flashTime = BUILD_UINT16(pkt->[1], pkt->[2] ); HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) ); break; } }

/********************************************************************* * @fn SampleApp_SendPeriodicMessage *

* @brief Send the periodic message. *

* @param none *

* @return none */

void SampleApp_SendPeriodicMessage( void ) {

uint8 data[10]={0,1,2,3,4,5,6,7,8,9};

if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, SAMPLEAPP_PERIODIC_CLUSTERID, 10, data,

&SampleApp_TransID, AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else {

// Error occurred in request to send. } }

void SampleApp_SendPointToPointMessage( void ) {

uint8 T_H[5];//温湿度 烟雾 热释电 T_H[0]=wendu_shi+48; T_H[1]=wendu_ge%10+48;

T_H[2]=shidu_shi+48; T_H[3]=shidu_ge%10+48;

T_H[4]=48; if(Yanwu==1) {

T_H[4] +=1;//有烟雾

if(pkt->[2]==1) { //有烟雾

/*******终端LCD显示是否有烟雾*********/

HalLcdWriteString(\"Got bad Air!\ //有烟显示 } else {

T_H[4] +=0;//无烟雾

/*******终端LCD显示是否有烟雾*********/

HalLcdWriteString(\"No bad Air!\ //无烟显示 }

if ( AF_DataRequest( &Point_To_Point_DstAddr, &SampleApp_epDesc,

SAMPLEAPP_POINT_TO_POINT_CLUSTERID, 6, T_H,

&SampleApp_TransID, AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else {

// Error occurred in request to send. } }

/********************************************************************* * @fn SampleApp_SendFlashMessage *

* @brief Send the flash message to group 1.

*

* @param flashTime - in milliseconds *

* @return none */

void SampleApp_SendFlashMessage( uint16 flashTime ) {

uint8 buffer[3];

buffer[0] = (uint8)(SampleAppFlashCounter++); buffer[1] = LO_UINT16( flashTime ); buffer[2] = HI_UINT16( flashTime );

if ( AF_DataRequest( &SampleApp_Flash_DstAddr, &SampleApp_epDesc, SAMPLEAPP_FLASH_CLUSTERID, 3, buffer,

&SampleApp_TransID, AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else {

// Error occurred in request to send. } }

void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg)//发送 FE 02 01 F1 返回01 F1 {

uint8 i,len,*str=NULL; str=cmdMsg->msg;

len=*str; //msg里的第1个字节代表后面的数据长度

,则 for(i=1;i<=len;i++) HalUARTWrite(0,str+i,1 ); HalUARTWrite(0,\"\\n\换行

if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, SAMPLEAPP_COM_CLUSTERID, len,// 数据长度 str+1,//数据内容

&SampleApp_TransID,// 簇ID ?? AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else {

// Error occurred in request to send. } }

因篇幅问题不能全部显示,请点此查看更多更全内容