2018年2月13日 星期二

如何設計Android手機遙控Otto

Otto機器人動作之程式碼分析後,並了解Otto的程式碼概念後,我們就可以著手以mBlock來設計所有的舞步,並搭配藍牙無線技術,讓Android手機可以來控制自己設計出來的Otto動作,而本文將要說明如何做到這些目標。會分成底下幾個部分來說明:

  • Otto的mBlock舞步程式設計
  • Otto的mBlock藍牙程式設計
  • MIT App Inventor程式設計

先使用MIT App Inventor設計Android手機程式,在著手設計mBlock程式;或是先設計mBlock程式,在設計Android手機程式,都是可行的流程。不過筆者比較習慣先從Otto本身的mBlock程式設計開始,而在設計之前有件事要先想好:「手機App與Arduino的溝通方式。」

本文會使用藍牙當成Arduino與Android手機溝通的媒體,如上面投影片提到的所用的文字語言不一樣,雙方可能也無法順利溝通。因為是手機要來控制Otto機器人,那麼手機就會先發送訊息給Otto,Otto收到訊息後不見得會做預期的動作,所以要先定義好兩者的溝通方式。筆者訊息的設計方式為
手機端傳送小寫字母 s 到 otto,otto收到小寫字母 s 後做抖右腳的動作。
小寫字母 s訊息傳送過程如下圖:

手機的藍牙會先送給Otto上的藍牙模組,藍牙模組再透過TX/RX兩個腳位與Nano通訊。

mBlock 積木設計

在mBlock裡,可以使用<串口可讀取字節數><串口讀取一個字節>兩個積木來取得藍牙模組送來的訊息。下圖中的馬達歸位與抖右腳為自訂積木,抖右腳可參考筆者Otto機器人動作之程式碼分析一文,而馬達歸位就是將四個Servo的角度設定為90度。(注意:此部分不需要將藍牙模組接到Nano上。)


接著可以使用 Arduino IDE 中的序列埠監控視窗(Serial Monitor)工具來測試 mBlock 的程式,而mBlock的串口通訊預設速率為115200

此時,Otto要抖右腳三次才算正常,這時可以把藍牙模組接到Nano上。接著可進行Android手機程式設計。

MIT App Inventor積木設計

在MIT App Inventor部分,筆者使用到底下幾個積木功能:


以上幾個積木請參考各自的連結說明。筆者的版面配置如下圖:

此App的積木簡要說明如下:
Android手機是透過BluetoothClient 藍牙用戶端的 SendText(text text) 積木送訊息給Otto上的藍牙模組,也就是上圖中的 call Otto 藍牙客戶端連線.SentText積木


本文的mBlock程式範例與MIT App Inventor範例皆可在此下載

成果影片: