Zigbee硬件平台使用说明

Zigbee硬件平台使用说明
Zigbee硬件平台使用说明

说明

1.目前我们所做的硬件平台是以Jennic公司的JN5139模块为基础搭建的。

2.在阅读本说明前请详细阅读北京博控公司开发包内的相关资料,主要包括:

Jennic软件开发人员指南(JN51XX).pdf(最为重要,仔细阅读)Jennic编程开发概述.pdf

Jennic解决方案.pdf

3.本说明仅作为上面资料的补充。

第一章基础认识

Zigbee 技术是一种新兴的短距离、低功耗、低速率、低成本的无线网络技术,主要用于近距离无线连接,以多跳接力的方式实现无线通信,它是在IEEE802.15.4规范的基础上发展的,IEEE802.15.4负责物理层和MAC层,Zigbee联盟制定了网络层和应用编程接口规范。Zigbee 技术具有以下几个显著特点:

(1)节点功耗低。节点的收发距离短,所需功耗低。另外,Zigbee 技术配合芯片采用了多种节能工作模式,可以确保两节五号电池支持长达6个月到两年的使用时间。

(2)网络传输速率低。Zigbee工作在20-250kb/s的较低速率,分别提供250kb/s(2.4GHz),40kb/s(915MHz)和20kb/s(868MHz)的原始数据吞吐率,满足低速率传输数据的应用需求。

(3)网络自组织。Zigbee 具有自动组网功能,网络节点在无人干预的情况下自动组网,自动运行。在节点失效等问题出现的情况下,系统能自动调整,实现无人值守。

(4)网络容量大。Zigbee 可采用星形、树形和网状网络结构,由一个主节点管理若干子节点,最多一个主节点可管理254个子节点;同时主节点还可由上一层网络节点管理,最多可组成65000个节点的大网。

(5)短时延。Zigbee 的响应速度较快,一般从睡眠转入工作状态只需15 ms ,节点连接进入网络只需30 ms ,进一步节省了电能。

(6)高安全。Zigbee 提供了三级安全模式,包括无安全设定、使用接入控制清单(ACL) 防止非法获取数据以及采用高级加密标准(AES 128) 的对称密码,以灵活确定其安全属性。

(7)开发成本低。由于网络协议简单,开发时间成本较低,而且Zigbee 协议免除利费,Zigbee 的工作频率采用ISM 频段,选择灵活。同时,各大半导体公司也设计出了适合Zigbee 技术规范的芯片,价格较低廉。

更深入的了解可以在网上搜索一下,会有很多相关的知识。

第二章硬件平台实际操作

目前,我们现有的硬件平台采用的是Jennic公司的JN5139M00无线通信模块。关于JN5139的相关资料在开发包中介绍的很详细,这里主要介绍我们自己的平台的操作。

2.1 实验平台与PC的通信

目前的开发板主要是以RS232与PC进行串口通信,鉴于目前大部分电脑上没有自带串口,这里先介绍USB转串口的安装使用。

2.1.1 USB转串口的安装使用

第一步:安装USB转串口驱动程序。USB转串口驱动程序在Zigbee硬件平台介绍压缩包中的Software中有。

第二步:将USB转串口的硬件USB接口插到电脑上,然后在电脑的设备管理器—>端口中可以看到如图2-1所示的结果。

图2-1 USB转串口驱动安装正确结果

如果出现如图2-2所示的结果则说明驱动没有装上,请重新安装驱动。

图2-2 USB转串口安装失败结果

2.1.2 开发板与PC的连接

在开发板上,主要通过串口进行调试以及和PC进行通信。在开发板上有进行电平转换的RS232芯片ADM3312E,在图2-3的黄色选中区域中。然后经过DB9接口与电脑的串口连接起来。DB9接口如图2-3中的红色区域所示。需要特别注意的是,由于在开发板的设计中,DB9设计的问母头,而在实际的焊接中使用的为公头,所以到时串口的线序不对,现在所示用的串口线是自己根据线序特制的。如果还需要制作的话,需要注意线序问题。

图2-3 开发板串行接口

2.1.2 超级终端的使用

超级终端的使用请参考Jennic软件开发人员指南(JN51XX).pdf。

2.2 程序的下载

在进行程序下载前,请按照软件开发人员指南的要求安装好所有要安装的软件。

当串口连接好以后,我们就可以下载自己的程序了。在我们自己的开发板中,和博控公司提供的开发板有所不同,下载程序时请按本说明为准。

要下载程序,首先要让JN5139模块进入编程状态。进入编程状态的时序是,先按住编程按键不放,然后按住复位键0.5s以上,松开复位键,再松开编程按键。由于从目前的实际应用来看,使用自动进入编程状态比较容易丢失MAC地址,而烧写MAC地址比较麻烦,故我们采用手动进入编程状态的方式来下载程序。

1.首先找一根导线,从开发板的地线中接出来一根地(四个定位孔都是接地点,可以使用定位孔)。

2.如图2-4所示,在操作前确保JP6插针(蓝色区域)上没有接跳线帽。

3.将地线与图2-4中的红色区域的焊点接触,先不要断开。这一步相当于按住编程按键的操作。

4.按住复位按键(图2-4中的黄色区域)0.5s以上。

5.将地线与红色区域的焊点断开。此时进入编程状态。

图2-4 开发板程序下载示意图

6.打开FlashGUI.exe,可以看到如图2-5所示的界面。

图2-5 Flash Programmer下载程序示例

1.在如图2-5所示的界面中,我们需要在Program File中点击Browse选项,然后找到我们要下载的BIN文件,在此处要注意找到BIN文件的位置是否正确。

