汽车作为代步和运输工具已进入千家万户,实现汽车远程监测是保证人们正常出行的必要条件。本文就实现汽车实时监测和故障诊断,提出了基于Android的汽车实时监测系统,设计面向车主和汽修厂的手机、电脑、汽车一体化的监测系统。本文设计的汽车实时监测系统由远程监控端、Android客户端、OBD车载诊断接口三个部分构成。Android客户端向下利用手机Bluetooth和OBD车载诊断接口通信,获取汽车状态信息和DTC;向上利用Internet,将汽车状态信息上传到云端服务器。通过远程Web端异地登陆,实现汽车的远程监控和远程故障诊断及维修。 Auto-remote monitoring has been a necessary condition to ensure people’s normal safety along with the wide application of automobile as a mean of transport. In this paper, a real-time moni-toring system based on Android is put forward to realize the real-time monitoring and fault diagnosis of the automobile. And the monitoring system for mobile phone, computer and automobile is designed for vehicle owners and garages. The real-time monitoring system is composed of three parts which are remote monitoring terminal, Android client and OBD vehicle diagnosis interface. Android client accesses to vehicle status information and DTC down using the phone BLUETOOTH and OBD vehicle diagnostic interface communication. While on the other hand, car’s state information is uploaded to the cloud server up using INTERNET. The remote monitoring, remote fault diagnosis and maintenance of the vehicle can be then realized by remote web landing.
徐丽娜,叶桦*,陶鹏
东南大学自动化学院,江苏 南京
收稿日期:2017年1月29日;录用日期:2017年2月13日;发布日期:2017年2月16日
汽车作为代步和运输工具已进入千家万户,实现汽车远程监测是保证人们正常出行的必要条件。本文就实现汽车实时监测和故障诊断,提出了基于Android的汽车实时监测系统,设计面向车主和汽修厂的手机、电脑、汽车一体化的监测系统。本文设计的汽车实时监测系统由远程监控端、Android客户端、OBD车载诊断接口三个部分构成。Android客户端向下利用手机Bluetooth和OBD车载诊断接口通信,获取汽车状态信息和DTC;向上利用Internet,将汽车状态信息上传到云端服务器。通过远程Web端异地登陆,实现汽车的远程监控和远程故障诊断及维修。
关键词 :OBD-II,Android,远程监控,协议解析
Copyright © 2017 by authors and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
随着人工智能的发展,汽车已经代替脚力,成为出行的主要交通工具之一。一方面,汽车在不同行业的应用越来越广泛;另一方面,随着电子技术在汽车上的应用范围不断增大,汽车的稳定性、安全性、灵活性和人工智能都有了明显的改善。但同时带来了汽车故障种类多、故障琐碎不易察等问题 [
自1996年起美国所有车辆制造商采用OBD-II标准 [
基于Android的手机客户端利用蓝牙和基于K总线和CAN总线的OBD-II通用汽车诊断接口ELM327通信,传输DTC故障码和汽车实时状态。Android通过OBD协议解析,对收到的数据进行分析、处理。通过Android强大的UI界面设计,把处理过的汽车运行信息和DTC以图表的形式呈现给客户。同时手机APP把获得数据存储到本地的同时上传到远程服务器端。设计基于BS模式的远程监控Web端,利用AJAX与服务器建立通信传输用户指令和获取新的数据并加载页面,展示给用户,同时故障维修人员可以在远程登陆,帮助用户维修汽车,实现手机、电脑、汽车一体化的实时监测系统。整个系统结构见图1所示。
如图1所示,整个系统结构分为两个部分,第一部分由汽车、OBD通用诊断接口和Android手机构成,通过解析OBD-II协议,设计与OBD通用诊断接口通信的Android客户端。第二部分由服务器和
图1. 总体框架
Web前端构成,利用手机端上传到服务器的汽车记录,设计实现对汽车的远程监控。
Android客户端是该诊断系统的信息源,利用Bluetooth与通用汽车诊断接口ELM327通信,解析OBD协议并对解析的数据进行分析、处理、显示和上传。Android客户端的设计包括蓝牙通信、数据库SQLite设计、协议解析和UI设计四部分。客户端设计流程图见图2所示。
Bluetooth分为BLE和支持SPP协议的普通蓝牙,目前智能手机蓝牙均支持蓝牙4.0协议。虽然BLE低功耗蓝牙具有耗电量低、传输速度快等特点,但因其不适合长时间、多数据的可靠传输,本设计中采用的数据透传蓝牙是传统的支持SPP协议的蓝牙。
目前生产的所有主流汽车上都配备有OBD并预留出OBD车载接口,OBD-II是国际统一的车辆故障码定义。车载OBD可以监测多个系统和部件,包括汽车的排放控制系统、燃油控制系统、转速系统、氧传感器等 [
ELM327作为目前主流的OBD通用故障诊断接口,可自动识别所有的OBD-II诊断协议及与其兼容的通讯协议。具有蓝牙和USB两种连接方式,分别与电脑和手机蓝牙通信,实现:
1) 清除故障代码,并关闭发动机故障报警指示灯;
2) 读取发动机实时运行数据;
3) 读取通用故障诊断代码(DTC),并显示其定义。
在本设计中以Android作为ELM327的上位机,获取透传的OBD数据,解析OBD通信协议。
OBD数据传输流见图3所示:
OBD-II协议中定义的数据格式 [
车载OBD的ECU工作在9种模式下,在每种工作模式下支持不同的PID,每种PID值代表汽车部件不同状态信息,包括发动机冷却液温度、故障码DTC等,所以对OBD的请求和数据解析分为两个步骤 [
Step1:向OBD设备请求一种工作模式下的PID支持并接收设备响应,表1和表2所示。
图2. 安卓客户端流程图
图3. OBD数据传输流
图4. OBD消息格式
消息类型 | Request | ||
---|---|---|---|
数据字节 | 描述(Hex) | 字节值(Hex) | 记录 |
#1 | 请求当前OBD设备 | 01 | SIDRQ |
#2 | 请求PID01-20的支持 | 00 | PID |
表1. 请求当前模式下的PID支持(01模式)
消息类型 | Response | ||
---|---|---|---|
数据字节 | 描述(Hex) | 字节值(Hex) | 记录 |
#1 | 响应当前请求 | 41 | SIDRQ |
#2 | PID响应 | 00 | PID |
#3 | 字节A,对PID 01,03-08支持 | 10111111b = $BF | DATA_A |
#4 | 字节B,对PID 09,0B-10支持 | 10111111b = $BF | DATA_B |
#5 | 字节C,对PID 11,13,15支持 | 10101000b = $A8 | DATA_C |
#6 | 字节D,对PID 19,1C,20支持 | 10010001b = $91 | DATA_D |
表2. 当前模式下PID支持的响应信息(01模式)
Step2:向OBD设备请求一种工作模式下多种PID数据并接收数据,见表3和表4所示。
OBD支持多种通信协议,不同的汽车制造商采用不同的OBD通信协议,为了提高通用性,本设计支持12种车载OBD通信协议 [
在Android端APP内有“设置”功能,用于蓝牙选择和OBD协议选择,用户可根据车型自由选择通信协议。若用户不了解车型所使用的OBD协议时,也或设置“auto”由ELM327自动匹配,具有较强的灵活性和通用性。
SQLite是一个遵守ACID的关系型数据库管理系统,作为一个开源的轻量级数据库,其设计目标是应用于嵌入式设备。目前主流的Android设备均采用SQLite作为本地数据库,本设计中使用SQLite缓存用户行车记录。表是数据库的基本存储单元,一个表就代表一类具有实际意义的对象,用户不能通过对象来访问数据,但是可以通过表来访问数据,Android端行车记录表见表5所示。
Android端解析OBD协议并对解析的数据进行分析、处理、存储最终显示给用户。Canvas绘制仪表盘,实时显示汽车转速、发动机温度等信息。利用重力传感器实时显示汽车运行方向,查询行车记录、汽车故障码等信息,实现汽车-手机-用户一体化 [
设计以HTML为页面骨架,CSS决定页面样式,JavaScript决定页面行为 [
消息类型 | Request | ||
---|---|---|---|
数据字节 | 描述(Hex) | 字节值(Hex) | 记录 |
#1 | 请求当前OBD设备 | 01 | SIDRQ |
#2 | PID:状态信息和DTC对应的PID值 | 19 | PID |
表3. 请求当前模式下的PID (01模式)
消息类型 | Response | ||
---|---|---|---|
数据字节 | 描述(Hex) | 字节值(Hex) | 记录 |
#1 | 响应当前请求 | 41 | SIDRQ |
#2 | PID:状态信息和DTC对应的PID值 | 19 | PID |
#3 | 氧传感器输出电压值(B2-S2):0.8Volt | A0 | DATA_A |
#4 | 短期燃料剪修(B2-S2):93.7% | 78 | DATA_B |
表4. 当前模式下PID值的响应数据(01模式)
列名 | 数据类型 | 允许空值 | 主键/外键 | 对应中文属性名 |
---|---|---|---|---|
id | integer | 否 | 主键 | 行车记录ID |
startData | integer | 否 | 记录开始时间 | |
endData | integer | 是 | 记录结束时间 | |
rpmMax | integer | 是 | 最大转速 | |
speedMax | integer | 是 | 最大速度 | |
engineRuntime | text | 是 | 行程时长 |
表5. 行车记录表
图5. Android端UI设计
本设计中采用以JavaScript和AJAX为基础的单页面应用设计,单页面设计即用户在网页上的所有操作都在同一个页面进行。其最大的优势是符合用户操作习惯,使得用户在网页上的操作类似于桌面应用,有较好的时效性和可移植性。在实现前后端分离的同时,降低了服务器对渲染页面和文件传输的负担,减少了网络资源的占用,加快了网络请求的响应速度。
为了兼容不同尺寸的浏览设备如手机、平板电脑,本设计采用基于BOOTSTRAPT的响应式设计 [
前端页面渲染的数据来源是后台服务器,本设计采用AJAX [
AJAX的工作原理是在在用户和服务器之间加了—个中间层(AJAX引擎),实现数据的异步更新。除此之外,AJAX引擎可以替代本地服务器处理用户的数据验证和数据请求,在需要从本地服务器读取数据时由AJAX引擎代为向服务器提交请求,得页面根据用户请求向服务器请求少量数据而非整个页面。AJAX与后台交互数据采用AJAX get()方法从服务器端加载数据,通过AJAX post()方法从服务器端加载数据以及向服务器端传输数据。
以BOOTSTRAPT作为页面框架渲染界面,JAVASCRIPT执行页面用户行为,AJAX实现异步页面刷新,实现用户随时随地远程获取汽车状态信息、历史故障码和行车记录的远程监控端。既有利于车主实时掌控汽车状态信息,维修人员也可远程登录客户账户,实现远程汽车检修。设计的Web端界面见图7所示。
图6. AJAX构建应用程序流程图
图7. Web端界面设计
本设计利用智能手机完善的数据处理能力及自带无线、蓝牙等通信功能的优势,并结合INTERNET技术,将汽车的实时检测扩展到远程监控。实现了基于Android的汽车实时监测系统与OBD通用诊断接口ELM327通信,通过对OBD-II协议的解析,可实时获取汽车故障码和状态信息,存储到本地数据库并同时传输到远程监控端。用户不需要购买额外设备,只需在手机上安装APP便可以实现汽车的实时远程监控和故障诊断,并实现故障维修人员的远程维修。系统具有较大的市场应用前景。
徐丽娜,叶 桦,陶 鹏. 基于Android的汽车实时监测系统的研究与实现 Research and Implementation of Vehicle Real-Time Monitoring System Based on Android[J]. 计算机科学与应用, 2017, 07(02): 109-116. http://dx.doi.org/10.12677/CSA.2017.72013