這篇是寫給 amarino 初學者看的,目的是教導你如何執行 Amarino 的 MultiColorLamp 範例程式。
所需材料
- Android 手機一支
- Arduino x1
- bluetooth module x 1
- 紅色 LED, 綠色 LED 及藍色 LED 各一顆,或是一顆 RGB Led
- 220 歐姆電阻 x 3
Step 1:安裝 Amarino
到 http://www.amarino-toolkit.net/ 下載下列 App 並安裝到 Android 手機上:
1) Amarino
3) Multicolorlamp (這是 buildcircuit.com 的版本)
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: 上傳 MultiColorLamp Tutorial 程式
點 File > Examples > MeetAndroid > MultiColorLamp Tutorial 打開 MultiColorLamp Tutorial 程式:
程式所用的 baud rate 預設是 57600 bps,如果你的藍芽模組不是 57600 bps,請做適當的調整:
配合 MulticolorLamp App,照下圖紅框處所示調整程式碼,將 'o', 'p', 'q' 三個事件旗號改成 'r', 'g', 'b':
然後把程式上傳到 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:執行 MultiColorLamp App
首先,先利用 Amarino 搜尋藍芽設備,找到設備後,將藍芽設備的 MAC Address 抄起來(記得不要在 Amarino 設定任何 Event!):
打開 MultiColorLamp App,輸入剛剛抄下來的 MAC Address,然後按下【Set Device ID】:
如果一切順利,Android 手機就會跟 Arduino 建立連線,並且呈現如下圖的畫面:
當你滑動 Red, Green, Blue 三個 SeekBar,這時候 Arduino 上三顆 LED 便會同步改變亮度:
示範影片(影片裏用的是一顆 RGB Led):
您好:
回覆刪除我想請問因為您的範例是使用USB cable來連結Uno和PC,如果現在COM port是5的話,我沒有下載程式來看,如果程式裡並沒有設定COM Port的地方,一旦將fireware下載到Uno單獨執行時,那麼Uno板子上的RX,TX是算一個COM Port嗎?如果是它在哪裡設定和藍芽模組做通訊?謝謝!
您好:
回覆刪除上述是我的留言,之所以這樣問是因為以下網站有出toolkit將會支援將LabVIEW的程式下載到Uno單獨執行,看到你也有在寫LabVIEW,大家互相研究
http://www.3d-svs.com/
Hi, 額~
回覆刪除我 Uno 跟 PC 是用 USB cable 連接沒錯
你是說 MultiColorLamp Tutorial 程式裏沒有設定 COM Port 的地方嗎? 還是???
其實 COM Port 是從 PC 端這邊看的,對 Uno 來說它只有 Serial Port 並沒有 COM Port,而 Uno 的 Serial Port 是 RX 跟 TX 組成的,藍芽模組也是接在 Uno 的 RX/TX 上面...
請問那個 http://www.3d-svs.com/ 出的 toolkit 在網路上可以下載嗎?
Hello,
回覆刪除1.對,我是說在MultiColorLamp Tutorial 程式如何設定COM Port?我知道COM Port是從PC端來看,另外我的問題是如果Uno沒有辦法設定設定COM Port,那麼fireware是獨立執行的話,它是如何和藍芽或其他裝置溝通?
2.你說的toolkit可在以下下載,但是它目前只有針對PIC32,我所以的是針對Arduino Expansion,目前還沒有開放下載,作者是說應該不會多於一個月
http://www.3d-svs.com/3dmicro-toolkit/download
「MultiColorLamp Tutorial 程式如何設定COM Port?」
回覆刪除要設定什麼 COM Port? 對 Uno 來說,它就只有 Serial Port 啊。Uno 跟藍芽之間溝通是透過 TX 跟 RX,藍芽也有 TX 跟 RX,Uno 跟藍芽在連接線路時,必須 TX 對 RX,RX 對 TX。這有解答你疑惑嗎?
OK,,等 toolkit 可以下載時,我也來玩看看.. 謝謝
您好:
回覆刪除目前已開始測試計劃,但是要填寫表格,雖然上面是寫學生或教授才可申請,我已有申請,你也可以申請看看
http://www.3d-svs.com/news/75-3dmicro-toolkit-arduino-beta-version
Hi Ancle,
回覆刪除謝謝你提供的資訊。我也填好了,希望一切順利。
請問 MultiColorLamp.apk 這樣的程式是如何寫出來的, 有沒有 source code?
回覆刪除是用 Eclipse IDE 和 Java 語言寫的喔。
回覆刪除有 source code,可以在底下連結下載:
http://goo.gl/afDeG
我開啟既存專案MultiColorLamp並載入AmarinoLibrary_v0_55.jar到Eclipse,一切都沒問題, Run As Android Application也沒問題, 但手機螢幕卻顯示嚴重所誤, 請問問題在哪?
回覆刪除你有載入 AmarioLibrary_v0_55.jar? 咦, MultiColorLamp 專案裏就有 AmarioLibrary_v0_55.jar 了啊,應該是不需要再另外載入才對。嚴重錯誤? 可以截取一下畫面嗎? ps: 可以用 Eclipse 的 DDMS 抓畫面
回覆刪除不好意思~我不會在此處貼圖, 所以請移尊就駕到 http://www.robofun.net/forum/viewthread.php?tid=7747&page=1&extra=#pid30658
回覆刪除@pizgchen, 可以開一下 Android LogCat,裏面應該會有除錯訊息。Logcat 視窗位置: Window -> Show View -> Other,點Android -> LogCat
回覆刪除請問 我Android 手機就跟 Arduino 建立連線了但為什麼調亮度都不會變
回覆刪除你有試過 Amarino 控制 LED 這個範例嗎? LED 會正常閃爍嗎? 有的話才代表通訊是正常的:
回覆刪除http://coopermaa2nd.blogspot.tw/2012/06/amarino-android-arduino.html
另外,在用 Amarino 跑 multicolorlamp 前,建議事先透過 Serial 測試 Arduino 程式,以先確定 PWM 可以正常動作。
01-15 06:40:08.195: E/AndroidRuntime(10644): FATAL EXCEPTION: main
回覆刪除01-15 06:40:08.195: E/AndroidRuntime(10644): java.lang.NoClassDefFoundError: at.abraxas.amarino.Amarino
01-15 06:40:08.195: E/AndroidRuntime(10644): at edu.mit.media.amarino.multicolorlamp.MultiColorLampInterface.onClick(MultiColorLampInterface.java:70)
01-15 06:40:08.195: E/AndroidRuntime(10644): at android.view.View.performClick(View.java:3549)
01-15 06:40:08.195: E/AndroidRuntime(10644): at android.view.View$PerformClick.run(View.java:14393)
01-15 06:40:08.195: E/AndroidRuntime(10644): at android.os.Handler.handleCallback(Handler.java:605)
01-15 06:40:08.195: E/AndroidRuntime(10644): at android.os.Handler.dispatchMessage(Handler.java:92)
01-15 06:40:08.195: E/AndroidRuntime(10644): at android.os.Looper.loop(Looper.java:154)
01-15 06:40:08.195: E/AndroidRuntime(10644): at android.app.ActivityThread.main(ActivityThread.java:4945)
01-15 06:40:08.195: E/AndroidRuntime(10644): at java.lang.reflect.Method.invokeNative(Native Method)
01-15 06:40:08.195: E/AndroidRuntime(10644): at java.lang.reflect.Method.invoke(Method.java:511)
01-15 06:40:08.195: E/AndroidRuntime(10644): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-15 06:40:08.195: E/AndroidRuntime(10644): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-15 06:40:08.195: E/AndroidRuntime(10644): at dalvik.system.NativeStart.main(Native Method)
這是我跑程式出現的意外關閉的log cat error
我參考過http://www.robofun.net/forum/viewthread.php?tid=6671&extra=page%3D3
有將.jar檔放進project中
是以http://code.google.com/p/from-arduino-to-android-to-arduino/downloads/detail?name=MulticolorLampWithUserInput.zip&can=2&q=
為範例測試的
可能要把 jar 檔放在正確的位置才行
回覆刪除試試在專案裏建一個 libs 資料夾,把 jar 檔搬到 libs 資料夾,然後再重新 build 看看
謝謝上面的問題解決了
回覆刪除我參考過您的http://coopermaa2nd.blogspot.tw/2013/01/amarino-with-softwareserial.html
我測試過我的led可以正常運作
我的藍芽可以用手機上的amarion 2.0連線到
我是直接安裝您提供的apk
可是調整顏色仍然 不會改變燈泡的顏色
這可能是什麼原因呢?!
LED 顏色不會變?
回覆刪除建議先用 analogWrite 測試一下 pin 9, 10 , 11,看看 pwm 功能正不正常:
http://coopermaa2nd.blogspot.com/2010/12/arduino-lab3-led.html
我有用http://ardx.org/src/circ/CIRC14-code-SPAR.txt
回覆刪除提供的範例測試過 燈泡會變色
ps:我也是用RGB的LED燈泡
我的藍芽模組是
https://www.sparkfun.com/products/10269
我有看Amarino2.0 的 monitoring
看起來是有傳一些東西
附上截圖
https://dl.dropbox.com/u/27817671/Screenshot_2013-01-17-14-07-32.png
感覺藍芽端是有收到手機發出去的訊號
RGB LED 可以正常動作,嗯
回覆刪除那你有修改過 MultiColorLampTutorial.pde 的程式碼嗎?
如果都沒有動過的話
建議你改用 Amarino with SoftwareSerial
用 SoftwareSerial 來接藍芽模組,然後把標準的 hardware serial port (即 Pin 0 & 1) 留下來當作 debug 用