App Inventor 直接控制樂高 EV3 機器人 Direct Command

CAVEDU EV3 藍牙系列教學文,最大也最不好寫一篇…  終於寫出來了。必須要先謝謝探奇邱老師的分享。我相信 App Inventor 2 應該很快就會發布 EV3 相關的控制元件,到時候要控制EV3就不用這麼辛苦了。

本程式的 .aia 原始檔請由此頁面下載: http://www.appinventor.tw/ev3_direct_

 

請先參考 Xander 的教學文, 文中提到這些文件是從樂高非正式管道流出的. 雖然還未正式公布, 但既然我們已經做出來了, 就分享吧. 請參考樂高官方文件的 Communication Developer Kit 文件。

Xander 自己也寫了一篇 TCP/IP 來直接控制EV3的教學。大陸網友也有使用 iOS 來直接控制EV3的文章

什麼是Direct Command?為什麼需要它?

Direct Command 是樂高公司所提供的一種通訊格式。可以在機器人端不需要任何程式的情況下,只要通訊建立(USB、藍牙與 Wifi)之後對EV3主機發送位元陣列就能達到諸多控制效果。因此不限於智慧型手機,只要是能夠與樂高機器人無線通訊的方式(藍牙或Wifi),都能用這樣的架構來通訊。(請注意:NXT的無線通訊方式只有藍牙)

多謝了 Direct command, 只要與 EV3 藍牙配對之後,機器人端不需要任何程式就可以由手機遙控了。

這樣的好處在於您不需要維護兩份程式碼,有時候改來改去很容易改錯或頭暈(我常常這樣拿錯的來改,改到發脾氣…) 另外手機端與機器人端的程式應該都是不同的程式語言,這樣也會增加開發上的難度。

您可以使用本份程式的架構來修改成姿態控制(orientation sensor)、觸碰點控制、語音控制等等,讓您的機器人更豐富。

您可以參考我們很久之前寫過的[NxtDirectCommand的SetInputMode參數說明],就能略窺一二 Direct Command 的運作原理。請參考CAVEDU 在 App Inventor 中文教學網上的文章(同步刊載於Robocon 官網).

根據樂高官方文件,您可以使用 Direct Command 做到的重要功能有:

  1. 啟動/停止主機上指定檔名的程式。
  2. 控制馬達啟動、停止、轉向、電力與角度上限。
  3. 取得感測器值與狀態
  4. 其餘請參考官方文件


我可以用 App Inventor 的 Nxt 相關元件來控制樂高EV3機器人嗎?

不行!

因為 NXT 與 EV3 的韌體是完全不同的架構,Direct Command 的架構也完全不同。所以您無法使用 App Inventor 的 Nxt 相關元件來控制樂高EV3機器人。


來介紹程式吧

Designer

控制介面分成幾個元件:

1. 最上面的ListPicker 用來選擇藍牙裝置,並在挑選完畢之後試著連線。

2. 中間的 Slider 用來調整電力,也就是 speed 變數值。

3, 中間的五個按鈕就是控制機器人的各個動作,事實上就是馬達電力的不同組合。換言之,左右調整電力之後再點選[前進]按鈕的話,機器人前進的速度也會不一樣喔。

4. 最下方的[斷線]按鈕則是中斷藍牙連線

ev3001


 

Blocks

來介紹程式吧,我們使用 start / stop 這兩個副程式來處理 Direct Command。它們就是本程式的靈魂。

以 start 副程式來說,它可接受兩個參數:port / speed。您可以看到每次呼叫它時,都會初始化一個名為 data 的空清單,以這個範例來說,每一個清單元素代表一個位元組長度的內容。格式為:(13, 0, 0, 0, 128, 0, 0, 165, 0, port , 129, speed , 166 ,0, port )。這當然需要您去查找官方文件中,哪一個欄位是代表哪一筆資料。在此我們是將 port 與 speed 做出來。透過 speed 變數就可以直接控制馬達。這樣的架構,當您要改用姿態控制、觸碰點控制、語音控制時,整體架構是不變的,差別只在於如何修改speed 變數值而已。

 

ev3002 ev3003

連線設定,這裡就比較簡單,設定ListPicker 內容為藍牙裝置配對清單,點選之後就呼叫 BluetoothClient元件去發起連線。

ev3006

接下來是各個按鈕事件,由於相當類似我們就不一一介紹了。按下前進按鈕[Button_FORWARD] 會先呼叫 stop 副程式停下所有馬達動作之後再用 start 副程式讓馬達轉動。speed 變數值是由 Slider 的位置所決定的。

ev3007

左轉與右轉

ev3008

後退與停止

ev3004

 

 

2 thoughts on “App Inventor 直接控制樂高 EV3 機器人 Direct Command

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *