做了許久的勞作,再來就是想花一點時間在改進機電與操控程式的部份。年初曾玩了好一陣子的「藍芽無線遙控科學魔法車」,觀察孩子們以搖桿在操控 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 加上兩個輪子。
檔案下載
- Arduino 程式碼:MeArm_BlueTooth.ino
- App Inventor 2 程式碼:MeArm_BlueTooth.aia
嗨,我用你的代碼,但它不能很好地工作,因為它沒有停留在位置並不起作用38400,只有9400,這可能是
回覆刪除老師,請教您,我照著你的方法,也作了一隻MeArm。接著載入了您上面提供的arduino程式,也進入了您提供的app inventor 。
回覆刪除只是為什麼我的HC-05只能配對,卻不法連線呢?
老師,請教您,我照著你的方法,但程式和app都無法運作
回覆刪除