2012年6月2日 星期六

以 Amarino 連接 Android 與 Arduino

這篇說明如何以 Amarino 通過藍芽連接 Android 與 Arduino,可作為 Amarino 入門的第一步

所需材料
  • Android 手機一支
  • Arduino x1
  • bluetooth module x 1
Step 1:安裝 Amarino

http://www.amarino-toolkit.net/ 下載底下兩個 App 並安裝到 Android 手機上:

1) Amarino

2) Amarino Plug-in Bundle

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,如下圖:

image

Step 3: 上傳 Test 程式

點 File > Examples > MeetAndroid > Test 打開 Test 程式:

image

Test 程式所用的 baud rate 預設是 57600 bps,如果你的藍芽模組不是 57600 bps,請做適當的調整:

image

然後把程式上傳到 Arduino 板子上。

Step 4:連接藍芽模組

我用的是廣州匯承信息科技的 HC-0x 系列藍芽模組,下圖是 HC-0x 藍芽模組的外觀:

image_thumb352 image_thumb642
▲ HC-0x 藍芽模組 (圖左:正面圖,圖右:背面圖)

這個藍芽模組連接方法很簡單,只要照下表把 Arduino 和藍芽模組連接起來就好:

Arduino 藍芽模組 備註
5V VCC 注意電源不可接錯
GND GND 注意電源不可接錯
RXD TXD  
TXD RXD  

image_thumb13

連接的時候有兩點要注意:第一是電源千萬不可接錯,不然藍芽模組可能會壞掉,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。

通電之後,藍芽模組上的 LED 會一直閃爍:

image_thumb1332

Step 5:測試連線

打開 Android 手機上的 Amarino App,點擊【Add BT Device】(如下圖左)搜尋藍芽設備,如果藍芽模組有正確安裝,便會出現在列表中(如下圖右):

image image

點選找到的藍芽設備,接著會進到設備列表:

image 

點一下上圖紅框框起來的圖示,接著點【Add Event】(如下圖左)顯示可用的 Events,然後點選【Test Event】(如下圖右):

imageimage

進入設定頁面後,直接點下面的【Save】鈕(如下圖左),此時藍芽設備已增加了一個 Test Event,如下圖右:

image image

按下手機 Back 鍵回到設備列表畫面(如下圖左),點選【Connect】鈕跟 Arduino 連線,如果是第一次與此藍芽設備連線,Android 手機會出現「藍芽配對要求」的畫面,必須輸入配對密碼(一般為 0000 或 1234)才能與此藍芽設備連線(如下圖右):

imageimage

如果成功建立連線(如下圖),Amarino 便會每隔 3 秒發送一個數值介於 0 到 255 的 random number 給 Arduino,假如 Arduino 上的 LED 燈號(在 pin 13 上)會每隔 3 秒閃爍一下,那麼恭禧你,因為你的 Android 手機已經成功和 Arduino 建立通訊了。

image

如果想知道 Amarino 背景在做什麼,可以點選【Monitoring】鈕以觀察背後的通訊過程:

image

參考資料

17 意見:

embdev 提到...

查一下 BT Module 的 I/O 是否為 3.3V?若是最好用電阻分壓,不然 Module 可能活不久。

Cooper Maa 提到...

Hi, 這個模組上有 3.3V LDO,TXD & RXD 的電壓都是 3.3V。這樣還要再用電阻分壓嗎? 謝謝你。

embdev 提到...

因為 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 來限流。

Cooper Maa 提到...

我用的是淘寶這塊模組: http://item.taobao.com/item.htm?id=14372426867

它上面是說 Arduino RX/TX 可以直接藍牙的 TX/RX,所以我想可能底板已經有處理過準位的轉換了.... (要再 check 一下電路圖才能確定)

我電子還不是很熟,很感謝你的指導。

dam 提到...

請問這可以跟溫濕度計那個範例結合

將值直接傳輸到手機上嗎 ?

Cooper Maa 提到...

Good idea!

用 SensorGraph 這個範例來改寫應該可以:

http://coopermaa2nd.blogspot.tw/2012/06/sensorgraph.html

kevin 提到...
作者已經移除這則留言。
j_lo2005 提到...

您好,我試了一下。在android手機上有正常的給亂數,但在arduino裡,pin13還是沒有反應
請問一下,最後一張圖片,"我注意到您的Send to Arduino: A154後還有一個符號",但我的沒有。

我的藍芽模組是這一塊
http://goods.ruten.com.tw/item/qa?21204112856596#qna

祝新年快樂
謝謝!

Cooper Maa 提到...

新年快樂

哇~ 你藍芽還沒試成功啊?
其實這樣也很難幫你忙,或者是你可以開個部落格或是 Google Docs,然後把你操作的步驟、安裝軟體和硬體線路、照片整理下來嗎? 這樣或許比較容易知道你哪個步驟出了問題

j_lo2005 提到...

您好,
我重新從原先的藍芽測試開始檢查,最後發現是baud rate設定錯了,藍芽的baud rate還是9600。設定成9600就ok了。
還是很好奇,為什麼您的monitoring send的畫面, 在最後一個字元有空白框呢!

謝謝!

Cooper Maa 提到...

原來是 baud rate 的問題啊!
恭禧你終於找到原因了。

我也不曉得會有空白框。今天在試 Amarino with SoftwareSerial卻有沒發現空白框...

dam 提到...

您好:

因為最近在用 rs232 和 bluetooth

連結 android 使用

現在有個問題請教

因為我在使用rs232傳值的時候,是不是只要藍芽把rx 和 tx 接口接著線,就無法傳遞值


獨立分開時互丟值皆可以使用(rs232使用 拔掉藍芽所接的rx tx)

是不是只要rx tx 接著線,rs232就無法丟值出來

Cooper Maa 提到...

rs232 ?
Arduino 沒有 rs232 介面啊?

dam 提到...

我搞錯了嗎?

就是那條arduino 傳輸的usb線

USB 傳輸線 + OTG 線連結手機

Cooper Maa 提到...

原來是 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

dam 提到...

arduino 這邊是已經可以測試

但android 這邊是否要下載lib才能執行接收到57600 band 的值呢?

Cooper Maa 提到...

應該不用,amarino 用的 baud rate 預設就是 57600 bps