廣播通信
讓一個通訊節點對其餘所有節點發送訊息,稱為「一點對多點廣播」。
假設ZigBee網路上包含5個XBee模組,協調器的DL參數(目標低位址)設定成FFFF(代表「廣播」),其餘4個模組的DL參數則設定成協調器的位址(此例為12)。
協調器的參數設置:
參數 | 值 | 說明 |
---|---|---|
CH (Channel) | C | 頻道要一致 |
ID (PAN ID) | 3332 | 網路ID要一致 |
DH | 0 | |
DL | FFFF | FFFF代表「廣播」 |
MY (Source Address) | 12 | 協調器的唯一位址值,可任意設置。 |
CE (Coordinator Enable) | 1 | 設置成協調器 |
如此,每當協調器發送訊息時,所有連線的終端都會接收到。
啟用AES 加密
ZigBee支援128位元的AES加密(註:32個字元長度),可以保障通訊網路的安全。啟用方式很簡單,只要將所有通訊端點的EE參數(代表「啟用AES加密」)設定成1,並且輸入相同的32個字元長度的AES密鑰即可,例如:
123456789ABCDEF123456789ABCDEF12
啟用AES的參數設置:
參數 | 值 | 說明 |
---|---|---|
EE (AES Encryption Enable) | 1 | 全部連線模組都要開啟 |
KY (AES Encryption Key) | 123456789ABCDEF123456789ABCDEF12 | 所有連線模組都要一致 |
在X-CTU軟體中設定完畢後,按下「鉛筆」圖示鈕寫入參數。日後連線,XBee模組將自動加密與解密通訊內容,Arduino程式不需要任何修改。
自行輸入AT命令
XBee模組的參數都是透過AT命令設定,只不過,X-CTU軟體把設定AT命令的動作以圖形化介面呈現;每當我們按下X-CTU介面上的「鉛筆」圖示,它就在背地裡執行一連串AT命令。
我們也可以用序列通訊軟體連結XBee模組,自行輸入AT命令來調整參數。以採用X-CTU內建的序列通訊程式為例,進入AT命令的方法:
- 切換到「終端機」視窗,再按下「連線」鈕。
- 在終端機中輸入+++ (三個連續加號),並且不要按Enter鍵!(註:輸入+++前後一秒鐘,不要輸入任何字元),XBee將回應OK,代表模組已進入AT命令模式。
- 輸入任何AT命令看看,例如:ATID,它將回應模組的頻道ID。
底下畫面中的藍色字體是我們輸入的命令,紅色字體則是XBee模組的回應。
進入AT命令模式之後,若經過一段時間沒有輸入AT命令,XBee將自動跳出AT命令模式,變成「透傳模式」,也就是自動轉發序列埠的訊息。只要再次輸入+++即可進入AT命令模式。
XBee模組的AT命令都已經列舉在X-CTU軟體的參數設定介面上…只要在參數名稱(粗體字部份)加上AT前綴,就是完整的AT命令。例如,讀取與設定「目標低位址」的參數是DL,其AT命令是ATDL。
補充說明,進入AT命令模式的‘+’字元,由CC參數(Command Sequence Character)定義;進入AT命令前後的一秒鐘等待時間可透過GT參數(Guard Times)調整,預設為0x3E8(亦即,10進位的1000ms)。詳細的AT命令說明,請參閱XBee模組的技術文件(PDF格式)。
未完待續…
老師您好
我想詢問一下
其餘4個終端的DL參數都是12,那MY 的參數要設定成什麼?
如同上文第一張圖示,任意設定成1, 2, 3, 4即可。
thanks,
jeffrey
老師您好:請教您一個問題,我用Esp8266做了一個wifi控制家電的伺服器,但想在控制端和伺服端之間,做AES的加、解密動作,具體情形需要怎麼做,比方說:硬體方面,我該買什麼樣的單晶片,軟體方面要去下載什麼軟體,比如說做AES 128吧,或您有出什麼相關的書籍,我也可以去購買,對這方面完全陌生,不知如何下手,還請老師 指點一二, 不勝感激。
我尚未做過這方面的實驗,不過,有個住在葡萄牙的老外寫了一篇相關的文章”ESP8266 – Logging data in a backend – AES and Crypto-JS“以及ESP8266的Arduino程式庫,附帶Node.js的AES 128範例程式,提供你參考。
have fun!
jeffrey