ZigBee无线传感器毕业论文
开发环境将工程管理器、编辑器、8051 C/C++编译器、8051汇编器、链接器、管理工具和调试工具完全集成在一起,可以支持CC2430芯片的编程要求,为其提供配置文件。同时,支持TI的CC2430 SoC ZigBee开发套件的USB接口,通过嵌入SmartRF04Flash Programmer软件,可直接将程序下载至CC2430芯片中,方便程序下载与调试。
3.2.4 协议栈软件设计
硬件环境是网络组建的基础,协议栈以及应用程序的开发决定了网络最终的组成方式和效果。
本方案选择移植美国密西西比大学的精简ZigBee协议栈,借用其PHY层和MAC层,对ZigBee协议的网络层和应用层进行改进和开发。此精简协议栈的优点在于,它是针对学生学习和开发而设计的,功能简单,易学易用,并且具有良好的可扩展性。此协议栈支持CC2430,CC242芯片,是借鉴Microchip ZigBee协议栈所设计的,有较高的可靠性。
在各功能节点的协议栈程序设计时,协议栈采用统一编写的方式,用宏定义语句:#def、#ifdef、#else语句区别各功能节点在各协议层中的操作,这样的编写方式将协议栈看作统一的整体,方便移植。同时,我们所使用的IAR集成开发环境也支持这种协议架构。程序下载过程中,我们只需在开发环境配置中选择好要下载的节点功能是协调器、路由节点还是终端节点,就可以将节点功能所对应的程序载入硬件平台中。
3.3 数据采集系统组网设计
3.3.1 ZigBee星型网的组网设计与实现
星型网是一个辐射状系统,数据和网络命令都通过中心节点传输,如图3.2所示。在这种拓扑结构中,外围节点需要直接与中心节点无线连接,某个节点的冲突或者故障将会降低系统的可靠性。星型网络拓扑结构最大的优点是结构简单、很少有上层协议需要执行、设备成本低、较少的上层路由管理,星型网络中心节点承担绝大多数管理工作。缺点是:灵活性差,因为需要把每个终端节点放在中心节点的通信范围内,必然会限制无线网络的覆盖范围;而且,集中的信息涌向中心
17
ZigBee无线传感器毕业论文
节点,容易造成网络阻塞、丢包、性能下降等情况。
鉴于星型网的简单结构,我们首先从星型网入手,实现一个小型ZigBee星型网的组网,为之后的簇树网奠定连接基础。同时,由于我们的背景为环境监测,我们设定终端节点之间不通信,所有节点只与协调器进行数据传输。
由ZigBee的技术参数可知,理论上一个ZigBee单节点可以组成的网络规模为65535个节点,但是考虑到太大的网络会使网络的负担增大,反映速度变慢,业内一般推荐的星型网网络规模最大不会超过256个节点。根据我们的硬件组件,本方案所设计的星型网的规模为1个协调器和4个终端节点。下面我们将分别从协调器和终端节点两方面对星型网的组建进行设计。
E PC E C E E
E C:协调器 E:终端节点
图3.2 星型网拓扑图
(1)协调器的组网设计
在星型网络中协调器的任务为接受终端节点入网,并接收终端节点的传输数据,以下从这两个角度对协调器进行设计。
① 协调器接受终端节点的入网设计。
18
ZigBee无线传感器毕业论文
上电 初始化 N 收到信息? Y N 节点入网请求? Y 其他处理 加入邻居列表,分配网络地址 发送确认信息
图3.3 协调器接收终端节点入网设计流程
如前面所述,协调器所使用的信道以及PAN ID均为默认值。因此,协调器不必进行网络信道扫描等工作。如图3.3所示,协调器在初始化后进入网络监听等待状态,当收到子节点入网请求后,协调器为子节点分配网络地址,并建立邻居列表将子节点加入至邻居列表中,之后向子节点发送入网确认信息,建立连接。
协调器的初始化包括硬件配置初始化、外部接口初始化、协议栈软件的初始化,同时,还对协调器自身的网络配置进行初始化,如对信道号的确定、PAN ID的确定等等,具体配置参数如表3-1所示。
表3-1 协调器网络参数配置
参数名称 网络信道号 静态PAN ID 接收缓冲区大小 默认值 20 0x1234 1024 备注 11-26中任意值均可 0-0xFFFF中任意值 byte 协调器在记录终端节点时除了建立邻居列表外,还需建立地址映射表,如表3-2所示,对IEEE 64-bit长地址与网络16-bit短地址建立关联。作用在于方便节点对其他节点的辨认,因为在数据传输过程中,为了减小数据负载,一般采用16-bit网络短地址。
19
ZigBee无线传感器毕业论文
表3-2 地址映射表
节点序号 1 2 3 IEEE64位长地址 0x3701121314151617 0x0000111111000000 0x1111111111121111 PAN 16-bit短地址 0x0000 0x0001 0x059A ②协调器接收数据设计
如图3.4所示,协调器接收到终端节点的数据信息后,首先对数据信息进行数据包解析,在肯定该信息为数据信息后对信息负载进行提取,之后将获得的数据信息通过串口显示到计算机屏幕上。
收到信息 对信息包头进行解析 数据包? Y N 其他处理 N 接收? Y 数据信息提取 丢弃 串口显示
图3.4 协调器接受数据流程
对信息包头的解析在协议栈各层中自低而上层层进行,由MAC层一NWK层一APL层,每一层有各自的信息包头解析函数,按照各自的帧格式进行分解。MAC层和NWK层的帧格式在IEEE 802.15.4协议和ZigBee规范中有所规定,我们设计APL层的数据包头格式如表3-3所示。
表3-3 APL层数据包头格式
字节数:1 帧控制域 1 传输序列号 1 数据长度 变量 数据内容 (2)终端节点的网络设计
终端节点在网络组建中担任两项工作,发起加入协调器所在网络请求,向协
20
ZigBee无线传感器毕业论文
调器发送数据信息。下面我们将从这两方面进行设计:
①终端节点入网设计
如图3.5所示,终端节点上电初始化后,会向整个网络发送信标(beacon)请求,当收到信标响应后,节点再对发送信标响应的节点发送连接请求,如果连接请求得到的响应正确,则节点入网成功;否则,节点宣布入网失败。
②终端节点数据发送设计
我们设定终端节点只能与协调器进行通信,并且终端节点之间也不会通过协调器进行间接通信。设计一个数据发送函数,此函数负责应用层(APL)与下层之间的参数和数据传递,包括发送方式、16-bit目的地址、数据长度、数据内容和确认标识字。
在数据发送时,数据包自顶而下进行帧格式化,每一层负责为数据包添加各层的数据包头,最后,到PHY层将数据发送出去。如果确认标识字为FALSE,则节点不需等待目的节点的数据确认信息,直接返回硬件发射情况告知系统是否发送成功。
由于协议栈纷繁复杂,为了做到层次清楚,我们采用状态机的方式对协议栈的各个动作进行转换。使用服务调用的方式为协议栈传达指令,每一次的服务调用都会引起协议栈自顶而下的服务响应,但是每次协议栈只能进行一项服务,协议栈通过apsBusy()函数判断当前服务是否结束。
前面介绍了协调器和终端节点的设计方法,下面再介绍它们是怎样进行组网的实现的。
(1)协调器的组网实现
协调器通过aplFormNetwork()函数组织网络,函数启动NWK层的组网服务NWK FORM NETWORK,首先进行MAC层和PHY层的初始化,并建立邻居列表NeighborEntry和地址映射表AddressMap。然后,由于不需要扫描信道,系统会直接设置默认的信道号,并且对于协调器而言,也会直接设置其16-bit网络地址为默认0。之后,协调器将允许设备入网,监听网络情况,直至有节点加入。
21