顯示具有 Bluetooth 標籤的文章。 顯示所有文章
顯示具有 Bluetooth 標籤的文章。 顯示所有文章

2013年1月2日 星期三

Amarino with SoftwareSerial

Amarino 官方的 MeetAndroid Library 只支援 Hardware Serial,我做了一個新的版本,這個版本增加 SoftwareSerial Library 的支援,所以現在你可以用 Arduino 任意 2 支 IO Pin 當作 TX 與 RX 腳位來銜接藍芽模組了。你可以在底下的網址取得我改過的 MeetAndroid Library:

https://github.com/coopermaa/MeetAndroid

當你裝好 MeetAndroid Library 後,可以打開 File > Examples > MeetAndroid > SoftwareSerialTest 這個範例來測試:

image

SoftwareSerialTest 範例完整程式碼如下:

在這個範例中,比較重要是底下這兩行程式碼,這兩行便是 Amarino with SoftwareSerial 的使用方法:

這會用 pin 2 和 pin 3 當作 RX 和 TX 接腳,而第二行把 mySerial 物件傳給 meetAndroid,表示要用 mySerial 當作與藍芽模組通訊的 Serial Port。由於我們現在使用 SoftwareSerial,沒用到 Hardware Serial,所以 Hardware Serial 就可以拿來 Debug:

當你用 Amarino 測試時,可以切到 Monitoring 畫面觀察 Amarino 背後通訊的過程,Amarino 測試連線的 Event 訊息如下,你會看到 Android 端每隔幾秒鐘就會送一個數值介於 0 到 255 的 random number 給 Arduino:

image

而在 Serial Monitor 視窗中也會同步看到一樣的訊息:

image

你或許會想要參考我整理的 Getting Started with Arduino 簡報,這份簡報可以帶你快速上手 Amarino:

參考資料

2012年9月5日 星期三

Blueterm and Arduino

Blueterm 是一個 terminal App,可以用來顯示通過 bluetooth serial port 連線傳送的資料。這篇教學將教你如何使用 Blueterm 讓 Arduino 與 Android 建立藍芽通訊。

所需材料
  • Android 裝置 x 1
  • Arduino x 1
  • bluetooth module x 1

Step 1: 安裝 Blueterm

到 Google Play 下載並安裝 Blueterm 到 Android 裝置上。

下載

Step 2: 安裝 Arduino IDE 並上傳測試程式

如果你電腦上還沒有 Arduino IDE,請先到 http://arduino.cc/en/Main/Software 下載軟體,下載後解壓縮即可。

接著將底下的 Arduino Sketch 上傳到 Arduino 板子上:

這支程式所用的 baud rate 預設是 57600 bps,如果你的藍芽模組不是 57600 bps,記得先做適當的調整:

image

Step 3: 連接藍芽模組

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

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

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

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

image_thumb132

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

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

image_thumb13322

Step 4: 測試連線

打開 Android 上的 Blueterm App,然後跟著後面的步驟做:

image

按 Menu 鍵打開選單(如下圖左),為了方便,你可能會想要打開 Local echo,請按 Prefeneces,然後啟用 Local echo(如下圖右),你也可以把 Font size 調大一些,這樣眼睛會比較舒服:

image image

回到選單,選擇 Connect device,如下圖左所示,點擊 Scan for devices 掃瞄藍芽裝置,然後選擇 Arduino 的藍芽裝置(如下圖右):

 image image

如下圖所示,如果是第一次跟藍芽裝置連線,Android 會出現「藍牙配對要求」的畫面,此時必須輸入配對密碼(一般為 0000 或 1234)才能與此藍芽裝置連線:

 image

建立連線後 (此時藍芽裝置上的 LED 會停止閃爍),接著你就可以在 terminal 上輸入資料測試通訊:

image

如果一切順利,當你在 terminal 輸入 1 時,Arduino 板子上的 LED 就會打開,而且 Android 會收到 "Arduino Led On" 的訊息,當你輸入 0 時,Arduino 板子上的 LED 就會關掉,而且 Android 會收到 "Arduino Led Off" 的訊息。

image
▲ Arduino 板子上的 LED

參考資料

2012年7月22日 星期日

SpeakToArduino

這篇是寫給 amarino 初學者看的,目的是教導你如何執行 Amarino 的 SpeakToArduino 範例程式。SpeakToArduino 這個範例示範如何用 Android 手機聲控 Arduino。

