ZigBee是给予无线通信标准的一个名称,基本上为工业应用而开发的。从历史角度来看,ZigBee改良早前称为“Home RF”的标准,该标准起初前景一片光明,可是因著竞争对手Wireless Fidelity(Wi-Fi)标准的成功,它就被废弃了。Home RF寿命如此短促,至少发人深醒,也教人忧虑,是否历史不断在重复之中。然而,可保证这个想法是莫须有的,因为ZigBee由主要的参与者如Freescale(此乃Motorola的子公司)、Honeywell、Philips、Microchip及Mitsubishi等所支援,并且联同大约一百家其他制造商组成名为“ZigBee Alliance”的财团。这财团也获得Microsoft创办人之一的Paul Allen的支持 ─ 最近在该财团投资数百万美元。
图5. XBee模块的内部方框图
图6. XBee一切功能就安放於这大小不足7立方厘米的封装内
ZigBee原是依据於IEEE 802.15.4标准,并且采用与Wi-Fi同一频带(2.4GHz),它有16个分开的频道,换言之在单一位置上可提供多达16个网络而不会互相干扰。最大数据传输速率为250Kb/s ─ 在100米范围内,相比於Wi-Fi的54Mb/s或BlueTooth的1MB/s,此数据速率实在很低了,可视之为ZigBee的弱点。可是,正如先前提到,这协议原意用作工业用途,在速度上不是主要考虑的。ZigBee是为满足低电流损耗和尤其是低成本需求而开发的。表1比较上述提到三种无线通信技术。
XBee模块
MaxStream是一家非常有名的无线通信元件制造商,在其最近的产品上加了一个很贴切的名称 ─ XBee,XBee是小型但不过是完备的ZigBee收发器(即接收器/发射器),它是双向操作,在意义上来讲它可交替地发射或接收数据(半双工式)。
MaxStream提供有两种版本;XBee和XBee PRO两版本都是有相同的功能和引脚兼容(查明名称“interchangeable”(可互换) ─ 图1),唯一的差异是发射功率,XBee为最大1mW,而XBee PRO则最大63mW。发射功率当然是一个重要因素,因为最终产品的距离就决定於它的身上,但这绝不是唯一你要考虑的事情。
另一项至少认为重要的考虑,发射功率高意味著电流损耗也大。1mW的发射功率经已花费大约45mA,而从天线辐射63mW出外就要从电源中转移可观的270mA,换言之勿妄想以电池来供电给电路 ─ 你想要的只是一个无线模块罢了!
进一步考虑的是要符合法定的需求,最大辐射功率是由使用者当地的法律制定,在欧洲的应用限制为10mW。为要令它可以符合这个要求,MaxStream已在XBee内实行一个配置参数,可用来设定发射功率。
各位如小心察验本文附随的照片时,应见到XBee带有三种不同类型的天线(图2)。
1. 整合於芯片内里,在这情况下辐射能量实际是非定向。
2. 备有天线插座,供连接外部天线。
3. 整合有垂直(鞭型)天线,给予比选择1有更佳的方向特性。
软件
低成本的XBee模块很容易经标准串行接口连接,譬如常见於微控制器的UART或PC上的COM接口(RS232),在115,200 baud的最高速率上传输,可是,XBee是由3.3V电源操作,而并非像大多数数字电路的5V电源,正如在图3的方框图上所见,换言之万不能只将“正常”数字信号施加至XBee输入去,所以两类逻辑之间作直接相连是不可行的,在後面再有深入讲述这一方面。
除此以外,你不需有使用该模块的任何特殊知识,所以无须查考ZigBee协议才去开始,模块为你做好每一样事情,它是一个“智能”系统,即是说模块含有可接受来自使用者命令的控制逻辑。这些命令乃由制造商规定。
倘若你开始恐惧事情发展下去看越来越复杂,任何人只要对微控制器编程略有经验都不会为此而皱眉头,查实该等命令只是ASCII码(字符串),就好像你见到的调制解调器命令一样,发送命令给XBee就如数据一样。而这是有小小的软件告知两者谁是谁,工作情况如下。
在你可以发出一个命令之前,须将XBee置於“等待命令”状态。要使它进入此状态,便要给它一串三个+字符(hex 2B),即文字上是“+++”,之後,XBee期待收到一个以Hayes格式的命令,这命令总是以ASCII码的“AT”(此代表“attention”),紧跟著的才是实际命令及任何命令参数(如有),命令串由一个Carriage Return(CR)回车字符作终结。图4举出一个例子,XBee模块执行该命令,然後报告命令是否成功处理,如一切已按意旨去做,XBee便回应“OK”;否则,会从模块收到一个错误信息。
MaxStream也提供一个名为X-CTU的简短程序,令到一切事情甚至更加方便,这程序在MaxStream网均供免费下载,可用它来配置XBee模块的所有参数,不过先要将XBee模块连接至你PC的COM接口(因信号电平不同须经适配器),另外亦可用X-CTU来测试模块和将之升级。
软件缓衡器
无线链路上总是半双工式通信,用一条天线作发射或接收,但非两者在同一时间。不过,你的应用是可经由串行链路往你界面上的UART便能达至同时发射和接收(全双工模式)。图5揭示该原理。
XBee模块内有发射(RF TX)缓冲器和接收(RF RX)缓冲器,每一缓冲器提供100bytes暂时停靠的地方,数据可以从两个方面同时抵达 ─ 发射数据来自UART及接收数据来自RF链路经天线而来。当天线正在接收数据之时,它不能同一时间发射数据,因为这理由,将要发射的数据唯有暂时停靠在发射缓冲器里,而收到数据就堆放在接收缓冲器内。只要RF端数据流停止,XBee模块将天线从接收切换至发射,并且腾出发射缓冲器,把其内含数据发送到大气去,与此同时,UART倒空接收缓冲器,把内里的数据送交你的应用设备。
这虽是一个单纯系统,但不是完全完美。应用上如有大量数据要发送时就很容易令发射缓冲器过载,关於这个问题MaxStream提供一个“满载”警告。只要应用设备填入数据至已届发射缓冲器最後的17bytes(换言之有83 bytes正等待发送),第12脚即转高位,告知系统须暂时停止注入数据。发射缓冲器内容已减少至66bytes之後,第12脚再转低。这可视为一类的软件迟滞。
在实践中的XBee
现在是时候要讲讲电路了,谨慎的设计师一般以其电路进行初步研究开始,而大多数设计师宁愿从一些经已凑效的电路来取得灵感。
在制造商网址四周搜寻会发现有大量、有系统的资料,可找到你心目中的概念,又或者找到你心中问题的答案。网址∶www.maxstream.net/support/knowledgebase/full-list.php
图5也示出XBee模块的内部方框图,此是组成特定应用的核芯,模块有20只引脚(图6),也许你立时想到是数字IC所采用的DIL封装,这就错了,由於模块非常细小的关系,引脚分隔只有2毫米,所以它们不适合於安放在IC插座上。幸而,任何人想使模块可以更换,亦有适合的PCB连接器供使用。
为求安全起见,再次提醒,最高电源电压是3.3V,超过这电压结果只会令你珍贵的XBee永久死亡。电源电压须经由100nF电容器退耦合,并尽可能靠近第1和10两脚之间。
第2及3两脚提供通信,方向由矢号指示。有些引脚记有星号(*),此是厂方保留作某些用途,但仍未有公布。当公布时,可从MaxStream网址下载,通过刷新固件把XBee升级。至於目前只有将这些引脚不作连接,与记有NC(not connected)的引脚同一处理。
第5脚更重要∶逻辑1(3.3V)启动XBee模块,而逻辑0禁止它。从第5脚接10kΩ上拉电阻至第1脚可保证模块在接通电源之时即被启动。至於第9脚有多种功用选择,由内部参数决定当中那一个被使用,最重要的功能是休眠状态,只要内部SM寄存器不是在逻辑0模块便在沉睡之中。
第7脚提供脉宽调制(PWM)信号,此是与最近收到的RF信号成比例的,它有8.32ms时期,相当於120Hz,LED光柱及其他光效应可将之转换成模拟信号,并利用它作为一个信号强度指示灯(只需一个RC网路和一个LM 3914)。这亦可以由软件去做,因为最近收到的信号强度存放於内部DB参数上,正如其名称所指,这是给予dBm RF单位的数量(相对於1mW的分贝数),可用以下的方程式作dBm RF与mW(P)之间的对换;
dBm = 10 log P [dB]
或朝相反方向
P = 10(dBm/10) [mW]
试举例∶0dBm = 1mW,10dbm = 10mW,20dBm = 100mW,30dBm = 1W。所有例子皆针对RF计算。