基於XBee進行ZigBee組網


該文章轉帖自:http://blog.csdn.net/u012261135/article/details/48594419

 

文章簡單地介紹了XBee模塊、應用組合和2種通訊方式,還有XCTU的基本使用,作為入門很有幫助,可惜博主沒有繼續更新后續內容。

 

XBee模塊是Digi公司的一款采用ZigBee技術的無線模塊,通過串口與單片機等設備間進行通信,能夠非常快速地實現將設備接入到ZigBee網絡的目的,我最近做的一個項目使用了該模塊,感覺非常的好用,開發基於ZigBee的無線通信來說是很easy了。此模塊采用802.15.4協議棧,通過配置可以用作ZigBee網絡中的Coordinator、Router或者End Device節點。XBee按照性能分為XBee和XBee pro兩種,XBee pro相對於XBee具有更高的功耗和更遠的傳輸距離,它們對外的接口基本相同,可以根據實際項目的要求來選擇。

XBee的引腳如下圖所示:

最簡單的使用方式下只需要將單片機的串口與XBee模塊的串口(Pin2、Pin3、Pin10)相連即可,另外也可通過RTS(Pin16)、CTS(Pin12)進行流控,單片機與XBee模塊串口的連接如下圖所示:

XBee模塊與單片機的串口通信有transparent和API兩種操作模式:

(1)transparent操作模式:

單片機直接通過串口將要傳輸的數據發送給XBee模塊,XBee模塊按照ZigBee協議將數據通過無線發送給遠端的XBee模塊,再通過串口發送給遠程的單片機,就好像兩個單片機之間通過XBee模塊建立了一條透明傳輸通道。如果要通過串口配置本地XBee模塊的參數,則可以向XBee模塊輸入+++,等待XBee模塊返回OK后即可通過AT指令集對XBee模塊進行參數的配置。這里使用Digi公司的XCTU軟件進行演示(XCTU的具體使用以后再進行詳細的介紹,其實就是通過串口與XBee模塊交互的軟件),如下圖所示:

(2)API操作模式:

在API操作模式下,所有發送給XBee模塊的數據或是從XBee模塊接收的數據都會封裝成特殊的API幀的格式,包括ZigBee無線發送和接收的數據幀、XBee模塊配置的命令幀(等同於transparent操作模式里面的AT指令)、命令響應幀、事件消息幀等。相比於transparent操作模式,API操作模式雖然相對復雜一點,但是提供很多transparent操作模式下無法完成的功能:

API操作模式下,只需要改變API幀里面的目的地址,就可以將數據傳輸給多個不同的遠程節點,而transparent操作模式下要改變遠程目的地址只能先進入AT命令下配置目的地址,在進行數據傳輸。而且API可以接收數據是否發送成功的狀態;

接收到的遠程節點的數據可以獲取遠程節點的地址以確認是哪個節點發送的;

獲取遠程節點的IO采樣數據;

通過API幀還可以配置遠程XBee模塊的參數。

API模式的使用將在以后的文章中進行詳細介紹。

 

XBee模塊還具有以下的一些比較實用的功能,簡要介紹一下:

(1)支持IO的輸入輸出,AD采樣

上面引腳圖中的Name列含有DIOx字樣的引腳表示可以進行數字IO的采樣輸入或者輸出高低電平,通過AT指令配置引腳復用的參數即可;

含有ADx字樣的引腳表示可以進行模擬電壓的AD采樣輸入,采樣電壓范圍為0~1200mV,采樣值范圍0~0x3FF,此外還可以對Vcc電壓進行采樣。

XBee可以將采樣數據直接通過ZigBee網絡發送給遠程節點。這樣,在API操作模式下,可以使用遠程配置命令控制遠程XBee節點開啟采樣,采樣后的數據直接傳給本節點,還可以控制遠程節點IO輸出來控制遠程XBee接的外圍設備。

(2)ZigBee網絡安全
XBee支持多個等級安全模式,加密方式采用128位的AES加密,如下圖:

(3)可通過串口Xmodem升級XBee的固件

將DTR(Pin9)、DIN(Pin3)置為低電平,RTS(Pin16)置為高電平后復位XBee模塊即可進入XBee的bootloader,串口通信波特率變為115200,輸入回車后可獲得菜單,選擇相應的選項后可以通過Xmodem將XBee固件傳送給模塊進行升級。