所需材料
  • Android 手機一支
  • Arduino x1
  • bluetooth module x 1
  • 紅色 LED, 綠色 LED 及藍色 LED 各一顆(若無特定顏色 LED,可用其它顏色的 LED 取代),或一顆 RGB Led
  • 220 歐姆電阻 x 3
Step 1:安裝 Amarino

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

1) Amarino

2) Amarino Plug-in Bundle

3) SpeakToArduino

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_thumb422

Step 3:連接 LED

參考下圖,把紅、綠、藍三顆 LED 分別接到 pin 9, 10, 11,LED 的接法為: 長腳(陽極)接到 pin 腳,而短腳(陰極)串接一顆 220 ohm 電阻接到 GND:

image_thumb6

Step 4: 上傳 SpeakToArduino 程式

這裏下載,並使用 Arduino IDE 打開 SpeakToArduino 程式。

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

image

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

Step 5:連接藍芽模組

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

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

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

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

image_thumb13222

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

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

image_thumb1332222

Step 6:執行 SpeakToArduino App

首先,先利用 Amarino 搜尋藍芽設備,找到設備後,將藍芽設備的 MAC Address 抄起來(記得不要在 Amarino 設定任何 Event!):

image_thumb1432

打開 Android 手機上的 SpeakToArduino App,你會看到這樣的畫面:

image

選手機 Menu 鍵 Set BT Device Address,手機會跳出這個畫面,此時請輸入剛剛抄下來的 MAC Address,然後按下【Save】鈕:

image

按一下手機 Back 鍵退出 SpeakToArduino App,然後重新啟動 SpeakToArduino,這樣 App 才會用新的 Mac Adress 跟藍芽模組連線。

如果一切順利,Android 手機就會跟 Arduino 建立連線,並且呈現如下圖的畫面(注意手機上方的 Status bar,若有成功與 Arduino 連線,status bar 上會顯示 Active connection: … 的訊息):

image

按下【Click and order your color】鈕,手機會跳出語音辨識的畫面:

image

這時便可以說出想要的顏色,例如 red, green, blue, white, pink, orange, yellow, dark 或 off,這時候 Arduino 上三顆 LED 便會同步改變亮度。比如當我說 red,這時 Android 手機就會叫 Arduino 把紅色 LED 打開:

image

如果你有 RGB Led,可以用一顆 RGB Led 取代三顆 Led,這樣更可以呈現 LED 顏色變化的效果。

參考資料

2012年7月14日 星期六

HC-0x bluetooth module 選購指南

image_thumb

廣州匯承信息科技的 HC-0x 系列 bluetooth module 有很多種款式,我所知道的就有 HC-03, HC-04, HC-05, HC-06 和 HC-07 這麼多種。如果你有在使用這家公司的藍芽模組,可能會發現一個問題:「怎麼這家公司生產的藍芽模組每個都長得很像?」,而且有點麻煩的是,因為模組上沒有標示產品型號,所以要知道哪個才適用,在購買的時候可能會讓人有點頭痛。

如果你有這方面的困擾,這篇 HC-0x bluetooth module 選購指南也許可以幫助你。

產品差別

根據廣州匯承信息科技網站上的說明,HC-0x 系列產品主要差別有兩個:

1) HC-03 和 HC-05 是相容產品,HC-03 是工業用的,成本較高,需要低成本的可選擇 HC-05。HC-04 和 HC-06 是相容產品,HC-04 是工業用的,成本較高,需要成本低的可選擇 HC-06

2) HC-03/05 是主從一體化,可以用 AT 指令修改主從模式 (Master/Slave mode),功能比較豐富,使用靈活,價格比 HC-04/06 貴 2 塊 RMB。而 HC-04/06 使用簡單,價格低,需要低成本的用戶可以選擇,不過 HC-04/06 不能修改主從模式,因為出廠的時候就確定了。

簡而言之,HC-03 和 HC-04 是工業用的,HC-05 和 HC-06 是一般用的。奇數的 HC-03/05 是主從一體化的,而偶數的 HC-04/06 只有一種模式 (主機或從機,出廠時已確定)。另外,HC-07 則是精簡型的 HC-06,原本 HC-06 模組上有兩顆晶片,HC-07 只用一顆晶片,封裝完全兼容。

底下是一張簡易比較表:

