「點對點(一對一)」是連接兩個XBee模組最簡單的方式。
在ZigBee協定中,兩個終端不能直接相連,點對點連線的其中一端可以是終端(Endpoint),另一端則須是協調器(Coordinator)或路由(Router),但Digi公司的XBee S1模組,允許兩個終端互聯。
協調器與終端點對點通訊通訊
採用一個XBee S1裝置當作協調器;另一個當作終端。先在X-CTU軟體中,替一個XBee S1模組設置底下的參數,讓它變成協調器:
參數 | 值 | 說明 |
---|---|---|
CH (Channel) | C | 兩端的頻道一致 |
ID (PAN ID) | 3332 | 兩端的網路ID要一致 |
DH | 0 | |
DL | 12 | 設定成終端的MY位址。 |
MY (Source Address) | 13 | 16位元的自訂位址。 |
CE (Coordinator Enable) | 1 | 啟用協調器 |
NI (Node Identification) | Land of Joy | 選擇性的節點名稱 |
CE(Coordinator Enable,協調器致能)若設置成1,此模組將擔任「協調器」;設置成0,則擔任「終端」。節點名稱(NI)可以留白,XBee的連線是以「位址」來識別彼此,而非節點名稱。
設定完畢後,按下「鉛筆」圖示鈕,將參數寫入S1模組:
設置終端模組參數
依照底下的參數設置另一個S1模組,重點在於,這兩個模組的頻道和網路ID要一致,DL參數設置成對方的MY位址。
參數 | 值 | 說明 |
---|---|---|
CH (Channel) | C | 兩端的頻道一致 |
ID (PAN ID) | 3332 | 兩端的網路ID要一致 |
DH | 0 | |
DL | 13 | 連接到協調器的位址 |
MY (Source Address) | 12 | 16位元的自訂位址。 |
CE (Coordinator Enable) | 0 | 設置成終端 |
NI (Node Identification) | Zion | 選擇性的節點名稱 |
設定完畢後,按下「鉛筆」圖示鈕寫入參數。
測試連線
S1模組參數設置完成後,它們將在通電時自動建立連線。X-CTU軟體內建終端機軟體,可直接透過序列埠與XBee連線,並且接收和傳遞序列資料。
請分別在兩個模組上,執行下圖的三道步驟,建立終端機連線:
連線之後,便能直接在Console log窗格輸入與接收訊息(輸入的字元會立即被傳送出去):
連接XBee模組與Arduino控制板
若XBee已經設定好點對點連線,那麼,對Arduino來說,XBee模組就像是一條序列線,接上就能使用。所以和連接藍牙序列模組一樣,Arduino不需要使用特別的程式庫。
假設我們使用SoftwareSerial程式庫,將Arduino控制板的8和9腳設定成序列埠,硬體的接腳如下(收、發模組都一樣)。如果XBee膜組有銜接轉接板,也能透過它的TxD和RxD腳與Arduino相連,接線方式也和下圖相同。
XBee通訊程式碼也和藍牙模組相同,請直接使用「藍牙模組補充說明(四):無線連結兩個Arduino控制板」底下的LED控制程式碼測試。
未完待續…
老師您好
我想請教一些問題
如果使用的是S2模組要一對一
fuction set 的部分 發送端是設定Coordinator device AT 接收端是設定 end divice AT 嗎??
如果是的話 S2 連接的參數設定也是照老師上面所提到的嗎??
麻煩老師了謝謝
hi 阿堂:
請問你有先測試過嗎?因為XBee模組我已經歸還朋友,無法實驗。
thanks,
jeffrey
您好 照您的設定 在測試階段可以連結
可是移到arduino就不行 ,我可以用同個sketch連接hc-05&hc-06互傳。
寫入參數完應該就燒好了? 不用再按update firmware鍵吧?
您是指XBee模組嗎?抱歉,我已經歸還無法測試了。
thanks,
jeffrey
請教 如果另一端只有xbee未連接arduino,那顆xbee可以進行發送的動作嗎?
謝謝
您好,請問一下我用XCTU進行XBee設置時
Channel會沒辦法調整
想請問一下有遇過類似的狀況嗎?
不好意思~XBee模組是我跟朋友借來測試的,已經歸還。
thanks,
jeffrey