本文主要介紹ZigBee網絡的基本結構,三種組成ZigBee網絡的基本節點:協調器(coordinator)、路由器(router)、終端(end device),如何使用XCTU對XBee進行基本參數的配置,使XBee成為ZigBee網絡中的一個節點。

ZigBee網絡中定義了三種不同類型的設備:

協調器(coordinator)

每個ZigBee網絡中只允許有一個協調器,它是整個網絡的開始,協調器首先選擇一個信道(channel)和網絡標識(PAN ID)來啟動一個ZigBee網絡,然后允許路由器和終端加入這個網絡。協調器在建立ZigBee網絡之后,其功能相當於路由器,可以進行數據的路由轉發,可以為它的終端子設備緩存數據包,協調器本身不能休眠。

路由器(router)

路由器首先必須加入到一個ZigBee網絡中,然后路由器也是允許其他路由器和終端加入這個網絡,進行數據的路由轉發,為它的終端子設備緩存數據包,同樣路由器也不能休眠。

 終端(end device)

終端也必須加入到一個ZIgBee網絡中才能工作,但它不支持其他設備加入ZigBee網絡,也不能進行數據的路由轉發,終端數據的收發必須通過其父設備進行轉發。終端可以休眠進入低功耗的模式,一般可以采用電池進行供電。

ZigBee網絡的基本拓撲結構如下圖所示:

 

 

一個XBee模塊只能選擇成為以上三種設備類型的其中一種,對於老的硬件XBee S2或Xbee S2B來說,需要給XBee模塊升級不同的固件來改變設備類型和操作方式(API或Transparent),固件版本對應類型如下:

20xx - Coordinator - AT/Transparent Operation
21xx - Coordinator - API Operation
22xx - Router - AT/Transparent Operation
23xx - Router - API Operation
28xx - End Device - AT/Transparent Operation
29xx - End Device - API Operation

而對於新的XBee S2C(固件版本為40xx)來說,只需要通過配置XBee參數就可以改變設備類型或操作方式,下面僅以XBee S2C模塊為例進行說明。

在默認參數的情況下,XBee模塊為路由器transparent模式,通過AT指令設置CE為1可以將XBee設置為協調器,設置SM為一個非零值可以將XBee設置為終端。注意:作為協調器時SM必須設置為0,作為終端時CE必須設置為0,CE和SM同時為0則為路由器。此外,設置AP為0為transparent模式,設置AP為1或2則為API模式。

將XBee模塊通過串口與PC相連,使用XCTU對模塊進行測試、修改參數,首先搜索與PC連接的XBee模塊,默認波特率為9600,如下圖:

 成功添加XBee模塊后選中XBee模塊可以獲取到該模塊對應的配置參數並進行修改,如下圖:

通過修改CE、SM和AP的值可以改變XBee模塊的ZigBee設備類型和操作方式。當然,也可以手動向XBee模塊的串口發送AT指令來修改參數,如下圖:

在配置完XBee模塊的參數后,我們進行XBee模塊的組網通信,以兩個XBee模塊為例,一個設置為協調器,一個設置為路由器,都為transparent操作模式,設置DH和DL的值為目的地址(接收數據的XBee模塊的MAC地址,即SH和SL的值),如果發送的目的地址為協調器,也可以設置DH和DL為0。上電后XBee模塊會按照配置的參數自動完成ZigBee的組網。使用XCTU分別打開協調器和路由器的串口連接,向路由器串口發送數據,可以在協調器的串口觀察到路由器發送過來的數據,說明組網通信成功,如下圖所示:

當然,可以使用更多的XBee模塊,組成一個多跳的ZigBee網絡,網絡中的XBee節點只要配置目的地址為任何一個在ZigBee網絡中存在節點的64位MAC地址,就可以將數據通過ZigBee網絡送達,組網和多跳路由的功能將由XBee模塊自動完成。需要注意的是,如果一個XBee路由器節點之前已經接入過其他的ZigBee網絡,那么他的PAN ID將始終保存,這樣就無法再加入其他ZigBee網絡,即使斷電重啟也不會改變,需要使用ATNR0命令來退出之前ZigBee網絡,之后就可以自動搜索加入新的ZigBee網絡了。

我們可以看到,在采用transparent操作方式下,如果需要將數據發送給網絡中的多個節點,需要首先進入AT命令模式修改DH和DL的值,再發送數據,非常繁瑣。而采用API操作方式可以指定發送的目的地址,非常方便,API操作方式將在以后進行介紹。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM