張超
摘 要:基于Android平臺的遠程遙控小車,可以使用智能手機通過藍牙(或wifi)發(fā)出指令。該車可以躲避障礙物,實時視頻傳輸,可用于在發(fā)生自然災害時執(zhí)行搜索任務。經(jīng)過相關(guān)參數(shù)的測試,實驗表明該智能小車性能穩(wěn)定、操控性好,視頻傳輸穩(wěn)定。通過對各部件電流消耗的分析,提出了優(yōu)化方案。
關(guān)鍵詞:藍牙;wifi;遙控小車;Android設備
1 概述
隨著手機移動技術(shù)迅速發(fā)展,智能手機的功能越來越強大,從單一通話和收發(fā)短信,發(fā)展到可進行移動搜索、全球定位導航、手機電視、實時視頻通信等其它強大功能。Android是一種以linux為基礎(chǔ)的開源操作系統(tǒng),基于此平臺的手機應用滲透到生活的方方面面。基于Android平臺的無線遙控汽車,通過藍牙(或wifi)發(fā)出指令。該車可以躲避障礙物,實時視頻傳輸,可用于在發(fā)生自然災害時執(zhí)行搜索任務,具有一定的實際意義。
2 系統(tǒng)概述
該系統(tǒng)是由一個遙控小車單元和一個運行在Android智能手機的應用程序組成。
總體方案設計:
總體硬件框圖如圖1所示。
主板采用Arduino公司的Mega開發(fā)板,它是一個開源的單板機控制器,采用了基于開放源代碼的軟硬件平臺,構(gòu)建于開放源代碼 simple I/O 接口版,并且具有使用類似Java,C 語言的Processing/Wiring開發(fā)環(huán)境。Arduino Mega是一塊以ATmega2560為核心的微控制器開發(fā)板,提供54個數(shù)字輸入/輸出引腳(其中6可以作為PWM輸出)8個模擬輸入,2個UART(硬件串口),一個16 MHz的晶體振蕩器,一個USB連接,輸入電壓6-12V 。主板產(chǎn)生1 前進/后退,左/右脈沖,通過直流伺服電機控制小車運行。
副板采用Arduino 公司的UNO板,微處理器是ATmega328,具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),6路模擬輸入,一個16MHz晶體振蕩器,一個USB口,一個電源插座,一個ICSP header和一個復位按鈕。副板連接一個距離傳感器,距離傳感器提供2-400厘米的非接觸式測量功能,精度可達到3毫米。
一個VGA攝像頭連接到路由器模塊,該裝置安裝在主控板后面。由攝像頭拍攝的視頻輸入到路由器通過wifi連接到Android設備,該視頻實時顯示在Android應用程序。
3 下位機軟件設計
主程序流程:
本系統(tǒng)的軟件完成以下功能:
(1)系統(tǒng)初始化:包括I/O口工作模式、串口、中斷、PWM的初始化,同步手機應用程序等。
(2)接受上位機android設備的控制命令。
(3)控制電機的運轉(zhuǎn)方向和速度。
副板上安裝有距離傳感器,ATmega 328微處理器通過計算距離傳感器發(fā)出脈沖和接受信號之間的間隔時間來確定與障礙物的距離,如果此距離小于20厘米,將產(chǎn)生中斷,中斷命令將被發(fā)送到主板的atmega2560微處理器上,主板將關(guān)閉伺服電機,避免可能出現(xiàn)的碰撞。如果計算出的距離大于20厘米,不產(chǎn)生中斷,小車繼續(xù)前進。
4 基于Android智能手機應用程序開發(fā)
4.1 Android系統(tǒng)架構(gòu)
Android系統(tǒng)架構(gòu)由5部分組成,分別是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。
4.2 方向控制
首先我們創(chuàng)建一個傳感器管理器和一個傳感器監(jiān)聽器,管理器用來管理傳感器以及創(chuàng)建各種各樣的傳感器,監(jiān)聽器用來監(jiān)視傳感器的變化并且進行相應的操作
private SensorManager sensorManager;private MySensorEventListener mySensorEventListener;
mySensorEventListener= new MySensorEventListener();
這個監(jiān)聽器當然是我們自己定義的,在方向感應器感應到手機方向有變化的時候,我們可以采取相應的操作。
private final class MySensorEventListener implements SensorEventListener{
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
x表示手機指向的方位,0表示北,90表示東,180表示南,270表示西
Y表示沿x軸的傾斜度,0表示水平,90表示頭向上垂直,180表示面向下水平,270表示頭向下垂直。
Z表示沿y軸的滾動角度,0表示水平,90表示右側(cè)向上垂直,-90表示左側(cè)向上垂直。
應用程序首先調(diào)用方向傳感器,獲取手機和一個通過Android傳感器管理器定義的默認坐標之間的角度信息,然后應用程序根據(jù)預定義的閾值將方向數(shù)據(jù)轉(zhuǎn)換為執(zhí)行命令。
5 系統(tǒng)特性和實驗系統(tǒng)
經(jīng)測試遙控小車的最大速度約為30厘米/秒,可以攜帶多達450克負荷。在開放空間本單元和Android設備之間通過藍牙或Wi-Fi通信的最大范圍為10米和20米。經(jīng)測量,當設置在20厘米檢測距離時,本單元與障礙物之間自主停車距離在2厘米至7厘米。小車是由兩個9伏電池供電,經(jīng)測量在滿負荷條件下每個電池的最大消耗電流約0.73A
6 結(jié)論和改進
基于Android平臺的無線遙控小車,可以通過Android設備(如智能手機或平板電腦)無線控制。該系統(tǒng)具有良好的操控性和實用性,可以通過狹小的空間執(zhí)行搜索、探查任務。電流的測量結(jié)果表明,滿負荷下系統(tǒng)的功率消耗是比較高的。然而,通過數(shù)據(jù)分析我們了解哪些組件消耗大部分的能量,這為我們進一步優(yōu)化設計提供了依據(jù)。
(1)計劃修改Android應用程序?qū)崿F(xiàn)自主控制。例如,當小車前面沒有障礙物的時候,我們通過Android應用程序?qū)㈥P(guān)閉距離傳感器,這樣可以減少電量消耗。
(2)電流消耗試驗還表明,對于執(zhí)行連續(xù)工作的小車,電量消耗還是比較大的,由于該小車可以攜帶更多的負載,因此可以安裝更大能量的電池組。
(3)替換更強大和低功耗的單片機以增加處理能力,并將進一步降低功耗。
參考文獻
[1]李寧.Android開發(fā)權(quán)威指南[M].北京:人民郵電出版社,2011.
[2]陳德益.基于嵌入式單片機的電機控制系統(tǒng)設計[J].計算機仿真,2010,27(1):359-362.
[3]林志翔.新型多功能智能小車的設計與應用[J].現(xiàn)代電子技術(shù),2011,34(6):134-136.