加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 无线传输技术

IEEE 802.15.4/ZigBee无线通信协议应用

时间:2012-11-29  来源:123485.com  作者:9stone

    IEEE 802.15.4/ZigBee协议是一种新兴的短距离无线射频通信协议,可以工作在2.4GHz/868MHz/915MHz三个不同的频段。它与蓝牙同属于802.15(WPAN-wireless personal area networks)协议家族,具有低速、低成本、低功耗、低复杂度等特点。也正是由于ZigBee协议的这些特点,使其比蓝牙、Wi-Fi等更适合于那些对传输速率要求不高,而对资源、成本、功耗等有明确限制的应用场合。家居设备的智能组网和远程监控就是其中一个非常典型的应用领域。
    近年来,随着人民生活水平的提高,家居环境的远程监控已越来越成为人们的迫切需求。而随着计算机技术及通信技术等的迅猛发展使这一切不再是梦想,家庭内部家电及设备的组网已成为一种主流趋势。本文提出了基于IEEE 802.15.4/ZigBee协议的家居组网方式,并结合嵌入式Web技术设计并实现了家庭网关。

ZigBee无线通信协议
    WPAN(wireless personal area networks,802.15.x),即无线个人区域网允许在较小范围内的具有无线数据传输功能的器件或设备 ,通过标准的规范化协议组成网络,来进行无线数据通信。其中IEEE802.15.1规范就是我们熟悉的蓝牙技术的基础。而IEEE802.15.4/ZigBee协议是无线个人区域网(WPAN)的低速分支。它采用直列展频技术DSSS,传输距离最远可达100m,传输速率在20kbit/s-250kbit/s。可适用于各种自动控制和远程控制领域. 以在某些应用场合取代传统的有线方式。

ZigBee的协议架构
    ZigBee协议与其他网络通信协议一样采用了分层模型,对各层所实现的功能和在整个协议中所起的作用做出了明确的划分。ZigBee的协议架构大致如表1所列。
 
    其中网络层及以上部分由ZigBee联盟负责制定,其余部分由IEEE802.15.4规范完成。

现行的ZigBee解决方案
    ZigBee联盟自成立以来短短3年多的时间. 已经吸引了150多家全球知名企业的支持和加入。各大IC厂商也纷纷推出自己的ZigBee解决方案,芯片方面主要有: TI,Freescale,MicroChip,Ember。Jennic。Chipcon (已被TI收购)等。目前甚至有单芯片(将MCU和射频收发器集成在一块芯片中)的ZigBee SOC解决方案。协议方面主要有Figure8的Z-stack和Microchip ZigBee协议栈等。可以说选择的余地还是比较大的。

ZigBee协议研究
MicroChip的ZigBee协议栈
    本文参考和使用的MicroChip ZigBee协议栈是免费提供并且是开放源代码的。目前最新的版本是3.5版。本文使用3.3版,它支持Chipcon 的CC2420 和UBEC 的UC2400两种射频收发器芯片。它并不支持ZigBee1.0规范的所有功能,但MicroChip公司承诺会在今后的版本中去除这些限制。

嵌入式系统中的移植与实现
    MicroChip ZigBee协议栈是为PIC18F系列单片机设计开发的但在某些应用场合,如:家居环境的远程控制,需要实现更为复杂的功能,如: 基于Web的远程访问、协议转换等。处理能力相对较弱的8位或16位单片机已难以满足要求.此时就需要使用32位嵌入式系统来扮演网络协调器的角色。一种比较普遍的设计方法是仍然使用一块MCU作为无线模块的控制器,再通过串行接El实现与32位嵌入式系统的通信.传递数据并接收来自于32位系统的控制命令。这样做的好处是实现方便,缺点是过于冗余,缺乏灵活性,并发控制相对困难(除非自己设计串El驱动),对成本、体积、功耗等也有一定的影响。出于这种考虑.我们在32位嵌入式Linux环境下.在参考了MicroChip协议栈的基础上.设计并实现了ZigBee协议。本文将不具体涉及硬件的设计与实现。

方法
    协议的移植主要体现在对平台相关部分的改写或重写, 以及在Linux环境下的并发控制及性能优化上。包括:SPI接口、动态内存分配、固态存储、节拍控制等的改写或重写, 中断服务(ISR)与底半部(bottom half)的设计.
    应用程序接口、进程的适时睡眠与唤醒,守护进程等。其中动态内存分配、节拍控制等可以利用Linux操作系统的系统函数,实现较为方便。利用内核的内存分配和回收函数kmalloc和kfree可实现动态内存分配:利用全局节拍变量jiffies(Linux中称为系统“嘀哒”)改写节拍控制模块。SPI接口方面.本文采用S3C2410 ARM芯片,利用它内置的SPI控制器.可以方便地实现SPI功能。同时利用GPIO控制器实现其余I/O口的控制与中断采集。这些IO口包括CC2420的芯片使能Cs、电压调节器使能、RESET控制、CCA (信道空闲)检测、FIFOP中断,FIFO检测(用于判断溢出)、SFD中断。Linux下的ZigBee协议初始化及建立WPAN网络的程序流程如图1所示。

应用程序接口设计
    在MicroChip协议栈中应用程序接口被设计成API函数或宏定义.应用程序只要在代码中包含定义了这些函数或宏的头文件,在编译时就能自动链接形成一个完整的可执行程序。而在基于Linux的程序设计中,代码被分为内核态和用户态,只有内核态代码可以访问巾断 因ZigBee协议或驱动必须运行存内核态,而应用程序则处在用户态。应用程序在编译时不直接与协议提供的接El函数链接.而是通过ioctl系统调用实现访问。在驱动中定义一个Zigbee ioctl函数.在这个函数中具有不同参数的ioctl系统调用被分派到不同的接El函数中,实现不同的功能。例如为使应用程序可以使用发送键值对的接口函数.在zigbee ioctl中就应该有这样的语句:
case APLSendKVPDirect:
return
APSDE_DATA_request (
(MESSAGE_INFO *)arg);
    APSDE_DATA_request即为应用支持层(APS)提供的数据发送接口函数。此时应用程序必须以APLSendKVPDirect为参数进行ioctl系统调用。在zigbee_ioctl函数中还可根据应用的需要增加调用接口,为应用程序的编写提供方便。

ZigBee守护进程
    ZigBee协议栈中各个子层都有各一的任务函数,它们被设计成必须在应用中尽可能多地调用包括接收数据包、超时处理、数据转发等。这些函数在嵌人式Linux环境下同样被设计成由应用程序通过系统调用来访问。调用他们的应用程序扮演着守护进程的角色,由于这些函数被封装成一次系统调用.因此在单CPU环境下,尤需考虑竞态的发生。

家庭网关设计
    有了一个在嵌人式Linux环境下可以运行的ZigBee协议栈,我们就可以构建基于ZigBee的应用系统了 家庭网关是近年来实现家庭自动化的主要手段,它主要实现以下功能: (1)Internet接人; (2)协议转换; (3)家居设备的组网; (4)Web服务等。家居控制中的ZigBee网络拓扑通常采用星型结构.这已可满足大部分家庭的应用需要。系统结构图如图2所示。此外,在家庭网关上还可选择性地实现LCD接口,电话接口,短信接口等,以实现更为强大的功能.
    家庭网关接受来自远程客户端或通用遥控器的数据或控制命令。通过2.4GHz的无线微波将数据或命令转发至各智能家电或终端设备的接收器,以唤醒子控制器做出反应。为实现以上功能,系统还必需配备一个Web服务器。通过它所支持的CGI(通用网关接几)程序进行协议转换和执行业务逻辑的实现远程访问和控制。
    当然,作为一个完整的家庭网关系统还必须有必要的安全认证机制,CGI程序通过获取存储在本地数据库中的合法用户信息以之与当前用户进行比较, 以判断该用户的合法性。一个实现远程灯光控制的CGI程序的流程图大致如图3所示。

    本文讨论了IEEE802.15.4/ZigBee无线通信协议的技术特点, 并分析了MicroChip公司的ZigBee协议栈,捕述了将该协议栈移植到32位嵌人式Linux系统的方法。最后提出了构建基于ZigBee与嵌人式Web的家居远程监测与控制系统的方案。该方案利用无线微波作为通信媒介,省
却了布线的麻烦,有利于家居整体的美观与协调。鉴于家庭自动化是未来家庭的一大趋势,该系统方案具有较强的可行性和生命力。


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->无线传输技术
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门