田雪蓮
(成都工業職業技術學院 信息工程學院,成都 610218)
近年來,復雜的信息控制技術使汽車工業在移動終端領域取得了很大的進步,汽車的移動終端設備涉及4G通信、物聯網、電子信息技術的自動融合。到目前為止,不少的農業車輛制造商和第三方服務提供商開始研發如車輛故障診斷、車輛狀態顯示、遠程監控及駕駛輔助等智能終端應用程序。本文結合Android和嵌入式控制技術,設計了一套農業車輛智能終端控制系統,能夠實現對農業車輛狀態的智能顯示和實時控制。
農業車輛智能終端控制系統工作原理是運用嵌入式、傳感技術、GPS、GPRS及移動設備等多種技術,采集農用車輛的行車狀態和GPS信息,在Android實時顯示這些信息,讓駕駛員實時了解車輛信息,并通過GPRS信號將工作狀態傳回至后臺集中檢測中心。農業車輛智能終端控制系統整體結構如圖1所示。
農業車輛智能終端控制系統包括車輛信息采集模塊、GPS模塊、GPRS通信模塊、屏幕顯示、語音設備、APP模塊、MPU6050、SDRAM、時鐘、電源及復位等。其中,車輛信息采集模塊可以自動獲取實時的車輛故障碼和動力系統、電氣系統等車內系統的數據流,主要功能是實現現場總線數據通信及自身電源的調理;GPRS通信模塊,使用GC65無線通信模塊或者第三代移動通信技術,支持基站定位、TCP/IP數據傳輸,可實現遠程數據傳輸及云端數據共享功能;GPS定位模塊可提供車輛實時的經緯度位置信息,并利用衛星實時傳輸更新系統時間,保證時間準確性;傾角與振動檢測模塊使用了MPU6050(3軸加速度傳感器+3軸角速度傳感器)模塊,對系統提供實時的加速度信息,以此為依據,記錄車輛行駛行為(加速、減速、變道)。

圖1 農業車輛智能終端控制系統整體結構圖
1)STM32處理器。STM32 F103系列是意法半導體(ST)公司設計的高性能、低功耗和低成本的芯片,采用超低功耗的ARM Cortex-M3設計。ARM Cortex-M3是基于ARMv7-M架構的處理器,采用了哈佛結構,擁有相互獨立的指令總線和數據總線,可以實現取指令和數據訪問并行執行。本系統選用STM32F103RCT6芯片,CPU工作頻率高達72MHz,擁有256kB的FLASH閃存和48kB的SRAM,芯片共有64個管腳,可用于外圍傳感器或其他存儲設備通信。
2)車輛信息采集模塊設計。車輛信息采集模塊采用人工智能技術,對數據流進行分析分類,得到故障特征信息,根據車輛傳感器數據量比較小的特點,系統選取了支持向量機(SVM,Support Vector Machine)作為分類算法。支持向量機理論是基于統計學習理論與結構風險最小化原則,具有完整的理論體系結構的機器學習理論。采用的流形正則化學習框架表達式為


流形正則化支持向量機算法計算關鍵步驟如下:
2)輸出。估計分類邊界函數為f:R25→R,決策函數為y=sign(f(x))。
步驟1:用l+u個數據建立數據鄰接圖,若i在j的k近鄰中或j在i的k近鄰中,則使用RBF計算連接i、j的邊的權值Wij,否則Wij=0。
步驟4:選擇正則化權重系數γA和γI。
步驟 5:求解凸二次規劃和線性系統,解得α*,并輸出函數。
本文SVM分類由模型訓練和結果預測2個部分組成:模型訓練是使用標準知識庫對SVM模型進行訓練,得到分類效果最好的分類模型參數,然后使用訓練好的模型對帶有少量標簽的實時數據進行預測,得到分類結果。支持向量機故障診斷流程如圖2所示。

圖2 支持向量機故障診斷流程圖
3)MPU6050模塊。MPU6050內部集成了3軸陀螺儀和3軸加速度傳感器及數字運動處理器,除了用來與MCU通信的主IIC接口外,還預留了一個可用于接第三方數字傳感器的IIC接口,通過此接口外接1個磁力傳感器,即可實現輸出完整的9軸姿態信號。MPU6050姿態采集模塊實物如圖3所示。
Android操作系統是谷歌于2007年正式公布推出的一款智能手機系統平臺,是在Linux內核上進行開發設計的,并采用Android framework層與Linux kernel進行隔開。Android系統框架如圖4所示。

圖3 MPU6050姿態采集模塊實物圖

圖4 Android系統框架圖
1) Eclipse開發軟件安裝。移動客戶端的開發環境選擇Eclipse,為了實現其完整的開發作用,需要對環境進行一系列的搭建,ADT安裝界面如圖5所示。

圖5 ADT環境安裝圖
(1)安裝JDK,配置環境變量,提供java代碼編譯和運行的環境;
(2)安裝ADT插件(android developer tools)為Android開發提供開發工具;
(3)下載安裝SDK(Software Development Kit),提供應用程序所需要的框架,庫類函數等;
(4)打開模擬器,模擬器可以選擇系統模擬器或者夜神模擬器,點擊工具欄圖標Android Virtual Device Manager,選擇Create創建,設置相關屬性后,點擊OK,選擇該模擬器start、launch啟動運行;
(5)打開DDMS(Dalvik Debug Monitor Service),即Dalvik虛擬機調試監控服務,方便進行功能調試。
2) Android應用程序組件。Android移動客戶端的開發離不開組件的支持,開發設計時,根據各個組件的功能及應用方向可將其分為4大類別組件:Activity、Service、Broadcast、Receiver(廣播接收者),以及Content Provider(內容提供者)。
(1)Activity。每個移動客戶端由多個Activity組成,顯示界面將在各個Activity間進行跳轉。作為程序設計開發的重點,在Activity中運行著大部分的程序流程,對應著與用戶交互的窗口。在Activity中可對Button、TextView等控件進行添加,對控件進行監聽實現跳轉的相關邏輯,同時每一個Activity都是與用戶進行交互的接口。
(2)Service。Service作為Android的組件之一,與Activity不同的是只能在后臺運行且沒有用戶界面。因為在后臺運行的Service服務不存在時間限制,所以它常用來執行需要持續運行的任務,且Service服務在應用程序中的主線程內運行,對于耗時任務將派生新的線程來進行。
(3)Broadcast Receiver。廣播是在應用程序之間傳輸信息的機制,而Broadcast Receiver則是對發送出來的廣播進行過濾接受并響應的一類組件。其注冊方式有兩種,既可選擇在配置文件AndroidManifest.xml中注冊也可通過代碼Context.registerReceive()進行注冊,且Broadcast Receiver和Service一樣,不存在界面。
(4)Content Provider。在Android中,對數據的保護十分嚴密,應用程序所具有的數據庫、文件等內容,不允許其他直接訪問,而主要用于Android應用程序的數據存儲管理的Content Provider組件則提供了一種訪問的方式。應用程序通過創建ContentResolver對象,調用它的方法對數據進行訪問。
3) 車載終端控制APP部分程序。MediaManager是車載終端控制APP主要的變量和方法類,其主要程序如下:
public class MediaManager {
private static final String TAG = "GH.MediaManager";private static final String PREFS_FILE_NAME =
"MediaClientManager.Preferences";private static final String PREFS_KEY_PACKAGE =
"media_package";private static final String PREFS_KEY_CLASS =
"media_class";
private static final String THEME_META_DATA_NAME =
"com.google.android.gms.car.application.theme";public static final String KEY_MEDIA_COMPONENT =
"media_component";public static final String KEY_MEDIA_PACKAGE =
"media_package";public static final String KEY_MEDIA_CLASS =
"media_class";
private static final String KEY_IGNORE_ORIGINAL_PKG =
"com.google.android.projection.gearhead.ignore_original_pkg";public static final String
KEY_MEDIA_PACKAGE_FROM_GSA =
"android.car.intent.extra.MEDIA_PACKAGE";
private static final String GOOGLE_PLAY_MUSIC_PACKAGE
= "com.google.android.music;private static final String[] INTERNAL_EXTRAS =
{"KEY_LAUNCH_HANDOVER_UNDERNEATH",
"com.google.android.projection.gearhead.ignore_original_pkg"};
private static final Intent MEDIA_BROWSER_INTENT =
new
Intent(MediaBrowserService.SERVICE_INTERFACE);private static MediaManager sInstance;private final MediaController.Callback
mMediaControllerCallback =
new MediaManagerCallback(this);private final MediaBrowser.ConnectionCallback
mMediaBrowserConnectionCallback =
new MediaManagerConnectionCallback(this);public interface Listener {
void onMediaAppChanged(ComponentName
componentName);void onStatusMessageChanged(String msg);}
}
農業車輛智能終端控制系統包括農用車輛定位服務、行駛狀態實時顯示及防盜等應用程序,為了驗證基于Android的農業車輛智能終端控制系統是否滿足設計要求,以農用車輛定位服務應用程序為例,對該系統進行驗證。農用車輛定位服務主要包括配置、GNSS數據顯示、軟件日志和地圖顯示燈等4個模塊,在使用定位程序之前,需要在定位服務應用程序界面進行信息配置。設置衛星導航定位算法和接收機定位參數輸出等參數格式,如圖6左側所示,農用車輛定位服務定位顯示如圖6右側所示。

圖6 APP參數設定界面(左)和定位顯示界面(右)
interface (right)
由圖6可以看出:在對定位服務應用程序設置查分服務器IP、參考基站數據輸出、衛星導航定位算法、接收機定位參數輸出等參數格式后,系統能夠對農用車輛進行精準的定位服務,證明了系統具有一定的可行性和實用性。
采用物聯網、Android和智能控制系統,設計了農業車輛智能終端控制系統,可以實現車輛定位服務、行駛狀態實時顯示、防盜等多種功能。在農用車輛定位服務應用程序是否可行的驗證試驗中,對定位服務應用程序導航定位的參數后,系統能夠對農用車輛進行精準的定位服務,證明了系統具有一定的可行性和實用性。