2.我们需要在Configuration中选择COMPort的端口,也就是我们开发板与电脑连接的串口端口号。在我们的电脑中,一般主板后面的串口的串口号为com1,通过USB转串口或者其他方式得到的串口的串口号可以在设备管理器中的端口中看到。

3.其他的选项为默认即可。

4.点击Refresh,如果出现图2-6所示的情况则说明串口没连接好或者没进入编程状态。

图2-6 通信失败

如果出现如图2-7所示的情况则说明串口通信成功,可以下载程序了。

其中,Refresh左边显示的即为此节点的64为MAC地址。

图2-7 通信成功

5.点击Program,开始下载程序,下载完成后会出现如图2-8所示的界面。

图2-8 程序下载成功界面

6.关闭Flash Programmer,关闭开发板电源

7.在对监测节点的下载程序来说,流程和开发板相同,在将排线连接好后,

图2-9 监测节点下载程序

编程按键为图2-9中的红色区域,复位按键为图中的黄色区域。其他操作相同。需要注意的是,由于下载小板为万用板焊接的,当出现问题时注意排查问题。

下载程序注意事项:

目前因为JN5139模块或者下载线路的一些问题,在下载中可能会出现MAC 地址丢失的问题。MAC 地址丢失后模块就不能正常的组网,重新烧写比较麻烦。为了避免这种情况的发生,要在下载程序过程中规范操作。

软件开发人员给出了MAC 地址丢失的几种情况,需要特别注意。根据实践的经验,我建议在下载完程序后,先把开发板的电源断开一次,再上电进行相关的操作。同时,在下载程序的过程中,要保持系统供电的稳定,和下载通道的稳定,不要进行其他的操作。当操作不成功的时候需要先看文档,然后多尝试。 MAC 地址丢失的情况参照软件开发人员指南进行处理。

特别注意的是我们现在的应用小板由于复位电容的容值不是太合适,上电复位可能不能自动完成,我们在上电后需要手动按一下复位键,然后就可以正常工作了。

第三第三章章 应用软件的应用软件的编写编写

在Zigbee 硬件平台介绍的压缩包中的Application 中有测试过的程序可以使用,现在介绍相关的程序的应用。

1. 实现传输电压:这里面是屏蔽了所有的传感器之后只采集电压所使用的程序。适合于最小系统的调试。

2. 18B20:为应用板上的DS18B20温度传感器的调试例程。

3. AD :为AD 采集实验,这里主要用于MQ-2的烟雾检测。可以根据需要对程序进行修改。注意AD 采集电压的范围最大0-2.4V 。在这里我们用的是ADC 通道1。

4.DA :为DA 实验。

5. 综合版:为采集烟雾信息和温度检测的综合版,这里面主要是采集温度的程序,采集AD 信息的节点需要下载AD 中的程序。

需要注意的是:在修改程序前,先跟据开发人员指南的介绍对程序有大致的了解。先将开发人员指南中的示例程序解压出来,看明白,那是修改的基础。弄懂那一部分是干啥的,然后再将测试的程序下进去,看实验效果,对比原来的程序,看修改了那一部分。看几个程序后就可以自己修改试试。

关于通过串口Debug 进行调试,可以根据相关的文档尝试一下,需要注意的事,下载程序的时候,程序存放的位置是不一样的。

在编写测试程序时,首先先将相应的程序给看懂。博讯公司针对不同的功能提供了相应的例程,可以在开发包的Application 中找到。调用的相关的API 函数可以在API Manual 中找到,不过他的API 介绍的不是太详细,最主要的还得在充分理解程序的情况下看例程。

刚开始看程序可能有些不习惯,看一段时间就好了,里面就是定义的结构体和状态值多了一些。

当你看了一部分的程序的时候,其实会发现,Jennic 公司给我们提供了一个小的操作系统,其实我们是在他的小系统里面定义自己的小应用程序,就和我们在电脑上基于Windows 提供的平台来编写程序一样。

开发包中的大部分文档都是英文的,看着可能有些吃力,不过好多问题的解决方案都在里面,没事的时候应该多看看。

当遇到问题的时候,先看开发人员指南,如果上面没有解决办法,再在网上查找对应的解决办法。

我们采用的硬件平台是Jennic 公司提供的,如果想对协议栈等深层次的研究,可以搜集一些TI 公司的Zigbee 芯片的资料,好多概念上的问题,在那里解释的比较清楚。

第四章 信息来源

因为Zigbee 是一个比较新的技术,故没有太多的文献资料可以参考,我们主要是在网上查找我们需要的资料。

下面说一下目前我发现的主要信息的来源。

英国Jennic 公司网站, https://www.360docs.net/doc/9a18659409.html,

北京博讯科技技术支持论坛, https://www.360docs.net/doc/9a18659409.html,/boconbbs (重要) 北京博讯科技QQ 技术群:42793370

然后就是可以通过一些技术论坛和QQ 技术群来获得我们需要的信息。

如果如果在操作中在操作中在操作中遇到难以解决的遇到难以解决的遇到难以解决的问题的话可以联系我问题的话可以联系我问题的话可以联系我::

07级计算机应用技术 解建杰

QQ :564698929

Zigbee组网流程——理论

