Download - Chapter 2 XBee無線傳輸
XBee 無線傳輸
Arduino 機器人研習
講師: 賴偉民
為什麼要用無線通訊?
1.設備間的通訊更靈活2.不受限於設備連結的長度
3.資料的運算不再受限於控制板
無線通訊模組
RF無線射頻
藍牙
RFID
XBee
WIFI
XBee 硬體介紹
硬體介紹
• XBee 硬體規格
– IEEE 802.15.4 ZigBee無線網路
– 非同步通訊裝置
– 工作電壓: 2.8-3.4 V
– 訊號發送消耗電流: 45-50mA
– 最大通訊速率250kbps
– 室內傳輸距離: 30公尺
– 室外傳輸距離: 100公尺
– 6個10-bits ADC輸入腳位及8個數位I/O腳位
硬體介紹
(1)互傳資料的XBee ID一定要相同
(2)發送和接收端名稱相反
ID:AAAA發送端(另一塊XBee):1234接收端(自己):5678
Data
ID:AAAA發送端(另一塊XBee):5678接收端(自己):1234
硬體介紹
• 一對多無線傳輸
ID:AAAA發送端(另一塊XBee):1234接收端(自己):5678
ID:AAAA發送端(另一塊XBee):5678接收端(自己):1234
ID:AAAA發送端(另一塊XBee):5678接收端(自己):1234
ID:AAAA發送端(另一塊XBee):5678接收端(自己):1234
XBee 硬體設定
XBee硬體設定
• XBee模組的設定需透過Digi公司開發的X-CTU軟體
– http://www.digi.com/support/productdetail?pid=3
352&osvid=57&type=utilities
XBee硬體設定
• XBee設定-步驟一
– 安裝XBee驅動程式
– 將XBee裝至XBee USB轉板上
– 連接電腦
– 開啟XBee設定程式
XBee硬體設定
• XBee設定-步驟二
– 選取連接XBee的USB COM點
– 確認下列設定
Baud: 9600
Flow Control: NONE
Data Bits: 8
Parity: NONE
Stop Bits: 1
– 按下Test/Query
XBee硬體設定
• 如果彈出的視窗如圖顯示,代表連線成功,按下OK
XBee硬體設定
• 如果彈出的視窗如圖顯示,代表有設定錯誤,請重新檢查一次
XBee硬體設定
• XBee設定-步驟三
– 點選Modem Configuration
– 點選Read並確認程式有顯示XBee的資訊
XBee硬體設定
• XBee設定-步驟四
– 將ID設定成AAAA
– 將DL(發送端)設定成5678
– 將MY(接收端)設定成1234
– 按下Write
– 設定完成
– 關閉程式後拔除USB
– 更換下一個XBee後,重覆上面的步驟
XBee 範例 : 無線聊天室
XBee 範例 : 無線聊天室
• 透過XBee無線傳輸裝置,在兩台電腦間互相傳遞訊息,並在X-CTU上顯示結果
Data
XBee 範例 : 無線聊天室
• 步驟一
– 兩兩成員之間互相配對相同的ID,以及相反的DL和MY
– 開啟X-CTU程式並連接
– 點選Terminal
XBee 範例 : 無線聊天室
• 步驟二
– 在下面的空白處輸入資料
(藍色字是送出的資料,紅色字是接收的資料)
Serial 通訊函式庫
Serial 通訊函式庫
• Arduino具備通訊用腳位
TX : 送出資料 RX : 接收資料
Serial 通訊函式庫
• Serial.begin(鮑率);
– 開啟與裝置間的通訊,針對不同的裝置,在初始化時給予不同的鮑率值,例如與電腦的通訊設定成9600
<補>什麼是鮑率?鮑率是資料傳輸的速率,也就是每秒傳送的資料多寡,單位是bps(bits per second),常見的鮑率有1200、2400、4800、9600、38400等,較常用的是9600
Serial 通訊函式庫
Serial.begin(9600);
Serial3.begin(9600);Serial2.begin(9600);Serial1.begin(9600);
Serial 通訊函式庫
• Serial.available();
– 判別是否有資料正被輸入Arduino,如果有的話,此函
式會大於0;此指令較常用在判斷式的條件上
ex.if(Serial.available()>0){}
Serial 通訊函式庫
• Serial.read();
– 當電腦或其它設備要送資料給Arduino時,可以用此函式接收,但輸入的值只限於ASCII碼上有的
ex.int c;c=Serial.read( );
Serial 通訊函式庫
• ASCII
– 大部份的電腦都用8bits來儲存字元,因此用0到255這256個數字來對應不同的字元。
Serial 通訊函式庫
• Serial.print(字串);
• Serial.println(字串);
– 用於將資料輸出給其它裝置,如果是輸出給電腦,寫法如上面所示:如果是從Arduino的1號和2號通訊接腳輸出給其它裝置,則需寫成:
Serial1.println(字串);Serial2.println(字串);
Serial 通訊函式庫
• 輸出資料型態:
– Serial.println(a,DEC); 以10進位形式輸出
– Serial.println(a,HEX); 以16進位形式輸出
– Serial.println(a,BIN); 以2進位形式輸出
– Serial.println(a,OCT); 以8進位形式輸出
– Serial.println(a); 以字串形式輸出
Serial 通訊函式庫
• Serial.write();
– 將資料以ASCII的型式輸出(較舊的版本是用Serial.println( ,BYTE)來輸出ASCII的資料,新版的改用此函式)
ex.Serial.write(123); //根據ASCII表可知會輸出{Serial.println( );
XBee 範例 : PC與Arduino
XBee 範例 : PC與Arduino
• 透過XBee無線傳輸裝置,從電腦傳送資料給Arduino,並透過Arduino上的USB將資料回傳至電腦上的Serial Monitor
XBee 範例 : PC與Arduino
• 材料
– Arduino X 1
– XBee X 2
– XBee USB轉接板 X 1
– XBee Explorer轉板 X 1
– 麵包板 X 1
XBee 範例 : PC與Arduino
• XBee Explorer轉板
Dout: 從XBee送值給Arduino
Din : 接收Arduino傳給XBee的值
XBee 範例 : PC與Arduino
• 接線
將XBee USB轉接板連接至電腦
XBee 範例 : PC與Arduino
XBee 範例 : PC與Arduino
• 開啟XBee驅動程式
• 選擇正確的COM點
• 連線成功後點選Terminal
XBee 範例 : PC與Arduino