在开始之前,先引用一下我在今年的 Windows Embedded 正文比赛上的文章 -“ 移动设备中ZigBee接口的实现 ” 。该文章只是介绍了框架性的概念和实现方式,并没有给出过多的细节。在接下去的时间里,我将给出具体的实现原理、方法和步骤,希望能对园子里的朋友有所帮助。
ZigBee是一种短距离、低速率无线网络技术,是一种介于RFID和Bluetooth之间的技术提案。ZigBee一般采用IEEE 802.15.4收发器与ZigBee协议栈的组合,在数千个微小的节点之间相互协调实现通信。这些节点只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另一个节点,所以它们的通信效率非常高。因此,ZigBee在传感器网络、智能家居、工业自动化等领域有广泛的应用。市场研究公司NSR曾发布报告指出,首批具备ZigBee功能的产品将于2006年第一季在北美、欧洲和亚太地区展开,该机构并预估,到2010年,全球将可望部署5.8亿个ZigBee组件,成长非常快速。同样,市调机构In-Stat也曾在2005年发布新闻指出,五年内,ZigBee成长将超过200%。
在这样的背景之下,很多公司都开始了ZigBee产业化的道路。首当其冲的莫过于Freescale、TI等大公司,TI是收购了chipcon才开始做ZigBee的。目前,我使用过这两家公司的片子,给我的感觉就是,现在这些硬件厂商做东西真是好,发布芯片的同时,给你一堆的参考资料。包括硬件设计(原理图、PCB)和嵌入式软件设计,甚至是生产工艺和流程中的注意事项。所有的这些,都大大降低了入门的门槛,缩短了产品开发周期,从而加速了产品的应用。
目前,由于各家使用ZigBee技术的设备商采用的应用协议不同,所以目前市场上很少通用的测试设备,执行包括信道检测,数据监听,发送功率等功能。对于ZigBee的测试,很多情况下都是移动的,固定的比较少。所以,我就想到了Windows Mobile设备,既有移动性,又有强大的处理功能,于是我就想到了在Windows Mobile设备上加ZigBee模块的想法。
那么,首先我们来考虑系统的架构吧。如图1所示,按照功能,系统可以分成ZigBee模块和移动设备这两个部分,它们通过串口进行通信。目前,支持串口通信的Windows Mobile设备还是比较多的,特别是一些工业用的PDA,在HP、Dopod等产品中也可以找到。它们执行不同的功能,ZigBee模块负责IEEE 802.15.4信号的发送和接收,移动设备负责数据的处理,并向用户提供有好的UI。
图1系统组成框图
目标系统的功能如下:
1. 信道检测。通过扫描,完成ZigBee技术2.4GHz频段16个信道的状态检测,并返回给UI进行显示。
2. 发送/接收信道设置。用户通过UI给ZigBee模块发送指令,使之通过设定的信道来发送和接收数据。
3. 发送/接收数据。用户可以用文本方式或者HEX方式发送数据,并且可以用一定间隔进行连续发送。
4. 发送功率设置。用户发送数据时,通过UI给ZigBee模块发送指令,可以设定发送的功率大小。
图1中使用的ZigBee实现方案是比较早的一种,是Freescale的HCS08GB60系列CPU和MC13192系列的IEEE 802.15.4 收发器。目前,Freescale已经推出了单芯片ZigBee,即在单个芯片上集成了MCU和IEEE 802.15.4 收发器,典型的如MC13213。开发起来也没有多大区别,只需要修改一下寄存器映射就可以。TI的片子,如CC2430,设计起来也比较方便,因为它也有串口可以和外部设备进行通信。
ZigBee网络可以使用Star、Mesh和Mesh-Tree这三种拓扑结构,具体可以参考图2.
图2 ZigBee网络拓扑结构模型
网络结构不同,其组网复杂程度也就不同。可想而知,Mesh网和Mesh-Tree网肯定会比Star网复杂很多。生产厂商也会根据客户的需求,进行不同程度的支持。以Freescale来说,它提供的最简单的SMAC(Simple MAC)是免费的,但是可以说,这个源工程里面只提供了最简单的API,包括工作状态转换、信道选择、发送功率选择、时钟选择、信道能量和接收信号能量指示(RSSI)等等,没有路由、组网这么一说,你如果想实现,也可以,就得自己写。另外提供的Bee-Stack比较全面,但是是要收费的。
今天讲了一下系统的背景,啰嗦了一大堆和Windows Mobile关系不大的事情,希望大家谅解,明天继续吧。