模組型號 用途 模式
HC-03 工業用 (成本高) 主從一體
HC-04 工業用 (成本高) 單一模式 (主機或從機,出廠已確定)
HC-05 一般用 (成本便宜) 主從一體
HC-06 一般用 (成本便宜) 單一模式 (主機或從機,出廠已確定)
HC-07 一般用 (成本便宜),精簡型 HC-06 單一模式 (主機或從機,出廠已確定)
選購決策

1) 如果你只需要從機的話,那麼選擇 HC-06 或 HC-07 就夠用了。從機可以跟主機配對,和電腦 Bluetooth dongle 配對,也可以跟智慧型手機配對。

2) 如果希望藍芽模組一會兒是主機,可以跟另一個從機通信,一會兒又希望它是從機,可以跟另一個主機通信,那就要用 HC-05,利用 AT 指令動態切換主從模式。

3) 如果是環境比較惡劣、溫差大,容易受干擾的情況,建議選擇工業級的。

4) 第一次使用建議買帶底板的 (下圖),帶底板的模組通常已幫你做好了 5V 與 3.3V 電壓轉換,而且還拉引腳方便連接

image
▲ 帶底板的藍芽模組

如何分辨模組型號?

前面提到,這系列藍芽模組上沒有標示產品型號,那到底要怎樣分辨是否買對板子呢?底下有個簡單的方法(僅適用 HC-05/06 和 HC-7):

HC-06 主機有標白點:

image

HC-06 從機沒標白點:

image

HC-05 有標紅點:

image

至於 HC-07 的話,因為模組上只有一顆晶片,所以外觀比較迷你:

image 

Stackable Bluetooth Shield

另外,市面上也有把 HC-0x 模組做成 Arduino 擴充板的,也是一個不錯的選擇,例如 Stackable Bluetooth Shield:

image

這個板子的特點是可以直接插在 Arduino 板子上:

image

除了可以擴充 Arduino 藍芽通訊能力外,板子上還有兩個開關。一個是用來選擇 5V 或 3.3V 相容電壓,一般 Arduino 是用 5V 電壓,但若用其它板子如 LeafLabs Mapple (STM32) 和 Digilent 的 chipKit (PIC32),此時便可以切換到 3.3V 電壓與之相容。另一個開關是用來選擇 UART 的通訊方式,可選擇通過 UART 連接 Arduino,或是直接通過 USB 晶片 (FT232/Atmega32u4) 連接到電腦上,用 Serial Monitor 直接跟藍芽模組通信。

以上的資訊若有錯誤,請不吝指正,謝謝。

參考資料

2012年7月11日 星期三

C# and Arduino over Bluetooth

在 "Talk with Arduino using C# and Firmata" 一文中,我們提到如何利用 Firmata.NET 跟 Arduino 建立通訊。當時PC 是通過 COM 連接埠跟 Arduino通訊 (也就是用 USB cable 連接 Arduino 與 PC),這次我們將改用藍芽讓 C# 程式與 Arduino 建立通訊。底下以 HC-0x 藍芽模組為例說明:

1) 確定藍芽模組 baud rate 為 57600 bps。藍芽模組 baud rate 設定方法請參考 "Bluetooth module configuration", "Config bluetooth baud rate w/ Arduino" 或 "Arduino as an USB to TTL adapter"

2) 上傳 StandardFirmata 到 Arduino:打開 Arduino IDE,點選 File > Examples > Firmata > StandardFirmata,把程式上傳到 Arduino 板子上,切記在上傳程式的時候不要接藍芽模組,不然可能會影響上傳程序。

連接 Arduino 與藍芽模組

把 Arduino 5V  接到藍芽模組的 VCC,而 GND 接到 GND:

image_thumb1

有兩點要注意:第一是電源千萬不可接錯,不然可能會把藍芽模組燒壞,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。可參考下表:

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

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

image_thumb133

執行 C# Example

參考 "Loop back test" 一文建立電腦跟藍芽模組之間的配對,並且記住配對完成之後的藍芽連接埠號碼,本例用的是 COM21。

下載 C# 範例程式,打開 Blink 範例。選好 Serial Port (本例為 COM21),按下 Open 鈕:

2012-05-06 23h56_55

順利的話,Arduino 板子上的 LED 燈就會不斷地閃爍,亮一秒,滅一秒,如此循環不已:

image
▲ pin 13 上的 LED (L)

如果你有興趣,可以進一步參考 "Talk with Arduino using C# and Firmata" 一文,然後試一試 AnalogRead 和 Fade 這兩個範例。

