2014年11月27日 星期四

Android : MeArm 藍芽遙控 App

買了一片 9 元的單面洞洞板製作了 MeArm 搖桿的控制板,便宜的果然是最貴的,技術不好加上用料貪便宜,製作第一個時,著實花了不少的時間,不過,困境倒是訓練解決問題能力的好機會,有了經驗以後,再製作時快很多。

做了許久的勞作,再來就是想花一點時間在改進機電與操控程式的部份。年初曾玩了好一陣子的「藍芽無線遙控科學魔法車」,觀察孩子們以搖桿在操控 MeArm 時,其實有不少人對沒有標示功能說明的搖桿是有障礙的,因此,試著將遙控科學魔法車的經驗遷移到 MeArm 的操控上,在搖桿控制板上焊了四個腳位的 2.54 母座,可以方便的插上 HC-05 藍芽模組,線路依底下的對應關係來連接:

  • HC-05 VCC : Arduino 5V
  • HC-05 GND : Arduino GND
  • HC-05 TXD : Arduino RXD (D0)
  • HC-05 RXD : Arduino TXD (D1)


加完 HC-05 藍芽模組的 MeArm 如下圖:



Arduino 程式的部份,當然得加上處理接收到訊息,並轉為伺服馬達動作的指令。先用最簡單的方式,以不同的字母代表要控制哪一個伺服馬達,而大寫的字母代表要增加母達的角度,小寫的字母代表要減少馬達的角度。對應的關係如下:
  • 底部馬達:B (增加)、b (減少)。
  • 左側馬達:L (增加)、l (減少)。
  • 右側馬達:R (增加)、r (減少)。
  • 爪子馬達:C (增加)、c (減少)。
詳細的程式碼請參考「MeArm_BlueTooth.ino」。


遙控用的 Android App 則是以 App Inventor 2 來寫,我偷懶,直接拿之前遙控科學魔法車的來修改,拿掉了為了相容 S4A ,資料編碼及解碼的部份,程式其實沒幾個「積木」就完成了。

這個 Android App 主要的工作是,當使用者按下取代搖桿功能的按鈕時,幫忙透過藍芽送出 B、b、L、l、R、r、C 和 c 等代表馬達動作的指令符號。為了讓按鈕有「連發」的功能,使用了一個 Clock 元件的 Timer 定時執行指令,八個控制按鈕的「TouchDown」事件會將要送出的指令設給全域變數「currentCmd」,而「TouchUp」事件則會將「currentCmd」設為空字串。Clock1 的 Timer 則會檢查藍芽是否已連線及「currentCmd」是否有待執行的指令,如果有,每 10ms 會送出一次指令。

詳細的程式請參考「MeArm_BlueTooth.aia」。這個檔案下載後,進入 App Inventor 2 的網站後,可以利用「Projects」選單中的「import project (.aia) from my computer」來匯入程式,再依人需求修並編譯,安裝到 Android 載具中使用。

底下是 MeArm 加了藍芽模組後,以手機操控的影片:


之前玩科學魔法車時,控制兩個輪子的 L293D ,扣掉 VCC 及接地,尚需要使用 Arduino  六個腳位,還有空間可以玩,接下來就可以為 MeArm 加上兩個輪子。

檔案下載

相關文章




1 則留言:

  1. 嗨,我用你的代碼,但它不能很好地工作,因為它沒有停留在位置並不起作用38400,只有9400,這可能是

    回覆刪除

 
© 2009. Design by Pocket