星形网络和树型网络可以看成是网状网络的一个特殊子集,所以接下来分析如何组建一个Zigbee网状网络。组建一个完整的Zigbee网络分为两步:第一步是协调器初始化一个网络;第二步是路由器或终端加入网络。加入网络又有两种方法,一种是子设备通过使用MAC层的连接进程加入网络,另一种是子设备通过与一个先前指定的父设备直接加入网络。 一、协调器初始化网络 协调器建立一个新网络的流程如图1所示。 图1 协调器建立一个新网络 1、检测协调器 建立一个新的网络是通过原语NLME_NETWORK_FORMATION.request发起的,但发起NLME_NETWORK_FORMATION.request原语的节点必须具备两个条件,一是这个节点具有ZigBee协调器功能,二是这个节点没有加入到其它网络中。任何不满足这两个条件的节点发起建立一个新网络的进程都会被网络层管理实体终止,网络层管理实体将通过参数值为INVALID_REQUEST的NLME_NETWORK_FORMATION.confirm的原语来通知上层这是一个非法请求。 2、信道扫描 协调器发起建立一个新网络的进程后,网络层管理实体将请求MAC子层对信道进行扫描。 信道扫描包括能量扫描和主动扫描两个过程。首先对用户指定的信道或物理层所有默认的信道进行一个能量扫描,以排除干扰。网络层管理实体将根据信道能量测量值对信道进行一个递增排序,并且抛弃能量值超过了可允许能量值的信道,保留可允许能量值内

的信道等待进一步处理。接着在可允许能量值内的信道执行主动扫描,网络层管理实体通过审查返回的PAN描述符列表,确定一个用于建立新网络的信道,该信道中现有的网络数目是最少的,网络层管理实体将优先选择没有网络的信道。如果没有扫描到一个合适的信道,进程将被终止,网络层管理实体通过参数仠为STARTUP_FAILURE的NLME_NETWORK_FORMATION.confirm的原语来通知上层初始化启动网络失败。 3、配置网络参数 如果扫描到一个合适的信道,网络层管理实体将为新网络选择一个PAN描述符,该PAN 描述符可以是由设备随机选择的,也可以是在NLME_NETWORK_FORMATION.request里指定的,但必须满足PAN描述符小于或等于0x3fff,不等于0xffff,并且在所选信道内是唯一的PAN描述符,没有任何其它PAN描述符与之是重复的。如果没有符合条件的PAN 描述符可选择,进程将被终止,网络层管理实体通过参数值为STARTUP_FAILURE的NLME_NETWORK_FORMATION.confirm的原语来通知上层初始化启动网络失败。确定好PAN 描述符后,网络层管理实体为协调器选择16位网络地址0x0000,MAC子层的macPANID 参数将被设置为PAN描述符的值,macShortAddress PIB参数设置为协调器的网络地址。 4、运行新网络 网络参数配置好后,网络层管理实体通过MLME_START.request原语通知MAC层启动并运行新网络,启动状态通过MLME_START.confirm原语通知网络层,网络层管理实体再通过NLME_NETWORK_FORMATION.confirm原语通知上层协调器初始化的状态。 5、允许设备加入网络 只有ZigBee协调器或路由器才能通过NLME_PERMIT_JOINING.request原语来设置节点处于允许设备加入网络的状态。当发起这个进程时,如果PermitDuration参数值为0x00,网络层管理实体将通过MLME_SET.request原语把MAC层的macAssociationPermit PIB 属性设置为FALSE,禁止节点处于允许设备加入网络的状态;如果PermitDuration参数值介于0x01和0xfe之间,网络层管理实体将通过MLME_SET.request原语把macAssociationPermit PIB属性设置为TRUE,并开启一个定时器,定时时间为PermitDuration,在这段时间内节点处于允许设备加入网络的状态,定时时间结束,网络层管理实体把MAC层的macAssociationPermit PIB属性设置为FALSE;如果PermitDuration参数的值为0xff,网络层管理实体将通过MLME_SET.request原语把macAssociationPermit PIB属性设置为TRUE,表示节点无限期处于允许设备加入网络的状态,除非有另外一个NLME_PERMIT_JOINING.request原语被发出。允许设备加入网络的流程如图2所示。

ZigBee的短距离无线网络技术概述

ZigBee的短距离无线通信技术概述 摘要:近年来,各种无线通信技术迅猛发展,极大提高了人们的工作效率和 生活质量。然而,在日常生活中,我们仍然被各种电缆所束缚,能否在近距 离范围内实现各种设备之间的无线通信?纵观目前发展较成熟的几大无线通 信技术,往往比较复杂,不但耗费较多资源,成本也比较高,并不适用于短 距离无线通信的场合。蓝牙技术的出现使得短距离无线通信成为可能,但是 其协议较复杂、功耗高、成本高等特点不太适用于要求低成本、低功耗的工 业控制和家庭网络。本文介绍了一种复杂度、成本和功耗都很低的低速率短 距离无线接入技术——ZigBee。该技术主要针对低速率传感器网络而提出, 它能够满足小型化、低成本设备(如温度调节装置、照明控制器、环境检测 传感器等)的无线联网要求,能广泛地应用于工业、农业和日常生活中。 关键字:无线通信技术,zigbee 一、引言 “ZigBee”是什么?从字面上猜像是一种蜜蜂。因为“ZigBee”这个词由“Zig”和“Bee”两部分组成,“Zig”取自英文单词“zigzag”,意思是走“之”字形,“bee”英文是蜜蜂的意思,所以“ZigBee”就是跳着“之”字形舞的蜜蜂。不过,ZigBee并非是一种蜜蜂,事实上,它与蓝牙类似是一种新兴的短距离无线通信技术,国内也有人翻译成“紫蜂”。下面就让我们一起进入这只蜜蜂的世界,与蜂共舞吧! 这只蜜蜂的来头还是要从它的历史开始说起,早在上世纪末,就已经有人在考虑发展一种新的通信技术,用于传感控制应用(sensor and control),这个想法后来在IEEE 802.15工作组当中提出来,于是就成立了TG4工作组,并且制定了规范IEEE 802.15.4。但是IEEE 802的规范只专注于底层,要达到产品的互操作和兼容,还需要定义高层的规范,于是2002年ZigBee Alliance成立,正式有了“ZigBee”这个名词。两年之后,ZigBee的第一个规范ZigBee V1.0诞生,但这个规范推出的比较仓促,存在一些错误,并不实用。此后ZigBee Alliance 又经过两年的努力,推出了新的规范ZigBee 2006,这是一个比较完善的规范。据联盟最新的消息,今年年底将会发布更新版本的规范ZigBee 2007,这个版本增加了一些新的特性。

