2017年第26卷第6期http://www.
c-s-a.
org.
cn计算机系统应用ResearchandDevelopment研究开发271安卓平台中OBD车辆数据的采集及上传系统①廖海林,李优新,叶绍翔,朱正佳(广东工业大学信息工程学院,广州510006)摘要:提出了一种车辆数据采集与上传方案,通过安卓平台的蓝牙模块与车辆上OBD模块进行信息交互,从而实现对车辆数据的实时监测,并通过互联网把采集到的数据上传到基于JEE搭建的web服务端,在服务端通过对数据的分析和统计,最终在web端实现图表展示.
该方案具有低成本、操作性强、效率高、维护简易等特点.
关键词:蓝牙;OBD;互联网;服务端OBDDataAcquisitionandUploadingSystemforVehicleonAndroidPlatformLIAOHai-Lin,LIYou-Xin,YEShao-Xiang,ZHUZheng-Jia(SchoolofInformationEngineering,GuangdongUniversityofTechnology,Guangzhou510006,China)Abstract:Akindofschemeforvehicledataacquisitionanduploadingisproposedinthispaper.
Andthereal-timemonitoringisimplementedonthebasisofdataexchangebetweenBluetoothmoduleoftheandroidplatformandOBDmoduleonthevehicle.
Moreover,thecollecteddataisuploadedtothewebserverwhichisbuiltonJEE.
Andthenthedataareshowedintheformofchartsontheweb-sideafterdataareanalyzedandprocessedontheserver.
Theschemehasalotofadvantagessuchaslowcost,strongoperability,highefficiencyeasymaintenanceandsoon.
Keywords:bluetooth;OBD;internet;server1引言车联网(InternetofVehicles)是车内网(CAN/LIN)、车际网(V2V/V2I)与车载移动互联网(INTERNET)"三网"融合的智能系统.
据福布斯官方网站报道,2015年中国共售出2460万辆汽车,涵盖乘用车、卡车及客车,同比上涨4.
7%.
在《2015-2020年中国车联网行业市场全景调研与投资策略分析预测报告》中显示:随着我国汽车保有量和产量的不断增长,到2020年销售量将突破5000万户,2014-2020年车联网用户的年均增幅有望达到33.
48%,行业渗透率超过20%.
车联网需要实时采集车辆内部的数据,传统方法是采用RS-232、RS-485通过CAN总线对车辆系统内部数据通信[1],从而实现数据实时性的采集,显示终端都固定在车辆上.
而随着车载诊断系统OBD-Ⅱ(OnBoardDiagnostics)[2,3]的出现,显示终端以随身携带的方式出现在人们的面前.
同时OBD-Ⅱ不仅仅再是监控车辆尾气的排放,也能获取发动机控制单元(ECU)、变速箱控制单元(TCU)等各个控制单元的数据,甚至还可以满足车辆故障检测、诊断的功能.
OBD-Ⅱ主要侧重稳定性、及时性和智能性,这样才导致OBD模式车联网的兴起.
另一方面,传统的车载系统一般采用ARM系列的CPU,基于微软的WinCE操作系统,只具有导航、收音机、蓝牙免提和DVD等基本功能.
而随着基于开源的谷歌Android操作系统的崛起,并处于互联网和大数据的时代,使得Android操作系统在车载系统具有非常大的发展.
正是安卓平台的智能化和网络化,能使OBD数据与网络进行交互.
本文的技术方案正是基于以上背景提出的通过对车辆数据信息的采集,实现安卓智能平台和远程服务端可以实时获取车辆数据信息.
①收稿时间:2016-09-21;收到修改稿时间:2016-11-10[doi:10.
15888/j.
cnki.
csa.
005809]计算机系统应用http://www.
c-s-a.
org.
cn2017年第26卷第6期272研究开发ResearchandDevelopment2系统架构设计2.
1系统结构与原理本系统的总体设计方案如图1所示,主要由车辆的OBD模块,安卓平台,服务器和web端四个部分构成.
其工作原理是首先在OBD接口上插装一个兼容ELM327的OBD检测仪;接着安卓平台通过蓝牙与OBD检测仪进行通信,通过串口应答方式,获取机动车传感器的数据,并在安卓平台上显示;然后安卓平台通过互联网,实时地把数据上传到服务端,服务端同时把数据保存到本地的数据库当中,并对其进行相应的数据分析和统计;最后通过web端访问服务器,从而实现图表的显示.
图1系统总体设计方案示意图2.
2安卓平台模块结构安卓平台采用了模块化的设计方式,如图2所示.
主要由无线通信模块,蓝牙模块,GPS模块和安卓应用软件模块组成.
其中无线通信模块通过4G网络或者无线网络把采集到车辆数据传输到服务端;蓝牙模块主要是与车辆OBD接口进行数据交互的;GPS模块用来获取车辆的实时地理位置信息(经纬度);应用软件模块是实现了与用户进行交互的界面和车辆采集数据的显示.
2.
3OBD相关技术OBD的全称是On-boardDiagnostic,车载诊断系统.
第二代OBD系统以16pin母口的J1962连接器作为标准接口,其通信协议由不同汽车厂商决定.
OBD-Ⅱ的服务是通过模式号(Mode)和参数号(PID)组合确认的[2].
本系统主要使用模式01和模式03,其中模式01为车辆传感器的实时数据,模式03用于请求车辆排放相关的故障码信息.
根据ISO-15031-5协议,例如想请求发动机转速,则该模式号为01,参数号为0C.
图2安卓平台模块结构图2.
4数据传输格式本文数据传输格式使用JSON(JavaScriptObjectNotation).
JSON是一种轻量级的数据交换格式,比起XML,其主要优势在于它的体积小,在网络传输的时候可以更省流量.
一般JSON数据是以键-值对的集合形式表示,比如对象person用JSON格式来表示:{"id":"1","name":"Liaohailin","sex":"male"}.
本文使用第三方开源库Jackson进行Java对象和JSON数据之间的转换,这样使得JSON数据格式容易阅读,解析速度快且占用空间更少.
比如上面的person对象并不需要以键-值对集合形式来表示,只需要把数据在Person.
Class类封装好并实现序列化,这样就可以进行数据传输了.
3软件系统开发设计3.
1OBD系统通信在本系统中,安卓平台设备与ELM327检测仪通过蓝牙连接[4],使用蓝牙SPP(SerialPortProfile)协议[5],实现蓝牙设备间进行数据的传输.
ELM327是一款标准OBDII汽车引擎系统诊断检测仪,支持安卓(Android)、塞班(Symbian)、PPC(WindowsMobile)、WinXP(32位)、Win7(32位)等操作系统.
结合本系统的车辆检测软件,能读取汽车各传感器数据,实时检测汽车状态.
为确保安卓平台设备与ELM327正确建立连接,程序流程如下[6]:(1)程序启动后,先检查安卓平台是否支持蓝牙,不支持就在LogCat日志打印信息,并关闭检测软件,关键代码如下:mBluetoothAdapter=BluetoothAdapter.
getDefaultAdapter();if(mBluetoothAdapter==null){Log.
e(TAG,"bluetoothisnotavailable");2017年第26卷第6期http://www.
c-s-a.
org.
cn计算机系统应用ResearchandDevelopment研究开发273finish();}(2)检查蓝牙是否处于打开状态,如未打开,通过Intent发起打开蓝牙设备的请求,关键代码如下:if(!
mBluetoothAdapter.
isEnabled()){Intentintent=newIntent(BluetoothAdapter.
ACTION_REQUEST_ENABLE)startActivityForResult(intent,REQUEST_BLUETOOTH_ENABLE);}(3)如果有匹配的蓝牙设备,直接点击连接;如果没有,则点击"搜索设备",系统将开始查找蓝牙设备.
在搜索新设备时创建了一个BroadcastReceiver,并注册了两个事件,分别是BluetoothDevice.
ACTION_FOUND和BluetoothAdapter.
ACTION_DISCOVERY_FINISHED,最后将搜索到的新设备添加到ListView中,并注册了点击事件,以进行蓝牙设备的配对.
关键代码如下:IntentFilterfilter=newIntentFilter(BluetoothDevice.
ACTION_FOUND);this.
registerReceiver(mReceiver,filter);IntentFilterfilter=newIntentFilter(BluetoothAdapter.
ACTION_DISCOVERY_FINISHED);this.
registerReceiver(mReceiver,filter);3.
2车辆数据采集ELM327的指令类型分两大类:一类是AT指令[2],可以复位芯片,设置通信参数等功能;另一类是OBD指令,是以ASCⅡ码表示的16进制数.
目前汽车车型可能只支持SAEJ1979协议和ISO-15031-5协议中的部分模式号和参数号,但是所有车辆都必须支持Mode01,PID00指令,该指令返回车辆在01模式下支持的所有PID.
所以,在获取车辆数据前,先发送"0100\r",获取车辆ECU所支持的PID集合,成功返回6个16进制数"4100xxxxxxxx".
前两个字节用于确认请求码,剩下的四个字节按二进制数展开,每一位代表一个PID,1表示该PID可以读取,0表示不能读取.
根据ISO-15031-5协议得知PID05表示发动机水温数据,安卓平台发送"0105\r"请求,假设返回"410567",水温数据在协议中设置的补偿为(X-40),返回数据中67的十进制数为103,所以车辆水温为103-40=63摄氏度.
3.
3车辆数据上传本系统在安卓端把采集的数据封装好,再利用开源的Jackson工具包把封装好的类进行序列化,通过HTTP协议上传到服务端[7];在服务端利用Jackson工具包把数据进行JSON解析,然后通过JDBC操作数据库.
首先去官网下载Jackson工具包,有3个jar包需要下载:jackson-core-2.
2.
3.
jar(核心jar包)jackson-annotations-2.
2.
3.
jar(该包提供Json注解支持)jackson-databind-2.
2.
3.
jar(1)安卓端关键代码如下:ObjectMapperom=newObjectMapper();om.
writeValue(conn.
getOutputStream(),OBD_data);(2)服务端关键代码如下:ObjectMapperom=newObjectMapper();OBD_Datadata=om.
readValue(request.
getInputStream(),OBD_Data.
class);4系统测试与分析4.
1安卓平台功能测试在安卓平台使用eclipse4.
2作为开发工具,利用Java语言进行代码的编写.
参考郭霖的《第一行代码-Android》制作UI界面[8],最终在安卓设备可以查看车辆实时速度、发动机转速、行驶里程等数据,还可以显示百度地图功能.
显示界面如图3所示.
图3安卓平台显示界面4.
2JEE平台测试本系统的Web服务器基于J2EE[9]采用Tomcat搭建,并使用MVC模式开发,数据库选用MySQL5.
6.
计算机系统应用http://www.
c-s-a.
org.
cn2017年第26卷第6期274研究开发ResearchandDevelopment服务器完成数据存储、用户管理及故障分析等功能.
下面进行的是模拟调试,完成对数据库的操作,在web端显示用户在每日24h时间段内的驾车平均速度,如图4所示.
图4web端24小时驾车平均速度图5结语本系统通过对车辆OBD数据的采集,实现数据在安卓平台上显示和通过互联网上传数据到服务端,并实现数据的存储和分析,最后通过web端实现基本的图表功能.
本文设计方案简单易行,开发成本低,拓展性强,加上安卓系统不断地发展,为后续相关项目的研究开发打下了基础.
参考文献1宋雪桦,潘波,黄继梅.
汽车电控制单元CAN-RS232-USB诊断与通讯模块研制.
微计算机信息,2006,(22):226–228.
2ELM327DS.
OBDtoRS232Interpreter.
ElmElectronics-CircuitsfortheHobbyist.
3三木.
OBD端口的商业价值有没有含金量.
音响改装技术,2015,(3):52–57.
4MeseguerJE,CalafateCT.
DrivingStyles:Asmartphoneapplicationtoassessdriverbehavior.
2013IEEESymposiumonComputersandCommunications.
IEEE.
2013.
535–540.
5黄立梅,陈彤.
一种基于安卓蓝牙和OBD接口的车辆监测与控制方法.
汽车实用技术,2016(4):104–105.
6李小敏.
基于Android智能手机的汽车诊断系统的研究与实现[硕士学位论文].
青岛:中国海洋大学,2014.
7徐健,王涛.
HTTP/1.
1分析.
西南师范大学学报(自然科学版),2004,29(2):316–319.
8郭霖.
第一行代码-Android.
北京:人民邮电出版社,2014.
9马聪,王璞.
基于OBDII&EOBD的机动车监测系统分析与设计.
计算机工程与应用,2016,52(1):233–238.
Hostkey.com成立于2007年的荷兰公司,主要运营服务器出租与托管,其次是VPS、域名、域名证书,各种软件授权等。hostkey当前运作荷兰阿姆斯特丹、俄罗斯莫斯科、美国纽约等数据中心。支持Paypal,信用卡,Webmoney,以及支付宝等付款方式。禁止VPN,代理,Tor,网络诈骗,儿童色情,Spam,网络扫描,俄罗斯色情,俄罗斯电影,俄罗斯MP3,俄罗斯Trackers,以及俄罗斯法...
妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款,超过2天不退款 物...
HostKvm又上新了,这次上架了2个线路产品:俄罗斯和香港高防VPS,其中俄罗斯经测试电信CN2线路,而香港高防VPS提供30Gbps攻击防御。HostKvm是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。俄罗斯VPSCPU:1core内存:2G...
安卓4.4.4为你推荐
AppleTVappleboxiphoneDeviceios5win10445端口win7系统不能被telnet端口号,端口、服务什么全都开了win7如何关闭445端口如何判断445端口是否关闭google中国地图谷歌退出中国,地图要是关了就太可惜了!手机谷歌地图还能用吗?google图片搜索如何使用google图片搜索引擎?icloudiphone苹果6显示已停用请连接itunes什么意思google分析谷歌的Search Console 和 Google Analytics有何区别搜狗浏览器2.2搜狗浏览器打开跳出两个上网导航怎么办
大庆服务器租用 新通用顶级域名 域名抢注工具 justhost enzu themeforest directadmin 国内加速器 轻量 全能主机 500m空间 浙江独立 湖南服务器托管 php空间推荐 双十一秒杀 美国在线代理服务器 最好的qq空间 酷番云 彩虹云 移动服务器托管 更多