使用OBD‐II和树莓派技术诊断车辆状况:文献研究
1. 引言
车载诊断是由汽车制造商开发的基于计算机的汽车诊断系统。它主要关注诊断发动机性能,以检查发动机部件中的任何错误[1]。OBD‐II与车辆中的DLC连接。几乎所有的车辆问题都可以通过OBD‐II检测到,例如排气歧管、防抱死制动系统功能、安全气囊(iSRS和SRS)、进气性能等。然而,OBD仅用于扫描车辆诊断。要读取、处理和显示数据,则需要微控制器。微控制器是安装在芯片上的微处理器系统。微控制器与个人电脑所使用的微处理器不同,因为通常通用的微控制器已经集成了最小支持组件系统,如内存和I/O接口;而微处理器通常只包含中央处理器[2]。如今有许多可以数字控制设备的工具。但我们选择了两种流行型号并比较了它们的功能。这两种型号分别是Arduino Uno和树莓派。Arduino是一种开源微控制器板,能够通过通用串行总线(USB)连接到计算机和其他设备。Arduino可以通过任何电源供电,例如计算机、电池等[3]。有多种不同类型的Arduino可供选择以满足各种需求,为符合我们的研究,我们选择使用Arduino Uno。
树莓派是一种价格低廉的信用卡大小的计算机,配备700MHz处理器、512MB的 SDRAM、板载以太网、HDMI和RCA接口、双USB连接器以及SD卡插槽。此外,它还拥有一组输入/输出引脚,使树莓派在DIY和设备创新方面表现出极强的适应性[6]。
| Indicator | Arduino Uno | Raspberry Pi |
|---|---|---|
| 测试型号 | R3 | B型 |
| 处理器 | ATMega 328 | ARM11 |
| 时钟速度 | 16兆赫 | 700兆赫 |
| RAM | 2KB | 256兆字节 |
| 以太网 | N/A | 10/100 |
| USB主控 | N/A | 2 USB 2.0 |
树莓派被正确地选为此应用程序的单板计算机,因为与Arduino相比,它的性能最高(Arduino仍使用ATMega 328作为其处理器,而树莓派已使用规格更高的ARM11),并且Arduino无法同时运行多个进程,因为它只有2千字节的内存。此外,树莓派具有以太网和 USB输入端口,这使其更容易连接互联网以及连接到其他设备。
2. OBD‐II扫描仪
近期,车载OBD‐II(车载诊断系统)扫描仪已被引入用于通过车辆网络(OBD‐II)对车辆进行诊断和检查,而此前这类工作需依赖多种设备,如黑匣子、车辆诊断设备和车辆供应管理[7]。OBD是一种标准工具,驾驶员可通过将OBD插入位于方向盘下方的端口来检查汽车发动机状态。大多数OBD可获取排放控制、行驶速度、电压控制、发动机冷却液温度、怠速时间等信息[8]。OBD‐II通常与尾气分析仪和车辆远程信息处理等扩展工具配合使用[9]。OBD扫描仪是一种成本较高的设备,主要由维修车间拥有[10]。我们可以通过将OBD‐II连接到端口,并通过OBD‐II连接器连接到移动设备,从而使用移动设备访问车辆的ECU。随后,CAN总线转换数据后,OBD‐II将数据传输至移动设备[11]。有许多扫描仪可以连接到OBD‐II,例如最基本的扫描仪之一:U480 CAN OBD‐II诊断扫描仪。该扫描仪配备基本的液晶显示屏,可显示所连接车辆的车载诊断信息,但需要通过线缆与车辆连接。开发的扫描工具符合多种SAE(CAN)标准通信协议,可与车辆中安装的ECU进行连接[12]。车载诊断是一种用于诊断和报告汽车发动机状况的工具。它是汽车控制器局域网(或CAN总线)与外部设备之间的接口,例如连接OBD端口和笔记本电脑的OBD扫描工具。
汽车车辆的所有部件均可通过CAN总线相互通信。例如,当驾驶员踩下油门踏板时,位置值会被发送至电子控制单元(ECU),ECU根据该位置值调整空燃喷射。因此,我们可以通过OBD端口读取在CAN总线上传输的该位置信息[13]。如今大多数扫描仪均为无线类型,例如目前最常用的三种扫描仪:首先是ERUSUN蓝牙迷你OBD‐II扫描仪,它通过蓝牙在用户车辆的计算机与用户设备之间提供无线连接;其次是iSaddle蓝牙 / 无线网络无线OBD‐II扫描仪是一种可通过无线网络或蓝牙进行连接的扫描仪,能够连接平板电脑、智能手机和计算机。ELM‐327就是这样一种适配器,它通过配对后经由蓝牙传输从OBD2端口读取的数据[14]。最后,还有iSaddle OBD‐II无线网络/蓝牙扫描仪,也可通过蓝牙或无线网络进行连接[15]。
3. 安卓上的iSaddle蓝牙OBD‐II扫描仪
需要了解OBD2协议和转换将OBD2信号转换为适用于PC的串行数据标准[16]。iSaddle蓝牙OBD‐II扫描仪比iSaddle无线网络OBD‐II扫描仪更适用于本应用程序,因为该应用程序需要设备具备互联网连接。当设备通过无线网络连接到该应用程序时,将无法再通过无线网络连接互联网。在这种情况下,用户必须在使用移动数据连接此应用程序或完全不使用该应用程序之间做出选择。此外,蓝牙无线技术是一项开放规范,可实现低功耗和短距离无线连接[17]。由于该应用程序将在车辆内使用,而车辆中没有电源为智能手机充电,因此低功耗无线技术将是一个极佳的解决方案。
通过使用OBD2蓝牙接口,还可以从车辆发动机获取实时瞬时油耗的信息[18]。OBD2车速被用作真实车速的基准。基于蓝牙的OBD2设备安装在车辆上,以每秒一次的间隔收集车辆速度,并将其传输到手机[19]。OBD‐II并未提供用户友好数据和有意义的数据,尽管有许多研究声称有可能利用OBD‐II的诊断数据中的实时数据来分析驾驶员行为[20]。如今,这些研究正集中于使用多源信息融合技术,以更好地解读驾驶员行为与汽车发动机性能之间的关系[21]。然而,分析部分是在数据收集完成后离线进行的,因此OBD‐II无法提供实时驾驶支持[22]。
iSaddle蓝牙OBD‐II扫描仪具有体积小、结构紧凑的特点,并支持所有OBD‐II协议。此外,稳定的无线连接、无需线缆和无需电池是iSaddle OBD‐II具备的一些额外功能[23]。要正常使用,iSaddle蓝牙OBD‐II扫描仪需要车辆在车辆仪表板下方配备16针数据链路连接器(DLC)[24]。同时,车辆排放控制标签上必须标明该车辆符合OBD‐II标准。然后将此扫描仪插入DLC,并可连接至任何计算机、平板电脑或智能手机[25]。有许多诊断软件与iSaddle蓝牙OBD‐II扫描仪相关联。通过这些软件,能够读取诊断故障代码、清除故障码、关闭发动机故障指示灯、设置获取的最大响应数量、从发动机控制单元(ECU)响应中删除空格(以加快数据传输速度)、在电可擦可编程只读存储器(EEPROM)中存储唯一标识符、通过一条命令设置CAN掩码和滤波器、轻松切换可变和固定CAN消息长度、发送CAN远程帧(RTRs)等更多功能[23]。
汽车发动机故障指示或通常称为诊断故障代码(DTC)会保存在系统中。这些代码并非在所有车辆中都相同,并非所有生产车辆的国家都使用制造商代码。然而,现在每个人都可以将OBD‐II连接到端口,诊断汽车发动机故障,然后识别故障数据[26]。如今,已有免费软件和商业软件包可供使用,只需一部智能手机和现成的扫描工具即可监控OBD‐II车辆数据。有许多软件可以通过智能手机和一些外部工具来监控汽车发动机。但所有车载诊断系统仅显示低级数据。OBD‐II无法提供用户友好且有意义的数据,尽管有许多研究声称有可能利用OBD‐II诊断数据中的实时数据来分析驾驶员行为。如今,这些研究正致力于使用多源信息融合,以更好地解释驾驶员行为与汽车发动机性能之间的关系。遗憾的是,分析部分是在数据收集完成后离线进行的,因此OBD‐II无法提供实时驾驶支持。
4. OBD‐II中的过程
设置OBD扫描仪工具并不是一个统一的过程,因为存在各种类型和品牌的车辆以及OBD扫描仪工具本身。但通常情况下,该过程可以描述如下:首先,用户必须为手机下载相应的应用程序,具体应用取决于所使用的OBD扫描仪工具,因为不同的工具可能需要不同的应用程序。此步骤应在用户的智能手机连接到OBD扫描仪工具之前完成。下一步,用户必须将OBD扫描仪连接到DLC(数据链路连接器),它通常位于方向盘下方。DLC包含16个引脚。此步骤也必须足够完成得很好,因为它将直接连接到OBD扫描仪工具。当用户将OBD扫描仪安装到DLC时,需要注意以下16针DLC及其功能列表:这16个引脚包括:(1)制造商保留引脚,(2)J1850,(3)制造商保留引脚,(4)底盘接地连接器,(5)信号地,(6)CAN高电平,J‐2284,(7)K线,ISO9141‐2/DIS 14230‐4连接端口,(8)制造商保留端口,(9)制造商保留端口,(10)J1850总线,(11)制造商保留端口,(12)制造商保留端口,(13)制造商保留端口,(14)控制器局域网,J2284端口,(15)L线,ISO 9141和ISO/DIS 14230‐4,(16)电池电源连接。由于车辆的类型和品牌种类繁多,OBD扫描仪本身也各不相同,且此过程为通用流程,因此存在一些
数据链路连接器和OBD线缆,(b) OBD‐II的16个引脚 [28],(c) OBD‐II诊断故障代码说明 [29])
5. 树莓派中的处理过程
树莓派不是固定的
与许多移动设备不同,树莓派是一种可扩展功能的设备。尽管移动设备通常配备摄像头,但通常无法为大多数移动设备添加额外硬件。而使用树莓派,则可以操作基础硬件。目前有大量资源致力于以树莓派为基础构建创新系统,从超级计算机到延时摄影相机均有涉及。树莓派的一个优势在于它限制了程序员可用的资源,随着编程项目复杂性的增加,程序员必须养成更清晰、更良好的编程习惯。资源的限制可能会促使开发出更加高效的程序[6]。为了与iSaddle蓝牙OBD‐II扫描仪协同工作,树莓派需要一个蓝牙扫描器进行配对。市面上有多种商用蓝牙扫描器,但在本应用中将使用树莓派Nano蓝牙适配器,这是一种理想的低成本解决方案,且易于安装。在使用蓝牙适配器之前的第一步,是在树莓派上安装最新的Raspbian操作系统(OS),后续数据将在该系统中显示和处理。Raspbian OS 是一种基于Debian的免费操作系统,针对树莓派硬件进行了优化[31]。下一步是下载pyOBD。pyOBD是一款开源的符合OBD‐II标准的扫描工具软件,用Python编写
完全使用Phyton编写。它通过OBD‐II诊断接口实现。它将允许用户查看其车辆的ECU数据、显示DTC、测量值、状态测试等[32]。
6. 应用程序流程
推荐系统
能够诊断车辆,收集、存储数据,并从手机应用程序中检索指令。车辆诊断数据通过 iSaddle OBD2蓝牙扫描仪采集,并通过蓝牙发送到树莓派。树莓派需要Nano蓝牙适配器作为额外工具,以实现通过蓝牙接收和发送数据。诊断数据传输至树莓派后,pyOBD将根据 OBD‐II诊断故障码显示诊断数据界面并进行处理。该应用程序使用Node.JS作为服务器端语言来处理诊断数据。相比PHP仅能良好处理小请求但在大请求时性能较差,Node.JS在高并发情况下表现更优,无论是在基准测试还是场景测试中[33]。这些数据被封装为JSON对象,并存储到MongoDB(面向文档的NoSQL数据库管理系统[34])。相较于其竞争对手Oracle数据库,MongoDB在开发过程中提供了更高的灵活性,并且更易于在不同服务器之间部署和复制数据库[34],因此更适用于本应用程序。通过互联网连接,存储在MongoDB中的JSON对象可通过该应用程序解析并发送至用户的智能手机。
用户还可以向车辆发送自定义命令。用户必须在本应用程序中输入命令以执行此操作。随后,应用程序会将输入内容生成JSON对象并存储到MongoDB中。Node.JS API会将这些 JSON对象处理为ELM‐USB命令列表。这些ELM‐USB命令列表被发送至iSaddle OBD‐II蓝牙扫描器,并触发车辆执行用户的命令。
树莓派Nano蓝牙适配器 [31];(b) 应用程序流程)
7. 结论
车辆诊断
近年来,车辆诊断技术受到工业界和研究人员的广泛关注。车辆诊断实现方式的多样性和异构性是其备受关注的主要原因。本文提出了一种技术,用于分析连接到OBD‐II的车辆的诊断信息,并使用树莓派处理诊断数据。用户还可以通过该应用程序向自己的车辆发送指令。尽管当前过程仅涉及将车辆诊断数据传输至用户的智能手机,但考虑到树莓派具备多任务处理能力,使用树莓派更为合适。在未来的OBD‐II扫描仪相关研究中,建议使用支持蓝牙的OBD‐II扫描仪而非无线网络,因为蓝牙更加节能、易于使用且更稳定。
1678

被折叠的 条评论
为什么被折叠?