Step7-数据类型详细说明总结汇总

STEP7中的基本数据类型 ⑴位(BOOL) 位数据的数据类型为BOOL(布尔)型,在软件编程中BOOL变量的值1和0常用英语词TURE(真)和FALSE(假)来表示,对应二进制数中的“1”和“0”,常用于开关量的逻辑运算,存储空间为1位。 ⑵字节(BYTE) 字节数据长度为8位,数据格式为B#16#,B代表BYTE,表示数据长度为一个字节(8位),#16#表示十六进制,取值围为B#16#0~B#16#FF。 ⑶字(WORD) 字数据长度为16位,这种数据可采用4种方法进行描述。 二进制:二进制的格式为2#,如2#101,取值围为2#0~2#1111_1111_1111_1111,书写时每4位可用下划线隔开,也可直接表示为2#1。 十六进制:十六进制的格式为W#16#,W代表WORD,表示数据长度为16位,#16#表示十六进制,数据取值围为W#16#0~W#16#FFFF。 BCD码:BCD码的格式为C#,取值围为C#0~C#999。BCD码是用4位二进制表示1位十进制数,4位二进制中的0000~1001组合分别表示十进制中的0~9,4位二进制中的1010~1111组合放弃不用。BCD码的最高4位用来表示符号,十六位BCD码的取值围为-999~+999。在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。 无符号十进制数:无符号十进制数的格式为B#(×,×),取值围为B#(0,0)~B#(255,255),无符号十进制数是用十进制的0~255对应二进制数中的0000_0000~ 1111_1111(8位),16位二进制数就需要两个0~255的数来表示,例如: B#(12,254)=2#0000_1100_1111_1110 12 254 上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。例如,如果想得到二进制数00111,可以使用2#0000_1001_1000_0111,也可以使用W#16#987,还可以使用C#987或者B#(9,135)。在STEP7中,比较常用的是十六进制,即W#16#这种格式。 ⑷双字(DOUBLE WORD) 数据长度为32位,双字的数据格式与字的数据格式相同,也有4种方式,分别为: 二进制:取值围为2#0~2#1111_1111_1111_1111_1111_1111_1111_1111。 十六进制:取值围为DW#16#0~DW#16#FFFF_FFFF。 BCD码:取值围为C#0~C#9999999。 无符号十进制数:取值围为B#(0,0,0,0)~B#(255,255,255,255)。 ⑸整数(INT) 整数数据类型长度为16位,数据格式为带符号十进制数,16位中最高为符号位。正整数是以原码格式进行存储的,如+786,对应的二进制码为2#0000_0011_0001_0010,而负整数则表示为正整数的二进制补码,即对应正整数的二进制码取反后加1,例如负整数-786,对应的二进制码为2#1111_1100_1110_1110。将负零(1000_0000_0000_0000)定义为-32768因此取值围为-32768~32767。0表示正,1表示负。 ⑹双整数(DOUBLE INT) 双整数的数据类型长度为32位,数据格式为带符号十进制数,用L#表示双整数。双整数的二进制码与整数的换算方式一致,其取值围为L#-2147483648~L#2147483647。 ⑺实数(REAL也叫浮点数Float) 实数的数据类型长度为32位,是以IEEE浮点数格式转换为二进制数存储的,其取值围为±3.402823e+38~±1.1755494e-38。 实数用1.m×2E例如123.4可表示为1.234×102。 式中:指数E=e-127(1≤e≤254)为8位整数 符号位(S):S=0为正值S=1为负值 规定尾数的整数部分总是为1,只保留尾数的小数部分m(0~22位)

Zigbee组网实验之Sample App

Zigbee组网实验之Sample App https://www.360docs.net/doc/9a18659409.html,/ 佳杰科技开发套件,最便宜、最详细、最好的Zigbee开发套件。 1.实验设备: Q2530SB开发底板(V1.1以上版本)2块 RF2530N射频板2块 天线(非必要,影响传输距离)2根 SmartRF04EB仿真器带USB线和仿真器接头线1个 电池盒有电池一个(负责供电) 2.硬件连接说明 射频板RF2530N分别连接底板Q2530SB 仿真器USB线连接电脑和其中一块底板 电池盒连接另外一块底板、保证系统都正常供电 3.实验步骤及效果 1.打开实验代码:在路径Texas Instruments\ZStack-CC2530- 2. 3.0-1. 4.0\Projects\zstack\ Samples\SampleApp\CC2530DB下鼠标双击打开文件SampleApp.eww 2.在应用层APP文件夹中找到SampleApp.c文件,找到函数SampleApp_HandleKeys并双 击打开。 3.将函数中的代码做以下修改 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==0x20 ) { /* 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).

ZigBee网络拓扑结构显示

实验二ZigBee网络拓扑结构显示 【实验目的】 1、熟悉Qt编写程序的方法; 2、了解Qt显示ZigBee网络拓扑结构的工作原理; 【实验设备】 1、装有RedHat AS5系统或装有RedHat AS5虚拟机的PC机一台; 2、物联网开发设计平台一套; 【实验要求】 使用Qt为ZigBee网络编写拓扑结构; 1、编程要求:使用提供的API函数编写应用程序; 2、实现功能:构建ZigBee网络拓扑结构; 3、实验现象:显示网络的拓扑结构; 【实验原理】 本实验箱针对Qt下,将服务程序的API做了一定的封装,并提供了非常方便使用的接口函数,可以让用户在Qt环境下绘制Zigbee网络的拓扑结构。这些函数都被封装在一个叫做TopologyWidget的类中,它们的详细介绍如下: 【函数原型】void TopologyWidget::SetTopologyArea(const QString &ip, QScrollArea *area); 【功能】设置用来显示拓扑图的滚动区域控件 【参数】ip: 运行服务程序的网关(计算机)的IP地址area: 用来显示拓扑图的滚动区域控件【返回值】无 【头文件】使用本函数需要包含"topologywidget.h" 【函数原型】void TopologyWidget::UpdateTopologyArea(QScrollArea *area); 【功能】立即刷新滚动区域控件中的拓扑图 【参数】area: 用来显示拓扑图的滚动区域控件 【返回值】无 【头文件】使用本函数需要包含"topologywidget.h" 在实际应用中,用户需要首先在界面中放置一个,假设其名称为“scrollArea”,只需要在窗体的构造函数中,完成了setupUi的操作之后,调用TopologyWidget::SetTopologyArea函数即可使拓扑图显示在这个滚动区域中,参考下面的代码。 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); // 将界面中的scrollArea设置为用来显示拓扑图 TopologyWidget::SetTopologyArea("127.0.0.1", ui->scrollArea); } 【实验步骤】 1.双击打开桌面上的VMware Player。如图 2.1所示;

zigbee的系统结构和组网方式

简介 ZigBee是一种新兴的短距离、低功耗、低数据传输速率的无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术方案。ZigBee是建立在IEEE802.15.4标准之上,它确定了可以在不同制造商之间共享的应用纲要。IEEE802.15.4标准定义了ZigBee协议的PHY层和MAC层。PHY层规范确定了在2.4GHz(全球通用的ISM频段)以250kb/s的基准传输率工作的低功耗展频无线电以及另有一些以更低数据传输率工作的915MHz(北美的ISM频段)和868MHz(欧洲的ISM频段)的实体层规范。MAC层规范定义了在同一区域工作的多个IEEE802.15.4无线电信号如何共享空中通道。 为了促进ZigBee技术的发展,2001年8月成立了ZigBee联盟,2002年下半年,英国Invensys公司、日本三菱电子公司、美国摩托罗拉公司以及荷兰飞利浦半导体公司四大巨头共同宣布,它们将加入“ZigBee联盟”,目前该联盟已经有150多家成员,以研发名为ZigBee的下一代无线通信标准。 正如前面所述,ZigBee不仅仅只是802.15.4的名字,IEEE802.15.4仅处理低级MAC层和PHY层协议,所以ZigBee联盟对其网络层协议和API进行了标准化,还开发了安全层,以保证这种便携设备不会意外泄漏其标识。 ZigBee的组成和构网方式 1.FFD和RFD 利用zigbee技术组件的无线个人区域网(WPAN)是一种低速率的无线个人区域网(LR WPAN),这种低速率个人区域网的网络结构简单、成本低廉,具有有限的功率和灵活的吞 吐量。 在一个LR WPAN网络中,可同时存在两种不同类型的设备,一种是具有完整功能的设备(FFD),另一种是简化功能的设备(RFD)。 在网络中,FFD通常有3中工作状态:(1)作为个人区域网络(PAN)的主协调器;(2) 作为一个普通协调器;(3)作为一个终端设备。FFD可以同时和多个RFD或其他FFD通信。 而RFD则只用一种工作状态即作为一个终端设备,并且一个RFD只能和一个FFD通信。2.ZigBee的体系结构 ZigBee体系结构主要有物理(PHY)层、媒体接入控制(MAC)层、网络/安全层以及应用框架层构成,如下图所示:

Zigbee组网流程

1、网络形成 组网开始时,网络层首先向MAC层请求分配协议所规定的信道,或者由PHY层进行有效信道扫描,网络层管理实体等待信道扫描结果,然后根据扫描结果选择可允许能量水平的信道。找到合适的信道后,为这个新的网络选择一个个域网标识符(PANID)。PANID可由网络形成请求时指定,也可以随机选择一个PANID(除广播PANID固定为0xFFFF外),PANID 在所选信道中应该是唯一的。PANID一旦选定,无线网关将选择16位网络地址0x0000作为自身短地址,同时进行相关设置。完成设置后,通过MAC层发出网络启动请求,返回网络形成状态。 2、网络维护 网络维护网络维护主要包括设备加入网络和离开网络过程。当网络形成后,通过网络管理实体设定MAC层连接许可标志来判断是否允许其他设备加设备初始化为协调器入网络。加入方式有联合方式和直接方式,在协议实现中采取直接加入网络方式。这种方式下由待加入的设备发送请求加入信标帧,网关接收到后,网络管理实体首先判断这个设备是否已存在于网络。存在,则使其加入网络;若不存在,则向设备发送信标帧,为这个设备分配一个网络中唯一的16位的短地址。这里的信标帧是由网关无线协议MAC层生成作为PHY层载荷,它包含PANID、加入时隙分配等信息。网内设备也可以请求断开网络。当网关收到设备断

开连接请求后,MAC层向网络层发送报告,开始执行断开流程,从设备列表中删除该设备相关信息。 网络层上层请求网络层发现当前在运行的网络: NLME NETWORK DISCOVERY.request(ScanChannels,ScanDuration) ScanChannels:高5为保留(b27~b31),低27为分别表示27个有效信道,该位为1,表示扫描;为0不扫描。 ScanDuration:扫描时间,aBaseSuperframeDuration*(2^n+1),n为ScanDuration值。 网络层在家收到该原语后,将通过检查ScanChannels参数发现网络,如果该设备为一个FFD 设备,则执行主动的扫描。如果为一个RFD设备,倘若设备实现主动扫描,那么他会执行主动的扫描,否则 一个合适的父节点需要满足三个条件:匹配的PAN标志符、链路成本最大为3、允许连接,为了寻找合适的父节点,NLME_JOIN.request原语请求网络层搜索它的邻居表,如果邻居表中不存在这样的父节点则通知上层,如果存在多个合适的父节点则选择具有最小深度的父节点,如果存在多个具有最小深度的合适的父节点则随机选择一个父节点。

ZigBee技术发展及其特点

第2章 ZigBee技术及协议分析 ZigBee技术的发展及其特点]1[ 长期以来,低成本、短距离、低传输率、低功率的无线通讯市场一直存在着。蓝牙(Bluetooth)技术的出现曾让玩具制造商、家庭自动化控制以及工业控制等业界从业者兴奋不已,尽管蓝牙技术有很多优点,但是高昂的价格和其存在的技术缺陷严重影响了这些厂商的使用意愿。对于工业控制、家庭自动化控制等领域而言,蓝牙技术过于复杂、功耗过大、距离近、组网规模达不到应用要求等,而工业自动化等领域对无线通信的需求越来越大。因此,经过人们的努力,于2004年正式推出了ZigBee协议规范。 “HomeRF Lite” 2004年(又称ZigBee2004)诞生,它是ZigBee的第一个规范,这使得ZigBee有了自己的发展基本标准。但是由于推出仓促存在很多不完善的地方,因此在2006年进行了标准的修订,推出了(又称ZigBee2006),但是该协议与是不兼容的。相较于做了很多修改,但是仍无法达到最初的设想,于是在2007年再次修订(称为ZigBee2007/PRO),能够兼容之前的ZigBee2006,并且加入了ZigBee PRO部分,此时ZigBee联盟更专注于以下三种应用类型的拓展:家庭自动化(HA)、建筑/商业大楼自动化(BA)以及先进抄表基础建设(AMI)。 随着ZigBee标准的完善以及各软件以及硬件厂商的不断努力,用于ZigBee开发的软硬件正趋于完善,ZigBee技术的实用化不断推进,其使用领域不断拓展。使ZigBee 技术在2004年就被列为当今世界发展最快、市场前景最广阔的十大高新技术之一。 ZigBee技术有以下几个方面的特点: (1)短时延。通信时延以及休眠状态激活时延都很短,通常在15ms至30ms间。 (2)高可靠性。采用了CSMA/CA(碰撞避免)机制,而且为需要固定带宽的通信业务预留了专用的时隙,从而避免了发送数据时可能出现的竞争和冲突;节点模块间有自动动态组网功能,信息在整个ZigBee网络中是通过自动路由方式传输的,这样可以保证信息的可靠传输。 (3)低数据率。数据传输率在10kb/s到250kb/s之间。 (4)低功耗。两节五号电池即可使用6个月至2年,免去了经常更换电池或者是充电的麻烦。 (5)低成本。ZigBee的低数据传输率,简单的协议,都大大降低了成本,而且ZigBee

ZigBee的工作原理

ZigBee 的工作原理_ZigBee 组网技术ZigBee 是一种高可靠的无线数传网络,类似于CDMA和GSM网络。ZigBee 数传模块类 似于移动网络基站。通讯距离从标准的75m到几百米、几公里,并且支持无限扩展。Zigbee 技术特点主要有低功耗、低成本、时延短、网络容量大、工作频段灵活、低速率、安全的数据传输等。其中低功耗是Zigbee 技术最重要的特点。由于Zigbee 的传输速率相对较低发射功率较小,使得Zig bee 设备很省电,这是Zigbee 技术能够广泛应用的基石。 ZigBee 协议适应无线传感器的低花费、低能量、高容错性等的要求。Zigbee 的基础是IEEE 802.15.4 。但IEEE仅处理低级MAC层和物理层协议,因此Zigbee 联盟扩展了IEEE,对其网络层协议和API 进行了标准化。Zigbee 是一种新兴的短距离、低速率的无线网络技术。主要用于近距离无线连接。它有自己的协议标准,在数千个微小的传感器之间相互协调实现通信。 ZigBee 组网概述 组建一个完整的zigbee 网状网络包括两个步骤:网络初始化、节点加入网络。其中节点加入网络又包括两个步骤:通过与协调器连接入网和通过已有父节点入网。 ZigBee 网络初始化预备 Zigbee 网络的建立是由网络协调器发起的,任何一个zigbee 节点要组建一个网络必须要满足以下两点要求: (1)节点是FFD节点,具备zigbee 协调器的能力; (2)节点还没有与其他网络连接,当节点已经与其他网络连接时,此节点只能作为该网络的子节点,因为一个zigbee 网络中有且只有一个网络协调器。 FFD:Full Func TIon Device 全功能节点 RFD:Reduced Func TI onDevice 半功能节点

C语言中数据类型

C语言中数据类型(整形,浮点型,字符型,无值型)2007年04月19日星期四上午11:29整型(int) 一、整型数说明 加上不同的修饰符, 整型数有以下几种类型; signed short int 有符号短整型数说明。简写为short或int, 字长为2字节共16位二进制数, 数的范围是-32768~32767。 signed long int 有符号长整型数说明。简写为long, 字长为4字节共32位二进制数, 数的范围是-2147483648~2147483647。 unsigned short int 无符号短整型数说明。简写为unsigned int, 字长为2字节共16位二进制数, 数的范围是0~65535。 unsigned long int 无符号长整型数说明。简写为unsigned long, 字长为4字节共32位二进制数, 数的范围是0~4294967295。 二、整型变量定义 可以用下列语句定义整型变量 int a, b; /*a、b被定义为有符号短整型变量*/ unsigned long c; /*c被定义为无符号长整型变量*/ 三、整型常数表示 按不同的进制区分, 整型常数有三种表示方法: 十进制数: 以非0开始的数 如:220, -560, 45900 八进制数: 以0开始的数 如:06; 0106, 05788 十六进制数:以0X或0x开始的数 如:0X0D, 0XFF, 0x4e 另外, 可在整型常数后添加一个"L"或"l"字母表示该数为长整型数, 如22L,0773L, 0Xae4l。 浮点型(float) 一、浮点数说明 Turbo C中有以下两种类型的浮点数: float 单浮点数。字长为4 个字节共32 位二进制数, 数的范围是3.4x10-38E~3.4x10+38E。double 双浮点数。字长为8个字节共64 位二进制数, 数的范围是1.7x10-308E~1.7x10+308E。 说明: 浮点数均为有符号浮点数, 没有无符号浮点数。 二、浮点型变量定义 可以用下列语句定义浮点型变量: float a, f; /*a, f被定义为单浮点型变量*/ double b; /*b被定义为双浮点型变量*/

SQL数据库字段类型说明

SQL数据库字段类型说明

1)char、varchar、text和nchar、nvarchar、ntext char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。 后面三种数据类型和前面的相比,从名称上看只是多了个字母n,它表示存储的是Unicode数据类型的字符。写过程序的朋友对Unicode应该很了解。字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar 最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。 (2)datetime和smalldatetime datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。 smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。 (3)bitint、int、smallint、tinyint和bit bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。 int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。 tinyint:从0到255的整数数据。 bit:1或0的整数数据。 (4)decimal和numeric 这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p 之间的值,默认小数位数是0。 (5)float和real float:从-1.79^308到1.79^308之间的浮点数字数据。 real:从-3.40^38到3.40^38之间的浮点数字数据。在SQL Server中,real 的同义词为float(24)。