參考資料

2012年7月9日 星期一

Arduino as an USB to TTL adapter

Arduino 也可以當成 USB to TTL 轉換器使用,方法很簡單,參考下圖,只要在 GND 和 Reset Pin 之間拉一條線就搞定了:

image 

這樣做會讓 MCU 停留在 reset mode,你便可以使用 RX (pin 0) 和 TX (pin 1) 直接與 USB to Serial Converter 晶片 (FT232R 或 Atmegaxxux) 溝通。

設定 HC-0x 藍芽模組

把 Arduino 變成 USB to TTL 轉換器可以做什麼?嗯...我首先想到的是可以拿來改 HC-0x 藍芽模組的設定。我在這篇介紹過如何用 USB to TTL 轉換器設定 HC-0x 藍芽模組,同樣的事 Arduino 完全可以勝任。

底下以修改 HC-0x 藍芽模組的 baud rate 為例說明:

1) 首先,參考上圖在 GND 和 Reset Pin 之間拉一條線

2) 把 Arduino 與藍芽模組連接起來

image

接線方法可以參考下表:

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

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

image_thumb133

先做個簡單的測試,看看藍芽模組通信正不正常。

打開 Serial Monitor,把換行模式改成 "No line ending",接著輸入 AT 指令(指令全部大寫),然後按下 Send 按鈕或 Enter 鍵,這時藍芽模組應該會回應 OK:

image

3) HC-0x 藍芽模組 baud rate 預設是 9600 bps,有些時候你可能會需要改變它的 baud rate,比如改成 57600 bps。要怎麼把 baud rate 修改為 57600 bps 呢?方法為:

輸入指令:

AT+BAUD7

這時藍芽模組應該會回應:

OK57600

像下圖這樣:

2012-06-25_00h21_10

以上的資訊,希望對你有幫助。

參考資料

2012年7月3日 星期二

Loop back test

Loop back test 是什麼?它是最快最簡單的測試方法,可以測試藍芽模組的接收和發送功能,用來檢查模組有沒有故障。HC-0x bluetooth module 可以做 Loop back test,也就是自己接收自己所發送的資料,方法很簡單,只要把藍芽模組的 TXD 接到自己的 RXD 就好。底下教你怎麼做:

材料
  • Arduino 板子 x 1
  • HC-0x 藍芽模組 x 1
  • 杜邦線和跳線些許
  • sscom 工具(英文版點此下載,簡體版點此下載)
連接 Arduino 與藍芽模組

下圖是 HC-0x 藍芽模組的外觀:

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

只要把 Arduino 5V  接到藍芽模組的 VCC,而 GND 接到 GND:

2012-05-06 21h54_09

要注意電源千萬不可接錯,不然可能會把藍芽模組燒壞。可參考下表:

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

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

image_thumb133

與電腦配對 (paring)

首先,打開藍芽裝置:

2012-05-06 21h57_51

按下【新增(D)…)】打開新增藍芽裝置精靈:

2012-05-06 21h58_08

勾選「我的裝置已設定並就緒可以找到」後按【下一步】,系統會將搜尋藍芽裝置,接著選 linvor 裝置,然後點【下一步】:

image

選擇「使用文件中的密碼金鑰】並輸入配對密碼 1234:

image

按下一步,系統會開始進行配對:

2012-05-06 22h07_31

配對成功:

2012-05-06 22h07_49

按下【完成】,回到藍芽裝置視窗,切到 COM 連接埠頁面,請記住名稱為 linvor 'Dev B' 的連接埠,例如下圖是 COM21:

image

Loop Back 測試

1) 拿一條跳線把藍芽模組的 TXD 和 RXD 對接起來,如下圖的綠線:

2012-05-06 22h14_21

2) 打開 SSCOM 工具,ComNum 選擇藍芽裝置的連接埠,例如 COM21:

image

這時候藍芽模組上的 LED 會停止閃爍變成恆亮。

點下方的 SEND 鈕,電腦就會發送訊息給藍芽模組,由於會 Loop back,所以正常的話,訊息便會馬上從藍芽模組傳回來顯示在視窗上方:

image

你可以試著修改要發送的訊息 (Data input),並且設定發送的間隔時間,勾選 Send every,SSCOM 就會每定期發送訊息持續的測試:

image

以上的資訊,希望對你有幫助。

參考資料