2016年2月2日 星期二

Adobe AIR for Mobile + Arduino + Bluetooth (1) - 基本設定

因為懶惰,不想睡覺前還得要離開可愛的被窩去關檯燈,
一直想著到底能不能用手機控制當作家電開關,於是乎有了這一連串實驗。

「Remote control of Home Appliances Using Mobile」

思考一下想達成這樣的目標,究竟需要具備那些條件?
1. 行動裝置 (有藍芽/Wi-Fi 可以進行數據傳輸。)
2. Arduino + 藍芽/Wi-Fi模組 (將手機傳過來的訊息解讀判斷決定是否啟動連接的家電。)
3. 繼電器 Relay (控制家電時需要有一個開關控制電壓,否則Arduino會被燒毀。)



最重要也是首先必須要選擇的通訊方式, Wi-Fi or Bluetooth,都幾?
讓我們先瞭解

通訊模式的比較:


ZigBee、WiFi、藍牙 哪種模式更適合智慧家居?

WiFi VS. Zigbee VS. 藍牙:輕家居的3大主流通信技術

【物聯網時代】無線通訊,一百公尺的連線戰爭

智慧家庭時代來臨 無線聯網技術大比拼

這裡選擇藍牙主因是
● 耗電量低,對於智慧家電來說這可是很重要的一環。 (O)
● 只是要連結單一裝置,不一定需要用到傳輸速度高的Wi-Fi,殺雞焉用牛刀? (O)
● 行動裝置有Wi-Fi、 Bluetooth, 後者有ANE可以使用,學習不同傳輸方式的使用過程。(O)
● 承上,手邊剛好有藍芽模組,而且也沒有ZigBee。 (X)
● 這時候我覺得用Wi-Fi 很麻煩比起藍芽還難學會。(X)



直接來看接線圖吧!


藍芽模組 → Arduino 對應
◎Vcc → 5V
◎GND → GND

◎RxD → Pin7 

◎TxD → Pin6



Arduino code







Arduino 與外部設備的連接


藍芽模組是透過序列埠和Arduino連線,但是Arduino的程式碼和序列埠監控視窗也都是透過序列埠傳送。Arduino微電腦版預設只有一個序列埠,應保留給序列埠監控視窗使用。

這裡將採用SoftwareSerial(軟體序列埠)程式庫,將其他接腳變成序列埠讓藍芽模組使用。

SoftwareSerial(rxPin, txPin, inverse_logic)

關於SoftwareSerial的說明請參考官網,請點我

這裡要值得注意的地方是建構式填入的第一個參數是接收RxD Pin 6, 第二個參數是傳送TxD Pin 7。起初以為藍芽模組如果是如上述RxD=Pin 7, TxD=Pin 6, 依樣畫葫蘆的話應該是SoftwareSerial(7,6), 後來才發現完全反了!! (在這裡真是卡了好久Q_Q)


應該是 SoftwareSerial(6,7)才對!!


後來才發現關於藍芽模組與SoftwareSerial參數設定的說明,試著解釋(自圓其說)一下XD

TxD: Transmitter 發送
RxD: Receiver 接收

藍牙模組的RxD對應到SoftwareSerial的TxD (Pin 7)。
藍牙模組的TxD對應到SoftwareSerial的RxD (Pin 6)。

處理器「傳出」訊息,外部設備「接收」,所以處理器TxD接設備RxD,反之亦然。







序列埠監控視窗 & ATCommand


程式碼&接線沒問題之後,就可以上傳了。操控藍牙模組的指令統稱AT命令(AT-command)。可以進行變更名稱、變更密碼、設定 baud rate.......等。

這裡使用的模組是HC-06,HC-06的AT命令,採用9600bps的速率傳送。
關於HC-06的設定可以參考這篇,Arduino : HC-06 藍芽模組的設定



另外,也有趙英傑老師的網站上關於藍芽模組的補充說明:

HC-05與HC-06藍牙模組補充說明(一)

HC-05與HC-06藍牙模組補充說明(二):連接電路

HC-05與HC-06藍牙模組補充說明(三):使用Arduino設定AT命令

藍牙模組補充說明(四):無線連結兩個Arduino控制板

HC-05藍牙模組補充說明(五):透過藍牙上傳Arduino程式碼

執行AT命令(AT-command)修改藍芽模組的資料傳輸速率





開啟序列埠視窗後,如圖操作可見其回應。(指令輸入完之後就會消失,圖片只是示意。)
這裡要注意的是右下角的baud rate也必須要留意是設置成9600才可以使用。
藍芽模組的第一階段基本操作就到這裡完成囉~







沒有留言:

張貼留言