XBee模組通訊實驗(二):認識XBee

XBee是Digi公司生產,支援802.15.4或者ZigBee通訊協定的微控制器模組。

筆者借用的是XBee S1,它和S2的主要差異:

  • S1支援Digi公司自訂的802.15.4,點對點網路通訊協定。
  • S2支援ZigBee Mesh Network(網狀網路)協定。

註:多數的S1都可以寫入DigiMesh韌體來支援網狀網路,詳請參閱Digi公司的線上文件;S1和S2的詳細比較,請參閱Digi公司的這份線上文件

XBee的通訊頻道、PAN和位址

就像每個電視台都有一個頻道編號,收視戶必須轉到對應的頻道才能收看節目,同一網路中的每個XBee裝置,都必須調到相同的頻道,才能接收到彼此的訊息。實際上,每個XBee都要設置三個網路相關參數:

  • 頻道:設定XBee模組之間的無線通訊操作頻道。頻道的數值範圍(註:0x代表該數字為16進位格式):
    • 0x0B~0x1A(XBee,如:S1和S2)
    • 0x0C~0x17(XBee Pro)
  • PAN識別碼:代表Personal Area Network(個人區域網路),相當於在同一個通訊頻道中分組交談。PAN值範圍:0~0xFFFF。
  • 位址:有64位元(MAC位址)和16位元(自訂位址)兩種格式。MAC位址相當於XBee的出廠序號,標示在裝置後面,每個都不一樣:

XBee S1模組的MAC位址(出廠序號)

XBee的MAC位址分成高(High)低(Low)兩部份,凡是Digi公司生產的XBee裝置,其高位址一定是0013A200;低位址則是Digi公司設定的唯一值,如上圖的40CA509A。

頻道、PAN識別碼和位址的關係如下圖:

頻道、PAN識別碼和位址的關係圖

註:「頻道」也代表無線電的運作頻率,802.15.4協定的中心頻率計算式為:

2.405GHz + (頻道值 – 11) x 5 MHz

使用序列轉換板連接XBee

XBee模組本身具有TTL形式的序列輸出入腳,可以直接和Arduino或USB轉序列埠板相連。不過,XBee模組的接腳間距是2.0mm,而Arduino板和麵包板的腳位間距是2.54mm,所以實驗XBee時,通常會將它接上一個轉接板。

像下圖這個轉接板上面包含與XBee相容的排插,以及一個USB轉序列埠的IC(FT232RL),可連接個人電腦:

XBee相容的序列轉接板

這個轉換板通常只用在透過電腦設置XBee參數,跟Arduino板相連時,不一定要用轉換板。

使用X-CTU軟體設置XBee裝置的參數

XBee裝置可透過「序列埠通訊軟體」連線,並以AT命令設置參數。或者,採用Digi公司提供的X-CTU軟體設置。新版的X-CTU軟體支援Windows, Mac OS X及Linux系統,請在Digi公司的X-CTU網頁下載並安裝。X-CTU軟體的操作示範:

先把XBee插入USB序列埠轉換板,再接到電腦的USB埠,然後開啟X-CTU軟體。

X-CTU軟體操作畫面

按下「新增XBee」或「搜尋XBee」鈕,加入XBee裝置。這是按下「搜尋XBee」鈕的畫面,筆者在電腦上連接兩個XBee裝置,因此點選兩個序列埠:

搜尋XBee畫面

接下來的設定畫面用於選擇XBee模組的序列通訊參數,通常使用預設值即可:

序列通訊參數設定畫面

按下Finish(完成)鈕,X-CTU工具將依據上圖的序列通訊參數,嘗試連結XBee模組。下圖顯示找到兩個XBee模組(註:XBee模組預設是「終端」裝置):

搜尋到的模組畫面

點選要加入的模組,並按下「加入選取的裝置」按鈕,即可開始在X-CTU中讀取與設置XBee模組的參數:

讀取模組參數的畫面

底下列舉即將使用的幾項「網路與安全(Networking & Security)」參數:

網路與安全(Networking & Security)參數

  • CH(通訊頻道):連線設備的頻道必須一致,預設為C。
  • ID(PAN識別碼):連線設備的PAN識別碼必須一致,預設為3332。
  • DH(目標高位址):連線對象的高位址,預設為0。
  • DL(目標低位址):連線對象的低位址,預設為0。
  • MY(16位元位址):用戶自訂的位址,可能值為0~0xFFFF。
  • SH(裝置序號-高):裝置的出廠高位序號,不可修改。
  • SH(裝置序號-低):裝置的出廠低位序號,不可修改。

未完待續…

Posts created 468

8 thoughts on “XBee模組通訊實驗(二):認識XBee

  1. 老師你好
    想請問可以在linkit one 上使用 Xbee嗎?
    我將Xbee S2插在Xbee shield v2.0上,再插到lilnkit one上,用digi 的X-CTU無法連線

    1. hi sun:

      XBee採用序列通訊介面,一定可以和linkit one相連,但遺憾的是,我沒用過linkit one,拍謝~

      thanks,
      jeffrey

    2. 我的可以喔~baud 不要設定錯誤
      還有linkit one 的 板子上的 TX RX 是 Serial1 而不是Serial

  2. 老師你好
    我裝了兩隻xbee API mode分別各自連在arduino mega2560 上 ,但是 有時候 他們之間的溝通會失敗 ,也就是沒有封包傳過去 。想請問可能造成這樣的code原因。 我在void loop() 裡面 兩邊都是 分割好(uint8_t的大小)以後 就 xbee.send(zbTx); 然後在下一行 xbee.readPacket();

    謝謝

    1. 本文的XBee模組是朋友借我測試的,已經歸還,很抱歉我不清楚這方面的問題。

      thanks,
      jeffrey

    1. 不好意思~XBee模組是我跟朋友借來測試的,已經歸還,煩請閱讀模組的規格書。

      thanks,
      jeffrey

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top