Zigbee组网程序

SappleApp.c #include "OSAL.h" #include "ZGlobals.h" #include "AF.h" #include "aps_groups.h" #include "ZDApp.h" #include "SampleApp.h" #include "SampleAppHw.h" #include "OnBoard.h" /* HAL */ #include "hal_lcd.h" #include "hal_led.h" #include "hal_key.h" #include "string.h" #include "MT_UART.h" //#include "Lcd128X64.h" #include "UtOled.h" #include "sensor.h" #include "HAL_ADC.h" #include "exsensor.h" #include "lcd128_64.h" 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; };

ZigBee的工作原理

ZigBee得工作原理_ZigBee组网技术ZigBee就是一种高可靠得无线数传网络,类似于CDMA与GSM网络。ZigBee数传模块类似于移动网络基站。通讯距离从标准得75m到几百米、几公里,并且支持无限扩展。Zig bee技术特点主要有低功耗、低成本、时延短、网络容量大、工作频段灵活、低速率、安全得数据传输等。其中低功耗就是Zigbee技术最重要得特点。由于 Zigbee得传输速率相对较低发射功率较小,使得Zig bee设备很省电,这就是 Zigbee技术能够广泛应用得基石。 ZigBee协议适应无线传感器得低花费、低能量、高容错性等得要求。Zigbee 得基础就是IEEE 802.15。4、但IEEE仅处理低级MAC层与物理层协议,因此Zigbee联盟扩展了IEEE,对其网络层协议与API进行了标准化。Zigbee就是一种新兴得短距离、低速率得无线网络技术。主要用于近距离无线连接。它有自己得协议标准,在数千个微小得传感器之间相互协调实现通信。 ZigBee组网概述 组建一个完整得zigbee网状网络包括两个步骤:网络初始化、节点加入网络。其中节点加入网络又包括两个步骤:通过与协调器连接入网与通过已有父节点入网。 ZigBee网络初始化预备 Zigbee网络得建立就是由网络协调器发起得,任何一个zigbee节点要组建一个网络必须要满足以下两点要求: (1)节点就是FFD节点,具备zigbee协调器得能力; (2)节点还没有与其她网络连接,当节点已经与其她网络连接时,此节点只能作为该网络得子节点,因为一个zigbee网络中有且只有一个网络协调器。 FFD:Full Func TI on Device 全功能节点 RFD:Reduced FuncTI onDevice半功能节点

数据类型

