這篇說明如何以 Amarino 通過藍芽連接 Android 與 Arduino,可作為 Amarino 入門的第一步
所需材料
- Android 手機一支
- Arduino x1
- bluetooth module x 1
Step 1:安裝 Amarino
到 http://www.amarino-toolkit.net/ 下載底下兩個 App 並安裝到 Android 手機上:
1) Amarino
Step 2: 安裝 Arduino IDE 與 MeetAndroid Library
如果你電腦上還沒有 Arduino IDE,請先到 http://arduino.cc/en/Main/Software 下載軟體,下載後解壓縮即可。
接著下載 MeetAndroid Library,把 MeetAndroid 解到 Arduino IDE 安裝目錄的 libraries 資料夾下。
重新啟動 Arduino IDE,然後在 Sketch > Import Library 底下應該會看到 MeetAndroid,如下圖:
Step 3: 上傳 Test 程式
點 File > Examples > MeetAndroid > Test 打開 Test 程式:
Test 程式所用的 baud rate 預設是 57600 bps,如果你的藍芽模組不是 57600 bps,請做適當的調整:
然後把程式上傳到 Arduino 板子上。
Step 4:連接藍芽模組
我用的是廣州匯承信息科技的 HC-0x 系列藍芽模組,下圖是 HC-0x 藍芽模組的外觀:
這個藍芽模組連接方法很簡單,只要照下表把 Arduino 和藍芽模組連接起來就好:
Arduino | 藍芽模組 | 備註 |
5V | VCC | 注意電源不可接錯 |
GND | GND | 注意電源不可接錯 |
RXD | TXD | |
TXD | RXD |
連接的時候有兩點要注意:第一是電源千萬不可接錯,不然藍芽模組可能會壞掉,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。
通電之後,藍芽模組上的 LED 會一直閃爍:
Step 5:測試連線
打開 Android 手機上的 Amarino App,點擊【Add BT Device】(如下圖左)搜尋藍芽設備,如果藍芽模組有正確安裝,便會出現在列表中(如下圖右):
點選找到的藍芽設備,接著會進到設備列表:
點一下上圖紅框框起來的圖示,接著點【Add Event】(如下圖左)顯示可用的 Events,然後點選【Test Event】(如下圖右):
進入設定頁面後,直接點下面的【Save】鈕(如下圖左),此時藍芽設備已增加了一個 Test Event,如下圖右:
按下手機 Back 鍵回到設備列表畫面(如下圖左),點選【Connect】鈕跟 Arduino 連線,如果是第一次與此藍芽設備連線,Android 手機會出現「藍芽配對要求」的畫面,必須輸入配對密碼(一般為 0000 或 1234)才能與此藍芽設備連線(如下圖右):
如果成功建立連線(如下圖),Amarino 便會每隔 3 秒發送一個數值介於 0 到 255 的 random number 給 Arduino,假如 Arduino 上的 LED 燈號(在 pin 13 上)會每隔 3 秒閃爍一下,那麼恭禧你,因為你的 Android 手機已經成功和 Arduino 建立通訊了。
如果想知道 Amarino 背景在做什麼,可以點選【Monitoring】鈕以觀察背後的通訊過程:
查一下 BT Module 的 I/O 是否為 3.3V?若是最好用電阻分壓,不然 Module 可能活不久。
回覆刪除Hi, 這個模組上有 3.3V LDO,TXD & RXD 的電壓都是 3.3V。這樣還要再用電阻分壓嗎? 謝謝你。
回覆刪除因為 Arduino 上是跑 5V,所以 Arduino 的 TX(5V) -> BT Module RX 的電壓過高,不確定你 module 上的 CSR Chip 有無 5v tolerance,我的是沒有。
回覆刪除可以用電阻分壓來解決:
Arduino TX ----- 10K ----- BT RX ----- 20K ----- GND
至於 BT TX -> Arduino RX 可以不用處理,我有串一個 10 Ohms 來限流。
我用的是淘寶這塊模組: http://item.taobao.com/item.htm?id=14372426867
回覆刪除它上面是說 Arduino RX/TX 可以直接藍牙的 TX/RX,所以我想可能底板已經有處理過準位的轉換了.... (要再 check 一下電路圖才能確定)
我電子還不是很熟,很感謝你的指導。
請問這可以跟溫濕度計那個範例結合
回覆刪除將值直接傳輸到手機上嗎 ?
Good idea!
回覆刪除用 SensorGraph 這個範例來改寫應該可以:
http://coopermaa2nd.blogspot.tw/2012/06/sensorgraph.html
作者已經移除這則留言。
回覆刪除您好,我試了一下。在android手機上有正常的給亂數,但在arduino裡,pin13還是沒有反應
回覆刪除請問一下,最後一張圖片,"我注意到您的Send to Arduino: A154後還有一個符號",但我的沒有。
我的藍芽模組是這一塊
http://goods.ruten.com.tw/item/qa?21204112856596#qna
祝新年快樂
謝謝!
新年快樂
回覆刪除哇~ 你藍芽還沒試成功啊?
其實這樣也很難幫你忙,或者是你可以開個部落格或是 Google Docs,然後把你操作的步驟、安裝軟體和硬體線路、照片整理下來嗎? 這樣或許比較容易知道你哪個步驟出了問題
您好,
回覆刪除我重新從原先的藍芽測試開始檢查,最後發現是baud rate設定錯了,藍芽的baud rate還是9600。設定成9600就ok了。
還是很好奇,為什麼您的monitoring send的畫面, 在最後一個字元有空白框呢!
謝謝!
原來是 baud rate 的問題啊!
回覆刪除恭禧你終於找到原因了。
我也不曉得會有空白框。今天在試 Amarino with SoftwareSerial卻有沒發現空白框...
您好:
回覆刪除因為最近在用 rs232 和 bluetooth
連結 android 使用
現在有個問題請教
因為我在使用rs232傳值的時候,是不是只要藍芽把rx 和 tx 接口接著線,就無法傳遞值
獨立分開時互丟值皆可以使用(rs232使用 拔掉藍芽所接的rx tx)
是不是只要rx tx 接著線,rs232就無法丟值出來
rs232 ?
回覆刪除Arduino 沒有 rs232 介面啊?
我搞錯了嗎?
回覆刪除就是那條arduino 傳輸的usb線
USB 傳輸線 + OTG 線連結手機
原來是 usb cable,那個不算是 rs232 喔
回覆刪除rs232 硬體接腳跟訊號都不一樣,我記得 rs232 voltage level 好像是正負 12v
anyway, usb to serial 跟 rs232 也是 serial
你說的沒錯,用藍芽的話,arduino serial port 會被佔住,就沒法用 Serial.println() 丟出資料
不過,這問題有解,詳見這篇:
http://coopermaa2nd.blogspot.tw/2013/01/amarino-with-softwareserial.html
arduino 這邊是已經可以測試
回覆刪除但android 這邊是否要下載lib才能執行接收到57600 band 的值呢?
應該不用,amarino 用的 baud rate 預設就是 57600 bps
回覆刪除