這篇是寫給 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
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:連接 LED
參考下圖,把紅、綠、藍三顆 LED 分別接到 pin 9, 10, 11,LED 的接法為: 長腳(陽極)接到 pin 腳,而短腳(陰極)串接一顆 220 ohm 電阻接到 GND:
Step 4: 上傳 SpeakToArduino 程式
到這裏下載,並使用 Arduino IDE 打開 SpeakToArduino 程式。
程式所用的 baud rate 預設是 57600 bps,如果你的藍芽模組不是 57600 bps,請做適當的調整:
然後把程式上傳到 Arduino 板子上。
Step 5:連接藍芽模組
我用的是廣州匯承信息科技的 HC-0x 系列藍芽模組,下圖是 HC-0x 藍芽模組的外觀:
連接方法很簡單,照下表把 Arduino 和藍芽模組連接起來就好:
Arduino | 藍芽模組 | 備註 |
5V | VCC | 注意電源不可接錯 |
GND | GND | 注意電源不可接錯 |
RXD | TXD | |
TXD | RXD |
有兩點要注意:第一是電源千萬不可接錯,不然可能會燒壞藍芽模組,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。
通電之後,藍芽模組上的 LED 會一直閃爍:
Step 6:執行 SpeakToArduino App
首先,先利用 Amarino 搜尋藍芽設備,找到設備後,將藍芽設備的 MAC Address 抄起來(記得不要在 Amarino 設定任何 Event!):
打開 Android 手機上的 SpeakToArduino App,你會看到這樣的畫面:
選手機 Menu 鍵 Set BT Device Address,手機會跳出這個畫面,此時請輸入剛剛抄下來的 MAC Address,然後按下【Save】鈕:
按一下手機 Back 鍵退出 SpeakToArduino App,然後重新啟動 SpeakToArduino,這樣 App 才會用新的 Mac Adress 跟藍芽模組連線。
如果一切順利,Android 手機就會跟 Arduino 建立連線,並且呈現如下圖的畫面(注意手機上方的 Status bar,若有成功與 Arduino 連線,status bar 上會顯示 Active connection: … 的訊息):
按下【Click and order your color】鈕,手機會跳出語音辨識的畫面:
這時便可以說出想要的顏色,例如 red, green, blue, white, pink, orange, yellow, dark 或 off,這時候 Arduino 上三顆 LED 便會同步改變亮度。比如當我說 red,這時 Android 手機就會叫 Arduino 把紅色 LED 打開:
如果你有 RGB Led,可以用一顆 RGB Led 取代三顆 Led,這樣更可以呈現 LED 顏色變化的效果。
22 意見:
您好:
想請問一下除了apk檔以外,是否有原始碼可以參考?謝謝!
B/R
Ancle
您好:
有的,App 跟 Arduino 的 source code 都放在 Google code 上面:
http://code.google.com/p/amarino-examples/downloads/list
您好:
1.謝謝!我有進去downloads看,原來少按了search
2.我是java新手,我使用Eclipse的Juno版本開啟出現Unable to resolve target 'android-10'的錯誤訊息,有google了一下也有修改project.properties的內容,情況還是一樣,另外layout的部份也是沒有辦法正常顯示,想請問如何才能正常開啟?謝謝!
Android-10 這個是 Android 2.3.3,也就是 API level 10
Unable to resolve target 'android-10' 這個訊息是說你系統上沒有裝 Android 2.3.3 的 SDK Platform
參考這張圖:
http://goo.gl/7ARjs
看你的系統裏裝了哪些 Android API,勾選一個你有的就行了
或者利用 Window > Android SDK Manager 裝個 Android 2.3.3 以上的 SDK 也可以
您好:
1.謝謝!我安裝Android 2.3.3的SDK Platfrom,大部份都正常,程式碼的部份還是有錯誤,這方面我再自行研究
2.另外,我不懂的是,我本身已經有安裝Android 2.2和4.1的SDK Platfrom,如果要選擇使用4.1的SDK(在沒有安裝2.3.3時)該如何設定?因為當我安裝2.3.3的SDK後在layout的頁面才會出現2.2,2.3.3,4.1的選項可以選,選擇4.1時是OK的,因為可以向下相容,重點還是在為什麼沒有安裝2.3.3時不會出現2.2和4.1讓我選擇?
您好:
第二個問題我自己找到答案了,是我自己搞烏龍,之前有說更改project.properties,我將4.1的SDK記成android-15,應該是android-16才對(雖說有註記不能修改此檔案),在不安裝2.3.3的SDK的情況下改了之後,就會有已安裝的2.2和4.1的SDK可選擇
話說回來,之前是安裝後再移除2.3.3的SDK,在試我說的情況,我後來還是重新安裝2.3.3的SDK以免有什麼未知的情況產生
你說著說著,自己把問題解決了~ :)
加油~ 歡迎常來交流
您好 小弟近兩年開始使用Arduino幫公司開發工業控制的設備,大多都是用GPIO功能搭配電晶體開關放大到24V-12V的訊號開關之類的,最近使用PWM analogWrite的功能透過H橋電路控制一顆24V直流馬達的正反轉煞車停止,再搭配編碼盤與光電開關,訊號回授至中斷腳位,用attachInterrupt去回授馬達的實際轉動量,旦發現在上述的使用條件下,我用analogWrite啟動馬達後,似乎中斷功能的ISR副程式的累加值會異常執行累加很多次,我用digitalWrite就不會,不知道是不是Arduino的Inteerupt與PWM功能有衝突 或是電路的問題 大哥不知道有沒有類似的經驗??? 如果可以幫忙的話 可以在跟您討論相關的電路與程式碼
http://arduino.cc/forum/index.php/topic,116490.0.html
哇塞! 有高手光臨寒舍! 幸會,幸會。
照你的描述看來,感覺像是電路的問題
Sorry, 我電路方面的程度還不夠,沒辦法給你什麼意見...
BTW, 早上有位叫 MarkT 回覆你的問題了,在arduino forum 上
我想請問:
click and order your colorc後
並沒有出現語音辨識的畫面
而是顯示連線問題 及驚嘆號符號
這是什麼原因????
PS:APP已確定安裝 藍芽已確定連線
@chen
你可以抓畫面截圖給我看嗎?
請問app有限制要android 多少以上的嗎?(例如2.3)
網路上這個版本是用 Android SDK API Level 10,也就是 Android 2.3.3:
http://code.google.com/p/amarino-examples/downloads/list
不過,如果你想支援更早之前的 Android 版本,例如 Android 2.2,只要把 source code 下載回來改一下 API level 並重新編譯即可
@chen,
先前遇到的語音辨識出現「連線問題」,後來有沒解決? 是不是 WiFi 連線或 3G 訊號收不到的關係?
恩 連線問題已解決!! 的確是網路問題
但目前還是有以下2個問題
(1)
我在android 4.0 系統的手機 有出現語音辨識的畫面了,可是led卻沒有亮,
arduino 已經有燒speak程式了
(2)
在android 2.2系統上 按下click and order your color後
出現 應用程式 speaktoarduino
(程序:edu.mit.media.
hlt.speaktoarduino)
未正常終止請在試一次
@chen,
(1) led 沒亮可能是語音辨識沒有正確辨識,或是 Arduino 端的程式不正確的關係
(2) 這個 speaktoarduino.apk 是用 Android 2.3 的 API,如果要在 anrdoid 2.2 上跑,source code 可能要重新編譯才行喔。
你可以到這裏下載 source code:
http://code.google.com/p/amarino-examples/downloads/list
把 SpeakToArduino.zip 下載回來後,把底下這行:
改成這樣,然後重新編譯應該就可以跑了:
底下哪行 改成怎樣?
Sorry, 留言板會把 HTML tag 吃掉。我是說把這行:
uses-sdk android:minSdkVersion="10"
改成這樣應該就可以了:
uses-sdk android:minSdkVersion="8"
恩 這我試過了!!!
一樣會出現那個問題
我的手機型號是htc wildfire
可能得把 Logcat 請出來看 debug output 了
張貼留言