公司擁有優秀的銷售團隊和專業的研發部門,不但在品牌、價格、供貨、服務等方面領先業界,而且可為客戶提供及時、可行的技術支持和整體設計服務,滿足不同客戶多層次需求。
ZigBee與XBee模塊概述
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計算。