2012年6月14日 星期四

MultiColorLamp

這篇是寫給 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

2) Amarino Plug-in Bundle

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

image_thumb42

Step 3:連接 LED

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

image

Step 4: 上傳 MultiColorLamp Tutorial 程式

點 File > Examples > MeetAndroid > MultiColorLamp Tutorial 打開 MultiColorLamp Tutorial 程式:

image

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

image

配合 MulticolorLamp App,照下圖紅框處所示調整程式碼,將 'o', 'p', 'q' 三個事件旗號改成 'r', 'g', 'b':

image

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

Step 5:連接藍芽模組

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

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

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

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

image_thumb1322

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

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

image_thumb133222

Step 6:執行 MultiColorLamp App

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

image_thumb143

打開 MultiColorLamp App,輸入剛剛抄下來的 MAC Address,然後按下【Set Device ID】:

image

如果一切順利,Android 手機就會跟 Arduino 建立連線,並且呈現如下圖的畫面:

image

當你滑動 Red, Green, Blue 三個 SeekBar,這時候 Arduino 上三顆 LED 便會同步改變亮度:

image

示範影片(影片裏用的是一顆 RGB Led):

參考資料

21 意見:

Unknown 提到...

您好:

我想請問因為您的範例是使用USB cable來連結Uno和PC,如果現在COM port是5的話,我沒有下載程式來看,如果程式裡並沒有設定COM Port的地方,一旦將fireware下載到Uno單獨執行時,那麼Uno板子上的RX,TX是算一個COM Port嗎?如果是它在哪裡設定和藍芽模組做通訊?謝謝!

Ancle 提到...

您好:

上述是我的留言,之所以這樣問是因為以下網站有出toolkit將會支援將LabVIEW的程式下載到Uno單獨執行,看到你也有在寫LabVIEW,大家互相研究
http://www.3d-svs.com/

coopermaa 提到...

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 在網路上可以下載嗎?

Ancle 提到...

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

coopermaa 提到...

「MultiColorLamp Tutorial 程式如何設定COM Port?」
要設定什麼 COM Port? 對 Uno 來說,它就只有 Serial Port 啊。Uno 跟藍芽之間溝通是透過 TX 跟 RX,藍芽也有 TX 跟 RX,Uno 跟藍芽在連接線路時,必須 TX 對 RX,RX 對 TX。這有解答你疑惑嗎?

OK,,等 toolkit 可以下載時,我也來玩看看.. 謝謝

Ancle 提到...

您好:
目前已開始測試計劃,但是要填寫表格,雖然上面是寫學生或教授才可申請,我已有申請,你也可以申請看看
http://www.3d-svs.com/news/75-3dmicro-toolkit-arduino-beta-version

coopermaa 提到...

Hi Ancle,

謝謝你提供的資訊。我也填好了,希望一切順利。

芭蕉葉上聽雨聲 提到...

請問 MultiColorLamp.apk 這樣的程式是如何寫出來的, 有沒有 source code?

coopermaa 提到...

是用 Eclipse IDE 和 Java 語言寫的喔。
有 source code,可以在底下連結下載:
http://goo.gl/afDeG

芭蕉葉上聽雨聲 提到...

我開啟既存專案MultiColorLamp並載入AmarinoLibrary_v0_55.jar到Eclipse,一切都沒問題, Run As Android Application也沒問題, 但手機螢幕卻顯示嚴重所誤, 請問問題在哪?

cooper maa 提到...

你有載入 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

cooper maa 提到...

@pizgchen, 可以開一下 Android LogCat,裏面應該會有除錯訊息。Logcat 視窗位置: Window -> Show View -> Other,點Android -> LogCat

bryant kobe 提到...

請問 我Android 手機就跟 Arduino 建立連線了但為什麼調亮度都不會變

cooper maa 提到...

你有試過 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=
為範例測試的

Cooper Maa 提到...

可能要把 jar 檔放在正確的位置才行
試試在專案裏建一個 libs 資料夾,把 jar 檔搬到 libs 資料夾,然後再重新 build 看看

許志毓 提到...

謝謝上面的問題解決了

我參考過您的http://coopermaa2nd.blogspot.tw/2013/01/amarino-with-softwareserial.html

我測試過我的led可以正常運作

我的藍芽可以用手機上的amarion 2.0連線到

我是直接安裝您提供的apk

可是調整顏色仍然 不會改變燈泡的顏色

這可能是什麼原因呢?!

Cooper Maa 提到...

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

感覺藍芽端是有收到手機發出去的訊號

Cooper Maa 提到...

RGB LED 可以正常動作,嗯

那你有修改過 MultiColorLampTutorial.pde 的程式碼嗎?

如果都沒有動過的話
建議你改用 Amarino with SoftwareSerial

用 SoftwareSerial 來接藍芽模組,然後把標準的 hardware serial port (即 Pin 0 & 1) 留下來當作 debug 用