Arduino探索漫遊車3—程式設計

遠端控制應用程式

在ArduRover系列的最後一部分,我發佈了一個機器人在電腦的控制下行駛的視訊。電腦上運行的程式透過一個序列埠將資料發送給Arduino,然後Arduino傳送資料給機器人。但是,這種設定有幾個比較大的問題。

首先,透過鍵盤來控制機器人是非常困難的。下圖是我在視訊中用來控制機器人的應用程式的一個截圖。

ardurover

圖3:測試馬達的C#應用程式

這是在Visual Studio 中的.NET框架下用C#語言來編寫的。雖然它能夠對測試馬達起到一些作用,但是對於一次只調整一側馬達來控制機器人仍是一個挑戰。這真是令人心煩。用戶唯一可以控制的就是設定馬達轉速的滑動按鈕和使機器人立馬停止工作的按鈕。

我遇到的另一個比較大的問題是用來測試的筆記型電腦比較重,不能用一隻手拿著隨身攜帶,然後空出另一隻手來控制機器人。好吧,一個隨身帶著筆記型電腦和寵物機器人的人看起來可能是有點奇怪。

為了使控制器變得更加簡單和可攜式,我需要一些可以連接到Arduino,並且重量輕、便於長時間攜帶的、最好是可以手持的裝置。如果隱蔽性比較好那就更好了。起初,我打算使用一個可以安裝在Arduino上的舊RC飛機控制器,但是後來我想到了一個更簡單的解決方案:我的Android手機!它完美地符合所有要求:很輕並且可以手持。我們只需要透過USB埠或藍牙將其與Arduino連接即可。

我提出的下一個應用程式是透過Android Studio用Java編寫的。這比上文中的C#語言應用程式高級得多。它具有多個螢幕,允許使用者控制所有子系統,而不僅僅是馬達。讓我們來看一下其中一個螢幕上的佈局。

ardurover

圖4:基本的應用程式佈局

每個螢幕都會被分成幾個部分。在螢幕的兩側,有兩個滑動按鈕(上圖中1和2標記的地方)來分別對左側和右側的馬達設定轉向和轉速。這樣的佈置可以使用戶能夠以更自然的方式來對機器人的行動進行控制:滑動按鈕向上行動使其前進,向下行動使其後退。按鈕扭矩越大,那一側的馬達轉速就越大。很簡單!

接下來是下面(3)的一個大“停止”按鈕。它的作用看起來很好解釋:按下這個按鈕,馬達就會停止。當我用C#應用程式測試機器人時,這應該是最有用的按鈕了,所以我決定在該應用程式中保留這個設計。在應用程式的頂部,有一個帶有多個標籤的欄(4)。由於控制內容太多,無法都呈現在一個螢幕上,這個條形欄可以使使用者在不同螢幕間切換。該螢幕中的內容顯示在中心位置(5)。這意味著使用者可以透過任何螢幕上來控制機器人以及停止所有馬達!

這些螢幕(按照應用程式頂部條形欄中的排列順序)為:
 

  • “相機”屏 – 使用者可以更改相機位置,拍攝並保存圖片。目前相機的傾斜角度和水平位移也都顯示在這裡。中間的藍色大框中還能顯示接收到的圖像。
ardurover

圖5:相機屏

 

  • “GPS”屏 – 在當前版本應用程式中還未實現。這個想法是希望有一個地圖,可以顯示最近一次接收到的機器人位置。
ardurover

圖6:GPS屏

 

  • “佈局”屏 – 同樣在最新版本中尚未實現。在這個螢幕中,感測器的輸出將以佈局顯示,類似於Arduino IDE中的序列繪圖器。
ardurover

圖7:佈局屏

 

  • “感測器”屏 – 該頁面顯示感測器的最近一次輸出,同時也包含一些按鈕來強制啟動感測器進行新的測量,或更新顯示值。
ardurover

圖8:感測器屏

 

  • “監視器”屏 – 基本上與Arduino IDE中的序列監視器相同:使用者打字輸入,監視器顯示輸出。該螢幕也顯示所有發送的指令(黑色文本),機器人的所有響應(藍色文本),所有報錯(紅色文本),或者來自應用程式的常規資訊(灰色文本)。
ardurover

圖9:監視器屏

 

  • “設定”屏 – 包含多種設定,大部分與USB、藍牙和LoRa通信相關。此外,螢幕上有一個按鈕,我們可以用它來從機器人獲取當前存在的所有錯誤。
ardurover

圖10:設定屏