曾剑锋 苏 娟
(湖南大学电气与信息工程学院 湖南 长沙 410000)
基于Android平台的汽车油量监控报警系统的设计与实现
曾剑锋 苏 娟
(湖南大学电气与信息工程学院 湖南 长沙 410000)
针对汽车偷油问题,提出基于Android平台的汽车油量监控报警系统。系统主要由油量实时采集通信车载终端、Web服务器、安卓手机客户端三大部分组成。油量实时采集通信终端以STM32为主控制器,实时采集处理油量传感器的油量值,并通过GPRS将实时油量数据发送至Web服务器。安卓手机客户端与Web服务器之间采用WebSocket进行通信,报警信息由服务器向安卓手机客户端主动推送。结果表明,系统能在汽车偷油的情况下及时在手机客户端上以震动和警铃的方式通知车主,对于解决汽车偷油问题具有较大的应用价值。
Android 油量监控 STM32 WebSocket GPRS
随着汽车的普及,各种各样的问题也随之而来。其中较为普遍的一个问题就是偷油。
针对这个问题,本文研究开发基于Android平台的汽车油量监控报警系统来实时监控汽车油量。使车主能通过手机随时随地了解自己车辆的油量变化情况,并在汽车可能被偷油、油量不足时及时告知车主。必要时启动车载终端上的警笛,对小偷进行震慑驱逐。
系统主要由油量实时采集通信车载终端(简称“车载终端”)、Web服务器、安卓手机客户端三大部分组成,如图1所示。车载终端主要负责实时监测汽车油量,并将油量数据通过GPRS发送至Web服务器。后者则对接收到的数据进行统计分析并保存至数据库服务器,若有警情马上将信息发送至手机客户端报警。安卓手机客户端接收Web服务器的报警信息和实时油量信息,并与用户进行交互。
图1 系统结构框图
系统硬件部分主要是由油位传感器模块、主控制器模块、GPRS模块、及其他扩展的外设等组成。如图2所示。
图2 系统硬件结构框图
为了达到对油量采集精度的要求,系统采用深圳九通公司的JT606电容式油位传感器[1]。它能连续检测液位水平高度,分辨率小于1mm,能现场调整长度以适应油箱高度。
系统采用ST公司的STM32F103RBT6作为主控制器,它的运行频率高达72 MHz,内部具有128 KB的Flash和20 KB的SRAM。同时还集成了USB接口及3个USART接口[2]。它负责处理油位传感器的油量值,并和GPRS模块进行数据交互。
GPRS通信模块将主控制器传来的数据发送至Web服务器。车载终端采用SIM900a作为通信模块,它是一款尺寸紧凑的GSM/GPRS模块,采用ARM926EJ-S架构,功耗低,在待机模式下电流低于18 mA、sleep模式低于2 mA,可以内置客户应用程序。主控制器通过UART发送AT指令与SIM900a进行数据交互。
3.1 油量采集通信终端软件设计
车载终端主控制器通过高频采集器(A/D)与油箱里的油位传感器相连,并对采集到的电压值进行二次均值滤波,得到当前时刻平均模拟电压,然后通过线性关系将模拟电压转换为当前油量值,再根据设定的阈值判断油量变化(加油、偷油、油量不足、无变化),最后通过GPRS上传到Web服务器。油量采集处理流程框图如图3所示。
图3 油量采集处理流程框图
由于干扰的存在,采集到的数据有可能偏离其真实数值,所以必须对其进行处理,使尽可能接近其真实值[3,4]。本系统进行油量递推平均,每采集5次油量值就进行一次二次均值滤波,第一次均值滤波值和第二次平均滤波值由式(1)、式(2)所得:
(1)
(2)
中小制造企业常常忽略市场战略,而依赖通过关系来销售产品,一旦新经济环境演变到某个层面,以往的关系渠道往往就会失效。中小制造企业的有点就是经营方式灵便,运营方法多样。但是对于关系渠道过分依赖也是一些中小制造企业的通病。例如压缩机械产业中,少数甚至一两个下游的国有石油化工或跨国电子电力大企业销售渠道,就能养活一个小企业,市场上的其它公司中并不具有知名度。一旦销售人员关系断掉或对方业务不再需要,可能企业立即无法存活。因此,要转变战略思维,专注市场开拓并获取知名度,这是新经济环境下更好生存的前提和基础。
图4 油量采集滤波时序图
3.2Web服务器软件设计
Web服务器主要由基础数据管理模块、统计分析模块、油量监控模块、预警设置模块、平台监管模块等组成。Web服务器软件系统框图如图5所示。
图5 Web服务器软件系统框图
基础数据管理模块主要是对车载终端GPRS模块的SIM卡管理、车主信息管理、汽车油量数据管理等;统计分析模块主要对报警信息统计,根据报警类型与报警开始结束时间对车辆进行各种类型报警的查询统计。油量监控模块主要是负责对车载终端发送过来的报警信息进行实时监控,当接收到报警信息后通过WebSocket将报警信息推送至手机客户端。WebSocket是一种自然的全双工、双向、单套接字连接。可以减少延时,一旦建立连接,服务器就可以主动将消息发送至客户端[5]。旨在通过仅在建立连接时发送上下文信息,并且在连接建立后允许连接的两端在携带着极少的标识信息的上下文信息的情况下发送消息,这样很显著地提高了网络效率[6]。预警设置模块主要接收手机客户端发送过来的预警设置信息,将预警设置信息保存至数据库,并将此预警信息发送至车载终端。平台监管模块主要负责平台用户管理、角色管理、权限管理、日志管理等。
3.3 安卓手机客户端软件设计
安卓手机客户端由油量前台实时监控模块、油量后台实时监控模块、阈值设置模块、统计信息管理模块组成。油量前台实时监控模块主要是将车载终端采集到的油量数据实时显示。后台油量实时监控模块是当软件在后台运行时对油量进行实时监控,当有油量警情时将通过声音与警铃的方式通知用户。阈值设置模块主要是对偷油报警阈值、加油提示阈值、缺油报警阈值进行设置,并将设置的值发送至Web服务器。统计信息管理模块主要为用户提供各种统计信息的查询显示。安卓手机客户端软件结构如图6所示。
图6 安卓手机客户端软件结构框图
3.3.1Service后台油量实时监控模块软件实现
系统采用Service[7]组件进行后台油量的实时监控。在Service对象中创建一个WebSocketConnection对象,并通过WebSocketConnection对象的connect()方法与Web服务器建立连接。利用WebSocket的双向推送机制在onTextMessage()方法中接收服务器发送过来的报警信息。对油量的后台监控是开机后就必须开启的,为此,系统采用了安卓的广播机制[8]来启动后台油量监控服务。系统注册了一个BroadcastReceiver对象,接收安卓系统在开机启动完成后发送的android.intent.action.BOOT_COMPLETED广播,在onReceive()方法中通过Context类的startService()方法开启后台油量监控服务。同时为了保证后台油量监控Service不被安卓系统kill掉,系统采用了Service自生机制。在Service的onDestroy()方法中通过Service对象的startService()方法自己启动自己,保证后台油量监控Service在被安卓系统kill掉后再次启动。当WebSocket接收到服务器发送过来的油量监控报警信息后,通过Service对象的startActivity()方法跳转到报警页面Activity中。在此Activity中创建两个Thread线程,一个负责震动报警。另一个则负责警铃报警。在震动报警线程中通过Vibrator对象的vibrate()方法使手机震动。在警铃报警线程中通过MediaPlayer对象来播放mp3警铃文件,从而起到警铃报警的作用。这两个线程一直运行,直到用户得到警情后才停止。后台油量实时监控服务的流程框图与报警通知用户的流程框图如图7所示。
图7 后台油量实时监控服务与报警通知用户流程框图
前台油量实时监控为用户提供实时油量变化的UI界面,让车主更直观地了解汽车油量的变化,并且提供汽车实时油量值、实时油耗、报警阈值的显示。系统利用Activity对象和自定义的View组件来实时显示油量变化。在Activity的onCreate()方法中利用findViewById()方法加载各个组件。同时创建一个AsyncTask对象,在AsyncTask对象doInBackground()方法中新建一个WebSocket对象并与Web服务器建立连接。利用Thread类的sleep()方法做定时器,每隔5秒就从Web服务器上获取一次油量值,并利用AsyncTask类的publishProgress()方法将最新获取的油量值更新至UI线程。最后由AsyncTask类的onProgrssUpdate()方法在UI线程中实时更新油量的显示值。对实时油量曲线图的更新,是在自定义View对象的ondraw()方法中对Canvas进行实时油量曲线图的绘制,并利用View对象的invalidate()方法实时更新油量曲线图。前台油量实时监控流程如图8所示。
图8 前台油量实时监控流程图
4.1Service后台油量实时监控模块测试
该测试主要包括在开机后,后台油量实时监控Service是否正常启动、Service能不能接收服务器发来的报警信息并跳转至报警Activity中启动手机震动与警铃报警,以及测试在安卓系统kill掉后台油量监控Service后服务能不能自生。测试结果如图9所示。
图9 Service后台油量实时监控模块测试结果图
当手机启动后,在应用程序管理中可以看到后台油量监控服务正常启动如图9(a)所示。并且点击停止应用后服务又自动启动了。当接收到服务器发来的报警信息后,自动弹出图9(b)所示的报警页面,其上显示报警时间与报警类型,并启动了手机震动与警铃报警。
4.2 前台油量实时监控模块测试
该测试主要测试用户点击前台实时监控功能按钮时,能否实时显示汽车油量、油耗、以及汽车油量变化折线图,结果如图10所示。从图中可以看到在前台油量实时监控界面上实时显示出了汽车油量值,并以数字值和折线图的形式表示出来。其中折线图的横坐标表示时间,纵坐标表示油量。横坐标的0s表示的是当前时间,负的时间表示过去的时间。
图10 前台油量实时监控模块测试结果图
4.3 统计信息管理模块测试
该测试主要包括报警统计测试、油耗统计测试、加油统计测试。当用户输入查询起止日期,点击查询按钮后,统计模块测试的结果如图11所示。
图11 统计模块测试结果图
通过系统测试可知、本文研究的基于Android平台的汽车油量监控报警系统能对汽车油量进行实时监控,并以曲线图和数字值的方式对油量进行实时显示。而且能对偷油、缺油、加油各种警情进行准确判断,当遇到偷油情况时能及时通过震动和警铃的方式通知用户。实践证明基于Android平台的汽车油量监控报警系统对于防止汽车偷油具有较高的利用价值。
[1] 孙少文,陆中宏.传感器[M].北京:中央广播电视大学出版社,2014.
[2] 王苑增,黄文涛,何宙兴.基于ARMCortex-M3的STM32微控制器实战教程[M].北京:电子工业出版社,2014.
[3] 李念强,魏长智,潘建军,等.数据采集技术与系统设计[M].北京:机械工业出版社,2009.
[4] 马明建,周长城.数据采集与处理技术[M].西安:西安交通大学出版社,1998.
[5]WangV,SalimF,MoskovitsP.HTML5WebSocket权威指南[M].姚军,译.北京:机械工业出版社,2014.
[6]CowardD.JavaWebSocket编程[M].刘建,夏先波,译.北京:清华大学出版社,2015.
[7] 秦建平.Android编程宝典[M].北京:北京航空航天大学出版社,2013.
[8] 李宁.Android开发权威指南[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)。曾剑锋,硕士生,主研领域:嵌入式系统与应用。苏娟,副教授。
TP311
A
10.3969/j.issn.1000-386x.2017.03.058