数据类型 标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、数组等等。C语言是大小字敏感的一种高级语言,如果我们要定义一个定时器1,可以写做"Timer1",如果程序中有"TIMER1",那么这两个是完全不同定义的标识符。标识符由字符串,数字和下划线等组成,注意的是第一个字符必须是字母或下划线,如"1Timer"是错误的,编译时便会有错误提示。有些编译系统专用的标识符是以下划线开头,所以一般不要以下划线开头命名标识符。标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。在C51编译器中,只支持标识符的前32位为有效标识,一般情况下也足够用了,除非你要写天书:P。 关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键资亦同。在KEIL uVision2中的关键字除了有ANSI C标准的3 2个关键字外还根据51单片机的特点扩展了相关的关键字。其实在KEIL uVision2的文本编辑器中编写C程序,系统可以把保留字以不同颜色显示,缺省颜色为天蓝色。(标准和扩展关键字请看附录一中的附表1-1和附表1-2) 先看表4-1,表中列出了KEIL uVision2 C51编译器所支持的数据类型。在标准C语言中基本的数据类型为char,int,short,long,float和double,而在C51编译器中int和s hort相同,float和double相同,这里就不列出说明了。下面来看看它们的具体定义:数据类型长度值域 unsigned char 单字节0~255 signed char 单字节-128~+127 unsigned int 双字节0~65535 signed int 双字节-32768~+32767

数据库设计基本数据类型说明

一. 基本类型 数据库设计,在数据库设计文档中,统一用内存类型作为数据库库设计文档,至于内存类型和数据库之间的对应关系统一由工具来处理 数据库设计文档类型 现用 原用 Orcal 内存类型 size SQL Server Oracle varchar varchar VARCHAR2 String 需要填写长度 4000以内 varchar VARCHAR2 Smallint 2 smallint NUMBER(2,0) bigint Integer 4 int NUMBER(4,0) bit decimal NUMBER Boolean tinyint NUMBER(1,0) float Float 需要填写长度 float NUMBER() int NUMBERIC money Currency 默认4位 money NUMBER(19,4) real DateTime datetime date smallint Blob image BLOB tinyint Guid Unique.. VARCHAR2(40) smallmoney Int64 8 Int64 NUMBER(8,0) numeric datetime datetime date SmallDatetime varchar(40) uniqueidentifier varchar2(40) image image BLOB S U N L I G H T

二.表结构通用字段 类别字段说明 台帐单据objid 单据ID EnterCode 企业Code BrandCode 品牌Code 其他业务字 段 静态单据主单 objid 单据ID Code 单据编号 EnterCode 企业Code BrandCode 品牌Code ModifyCode 最近更新人Code ModifyTime 更新时间 Status 状态 Verinfo 版本号 业务字段 静态单据日志表 objid 单据ID parentid 父单据 LogData 更新日志 ModifyCode 最近更新人 Code S U N L I G H T

ZigBee源码程序及解释

协议栈无线透传编程原理: 第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络 //第一步:Z-Stack 由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统 int main( void ) { ....... // Initialize the operating system osal_init_system(); //第二步,操作系统初始化...... osal_start_system(); //初始化完系统任务事件后,正式开始执行操作系统 ...... } //第二步,进入 osal_init_system()函数,执行操作系统初始化 uint8 osal_init_system( void ) //初始化操作系统,其中最重要的是,初始化操作系统的任务 { // Initialize the Memory Allocation System osal_mem_init(); // Initialize the message queue osal_qHead = NULL; // Initialize the timers osalTimerInit(); // Initialize the Power Management System osal_pwrmgr_init(); // Initialize the system tasks. osalInitTasks(); //第三步,执行操作系统任务初始化函数 // Setup efficient search for the first free block of heap. osal_mem_kick(); return ( SUCCESS ); } //第三步,进入osalInitTasks()函数,执行操作系统任务初始化 void osalInitTasks( void ) //第三步,初始化操作系统任务 { uint8 taskID = 0; tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));

Zigbee网络设备启动流程—协调器(自启动模式)

使用的协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.1 Zigbee网络设备启动流程—协调器(自启动模式)—以SampleApp的协调器为例. 1、协调器预编译信息 通过project->options->c/c++compiler->extraOptions可以看到协调器所带的配置文件为: -f $PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wCoord.cfg -f $PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wConfig.cfg 即编译了ZDO_COORDINATOR和RTR_NWK. 通过project->options->c/c++compiler->reprocessor->Defined symbols可以看到协调器预编译包含了: CC2430EB; ZTOOL_P1; MT_TASK; LCD_SUPPORTED=DEBUG; MANAGED_SCAN 没有编译HOLD_AUTO_START和SOFT_START. 2、具体流程 main()->osal_init_system()->osalInitTasks()->ZDApp_Init() 进入ZDApp_Init()函数: ************************************** void ZDApp_Init( byte task_id ) { uint8 capabilities; // Save the task ID ZDAppTaskID = task_id; // Initialize the ZDO global device short address storage ZDAppNwkAddr.addrMode = Addr16Bit; ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR; //0xFFFE (void)NLME_GetExtAddr(); // Load the saveExtAddr pointer. // Check for manual"Hold Auto Start" //检测到有手工设置SW_1则会设置devState = DEV_HOLD,从而避开网络初始化 ZDAppCheckForHoldKey(); // Initialize ZDO items and setup the device - type of device to create. ZDO_Init(); //通过判断预编译来开启一些函数功能 // Register the endpoint description with the AF // This task doesn't have a Simple description, but we still need // to register the endpoint. afRegister( (endPointDesc_t *)&ZDApp_epDesc ); #if defined( ZDO_USERDESC_RESPONSE ) ZDApp_InitUserDesc(); #endif // ZDO_USERDESC_RESPONSE // set broadcast address mask to support broadcast filtering NLME_GetRequest(nwkCapabilityInfo, 0, &capabilities); NLME_SetBroadcastFilter( capabilities ); // Start the device? if ( devState != DEV_HOLD ) { ZDOInitDevice( 0 ); }

相关文档
最新文档