曾劍鋒 蘇 娟
(湖南大學電氣與信息工程學院 湖南 長沙 410000)
基于Android平臺的汽車油量監(jiān)控報警系統(tǒng)的設(shè)計與實現(xiàn)
曾劍鋒 蘇 娟
(湖南大學電氣與信息工程學院 湖南 長沙 410000)
針對汽車偷油問題,提出基于Android平臺的汽車油量監(jiān)控報警系統(tǒng)。系統(tǒng)主要由油量實時采集通信車載終端、Web服務(wù)器、安卓手機客戶端三大部分組成。油量實時采集通信終端以STM32為主控制器,實時采集處理油量傳感器的油量值,并通過GPRS將實時油量數(shù)據(jù)發(fā)送至Web服務(wù)器。安卓手機客戶端與Web服務(wù)器之間采用WebSocket進行通信,報警信息由服務(wù)器向安卓手機客戶端主動推送。結(jié)果表明,系統(tǒng)能在汽車偷油的情況下及時在手機客戶端上以震動和警鈴的方式通知車主,對于解決汽車偷油問題具有較大的應(yīng)用價值。
Android 油量監(jiān)控 STM32 WebSocket GPRS
隨著汽車的普及,各種各樣的問題也隨之而來。其中較為普遍的一個問題就是偷油。
針對這個問題,本文研究開發(fā)基于Android平臺的汽車油量監(jiān)控報警系統(tǒng)來實時監(jiān)控汽車油量。使車主能通過手機隨時隨地了解自己車輛的油量變化情況,并在汽車可能被偷油、油量不足時及時告知車主。必要時啟動車載終端上的警笛,對小偷進行震懾驅(qū)逐。
系統(tǒng)主要由油量實時采集通信車載終端(簡稱“車載終端”)、Web服務(wù)器、安卓手機客戶端三大部分組成,如圖1所示。車載終端主要負責實時監(jiān)測汽車油量,并將油量數(shù)據(jù)通過GPRS發(fā)送至Web服務(wù)器。后者則對接收到的數(shù)據(jù)進行統(tǒng)計分析并保存至數(shù)據(jù)庫服務(wù)器,若有警情馬上將信息發(fā)送至手機客戶端報警。安卓手機客戶端接收Web服務(wù)器的報警信息和實時油量信息,并與用戶進行交互。
圖1 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)硬件部分主要是由油位傳感器模塊、主控制器模塊、GPRS模塊、及其他擴展的外設(shè)等組成。如圖2所示。
圖2 系統(tǒng)硬件結(jié)構(gòu)框圖
為了達到對油量采集精度的要求,系統(tǒng)采用深圳九通公司的JT606電容式油位傳感器[1]。它能連續(xù)檢測液位水平高度,分辨率小于1mm,能現(xiàn)場調(diào)整長度以適應(yīng)油箱高度。
系統(tǒng)采用ST公司的STM32F103RBT6作為主控制器,它的運行頻率高達72 MHz,內(nèi)部具有128 KB的Flash和20 KB的SRAM。同時還集成了USB接口及3個USART接口[2]。它負責處理油位傳感器的油量值,并和GPRS模塊進行數(shù)據(jù)交互。
GPRS通信模塊將主控制器傳來的數(shù)據(jù)發(fā)送至Web服務(wù)器。車載終端采用SIM900a作為通信模塊,它是一款尺寸緊湊的GSM/GPRS模塊,采用ARM926EJ-S架構(gòu),功耗低,在待機模式下電流低于18 mA、sleep模式低于2 mA,可以內(nèi)置客戶應(yīng)用程序。主控制器通過UART發(fā)送AT指令與SIM900a進行數(shù)據(jù)交互。
3.1 油量采集通信終端軟件設(shè)計
車載終端主控制器通過高頻采集器(A/D)與油箱里的油位傳感器相連,并對采集到的電壓值進行二次均值濾波,得到當前時刻平均模擬電壓,然后通過線性關(guān)系將模擬電壓轉(zhuǎn)換為當前油量值,再根據(jù)設(shè)定的閾值判斷油量變化(加油、偷油、油量不足、無變化),最后通過GPRS上傳到Web服務(wù)器。油量采集處理流程框圖如圖3所示。
圖3 油量采集處理流程框圖
由于干擾的存在,采集到的數(shù)據(jù)有可能偏離其真實數(shù)值,所以必須對其進行處理,使盡可能接近其真實值[3,4]。本系統(tǒng)進行油量遞推平均,每采集5次油量值就進行一次二次均值濾波,第一次均值濾波值和第二次平均濾波值由式(1)、式(2)所得:
(1)
(2)
中小制造企業(yè)常常忽略市場戰(zhàn)略,而依賴通過關(guān)系來銷售產(chǎn)品,一旦新經(jīng)濟環(huán)境演變到某個層面,以往的關(guān)系渠道往往就會失效。中小制造企業(yè)的有點就是經(jīng)營方式靈便,運營方法多樣。但是對于關(guān)系渠道過分依賴也是一些中小制造企業(yè)的通病。例如壓縮機械產(chǎn)業(yè)中,少數(shù)甚至一兩個下游的國有石油化工或跨國電子電力大企業(yè)銷售渠道,就能養(yǎng)活一個小企業(yè),市場上的其它公司中并不具有知名度。一旦銷售人員關(guān)系斷掉或?qū)Ψ綐I(yè)務(wù)不再需要,可能企業(yè)立即無法存活。因此,要轉(zhuǎn)變戰(zhàn)略思維,專注市場開拓并獲取知名度,這是新經(jīng)濟環(huán)境下更好生存的前提和基礎(chǔ)。
圖4 油量采集濾波時序圖
3.2Web服務(wù)器軟件設(shè)計
Web服務(wù)器主要由基礎(chǔ)數(shù)據(jù)管理模塊、統(tǒng)計分析模塊、油量監(jiān)控模塊、預(yù)警設(shè)置模塊、平臺監(jiān)管模塊等組成。Web服務(wù)器軟件系統(tǒng)框圖如圖5所示。
圖5 Web服務(wù)器軟件系統(tǒng)框圖
基礎(chǔ)數(shù)據(jù)管理模塊主要是對車載終端GPRS模塊的SIM卡管理、車主信息管理、汽車油量數(shù)據(jù)管理等;統(tǒng)計分析模塊主要對報警信息統(tǒng)計,根據(jù)報警類型與報警開始結(jié)束時間對車輛進行各種類型報警的查詢統(tǒng)計。油量監(jiān)控模塊主要是負責對車載終端發(fā)送過來的報警信息進行實時監(jiān)控,當接收到報警信息后通過WebSocket將報警信息推送至手機客戶端。WebSocket是一種自然的全雙工、雙向、單套接字連接??梢詼p少延時,一旦建立連接,服務(wù)器就可以主動將消息發(fā)送至客戶端[5]。旨在通過僅在建立連接時發(fā)送上下文信息,并且在連接建立后允許連接的兩端在攜帶著極少的標識信息的上下文信息的情況下發(fā)送消息,這樣很顯著地提高了網(wǎng)絡(luò)效率[6]。預(yù)警設(shè)置模塊主要接收手機客戶端發(fā)送過來的預(yù)警設(shè)置信息,將預(yù)警設(shè)置信息保存至數(shù)據(jù)庫,并將此預(yù)警信息發(fā)送至車載終端。平臺監(jiān)管模塊主要負責平臺用戶管理、角色管理、權(quán)限管理、日志管理等。
3.3 安卓手機客戶端軟件設(shè)計
安卓手機客戶端由油量前臺實時監(jiān)控模塊、油量后臺實時監(jiān)控模塊、閾值設(shè)置模塊、統(tǒng)計信息管理模塊組成。油量前臺實時監(jiān)控模塊主要是將車載終端采集到的油量數(shù)據(jù)實時顯示。后臺油量實時監(jiān)控模塊是當軟件在后臺運行時對油量進行實時監(jiān)控,當有油量警情時將通過聲音與警鈴的方式通知用戶。閾值設(shè)置模塊主要是對偷油報警閾值、加油提示閾值、缺油報警閾值進行設(shè)置,并將設(shè)置的值發(fā)送至Web服務(wù)器。統(tǒng)計信息管理模塊主要為用戶提供各種統(tǒng)計信息的查詢顯示。安卓手機客戶端軟件結(jié)構(gòu)如圖6所示。
圖6 安卓手機客戶端軟件結(jié)構(gòu)框圖
3.3.1Service后臺油量實時監(jiān)控模塊軟件實現(xiàn)
系統(tǒng)采用Service[7]組件進行后臺油量的實時監(jiān)控。在Service對象中創(chuàng)建一個WebSocketConnection對象,并通過WebSocketConnection對象的connect()方法與Web服務(wù)器建立連接。利用WebSocket的雙向推送機制在onTextMessage()方法中接收服務(wù)器發(fā)送過來的報警信息。對油量的后臺監(jiān)控是開機后就必須開啟的,為此,系統(tǒng)采用了安卓的廣播機制[8]來啟動后臺油量監(jiān)控服務(wù)。系統(tǒng)注冊了一個BroadcastReceiver對象,接收安卓系統(tǒng)在開機啟動完成后發(fā)送的android.intent.action.BOOT_COMPLETED廣播,在onReceive()方法中通過Context類的startService()方法開啟后臺油量監(jiān)控服務(wù)。同時為了保證后臺油量監(jiān)控Service不被安卓系統(tǒng)kill掉,系統(tǒng)采用了Service自生機制。在Service的onDestroy()方法中通過Service對象的startService()方法自己啟動自己,保證后臺油量監(jiān)控Service在被安卓系統(tǒng)kill掉后再次啟動。當WebSocket接收到服務(wù)器發(fā)送過來的油量監(jiān)控報警信息后,通過Service對象的startActivity()方法跳轉(zhuǎn)到報警頁面Activity中。在此Activity中創(chuàng)建兩個Thread線程,一個負責震動報警。另一個則負責警鈴報警。在震動報警線程中通過Vibrator對象的vibrate()方法使手機震動。在警鈴報警線程中通過MediaPlayer對象來播放mp3警鈴文件,從而起到警鈴報警的作用。這兩個線程一直運行,直到用戶得到警情后才停止。后臺油量實時監(jiān)控服務(wù)的流程框圖與報警通知用戶的流程框圖如圖7所示。
圖7 后臺油量實時監(jiān)控服務(wù)與報警通知用戶流程框圖
前臺油量實時監(jiān)控為用戶提供實時油量變化的UI界面,讓車主更直觀地了解汽車油量的變化,并且提供汽車實時油量值、實時油耗、報警閾值的顯示。系統(tǒng)利用Activity對象和自定義的View組件來實時顯示油量變化。在Activity的onCreate()方法中利用findViewById()方法加載各個組件。同時創(chuàng)建一個AsyncTask對象,在AsyncTask對象doInBackground()方法中新建一個WebSocket對象并與Web服務(wù)器建立連接。利用Thread類的sleep()方法做定時器,每隔5秒就從Web服務(wù)器上獲取一次油量值,并利用AsyncTask類的publishProgress()方法將最新獲取的油量值更新至UI線程。最后由AsyncTask類的onProgrssUpdate()方法在UI線程中實時更新油量的顯示值。對實時油量曲線圖的更新,是在自定義View對象的ondraw()方法中對Canvas進行實時油量曲線圖的繪制,并利用View對象的invalidate()方法實時更新油量曲線圖。前臺油量實時監(jiān)控流程如圖8所示。
圖8 前臺油量實時監(jiān)控流程圖
4.1Service后臺油量實時監(jiān)控模塊測試
該測試主要包括在開機后,后臺油量實時監(jiān)控Service是否正常啟動、Service能不能接收服務(wù)器發(fā)來的報警信息并跳轉(zhuǎn)至報警Activity中啟動手機震動與警鈴報警,以及測試在安卓系統(tǒng)kill掉后臺油量監(jiān)控Service后服務(wù)能不能自生。測試結(jié)果如圖9所示。
圖9 Service后臺油量實時監(jiān)控模塊測試結(jié)果圖
當手機啟動后,在應(yīng)用程序管理中可以看到后臺油量監(jiān)控服務(wù)正常啟動如圖9(a)所示。并且點擊停止應(yīng)用后服務(wù)又自動啟動了。當接收到服務(wù)器發(fā)來的報警信息后,自動彈出圖9(b)所示的報警頁面,其上顯示報警時間與報警類型,并啟動了手機震動與警鈴報警。
4.2 前臺油量實時監(jiān)控模塊測試
該測試主要測試用戶點擊前臺實時監(jiān)控功能按鈕時,能否實時顯示汽車油量、油耗、以及汽車油量變化折線圖,結(jié)果如圖10所示。從圖中可以看到在前臺油量實時監(jiān)控界面上實時顯示出了汽車油量值,并以數(shù)字值和折線圖的形式表示出來。其中折線圖的橫坐標表示時間,縱坐標表示油量。橫坐標的0s表示的是當前時間,負的時間表示過去的時間。
圖10 前臺油量實時監(jiān)控模塊測試結(jié)果圖
4.3 統(tǒng)計信息管理模塊測試
該測試主要包括報警統(tǒng)計測試、油耗統(tǒng)計測試、加油統(tǒng)計測試。當用戶輸入查詢起止日期,點擊查詢按鈕后,統(tǒng)計模塊測試的結(jié)果如圖11所示。
圖11 統(tǒng)計模塊測試結(jié)果圖
通過系統(tǒng)測試可知、本文研究的基于Android平臺的汽車油量監(jiān)控報警系統(tǒng)能對汽車油量進行實時監(jiān)控,并以曲線圖和數(shù)字值的方式對油量進行實時顯示。而且能對偷油、缺油、加油各種警情進行準確判斷,當遇到偷油情況時能及時通過震動和警鈴的方式通知用戶。實踐證明基于Android平臺的汽車油量監(jiān)控報警系統(tǒng)對于防止汽車偷油具有較高的利用價值。
[1] 孫少文,陸中宏.傳感器[M].北京:中央廣播電視大學出版社,2014.
[2] 王苑增,黃文濤,何宙興.基于ARMCortex-M3的STM32微控制器實戰(zhàn)教程[M].北京:電子工業(yè)出版社,2014.
[3] 李念強,魏長智,潘建軍,等.數(shù)據(jù)采集技術(shù)與系統(tǒng)設(shè)計[M].北京:機械工業(yè)出版社,2009.
[4] 馬明建,周長城.數(shù)據(jù)采集與處理技術(shù)[M].西安:西安交通大學出版社,1998.
[5]WangV,SalimF,MoskovitsP.HTML5WebSocket權(quán)威指南[M].姚軍,譯.北京:機械工業(yè)出版社,2014.
[6]CowardD.JavaWebSocket編程[M].劉建,夏先波,譯.北京:清華大學出版社,2015.
[7] 秦建平.Android編程寶典[M].北京:北京航空航天大學出版社,2013.
[8] 李寧.Android開發(fā)權(quán)威指南[M].2版.北京:人民郵電出版社,2013.
DESIGN AND REALIZATION OF AUTOMOBILE OIL MONITORING AND ALARMINGSYSTEM BASED ON ANDROID PLATFORM
Zeng Jianfeng Su Juan
(CollegeofElectricalandInformationEngineering,HunanUniversity,Changsha410000,Hunan,China)
Aiming at the automobile oil theft problem, an automobile oil monitoring and alarming system based on Android platform is proposed. The system is mainly composed of real-time acquisition and communication terminal, Web server, Android mobile phone client. The real-time acquisition and communication terminal treating STM32 as the main controller acquires and processes the value of oil sensor and transmits the real-time oil data to the Web server through the GPRS. Android mobile phone client and Web server communicate with each other through the WebSocket, and Web servers proactively push the alarm information to the Android mobile phone client. Results showed that the system could realize the function that the mobile client will notify its owner by vibration and alarm when the oil of the automobile is being stolen, which is of great application value to solve the problem of automobile oil stealing.
Android Oil monitoring STM32 WebSocket GPRS
2016-01-20。湖南省科技項目(2014GK3007)。曾劍鋒,碩士生,主研領(lǐng)域:嵌入式系統(tǒng)與應(yīng)用。蘇娟,副教授。
TP311
A
10.3969/j.issn.1000-386x.2017.03.058