这篇就重点说说汽车的内部通讯方式和项目的整体架构吧。
一.汽车的USB-OBD和汽车的大脑-ECU
说到这里,咱还是回头再看看OBD的概念,OBD是英文On-Board Diagnostic的缩写,中文翻译为“车载诊断系统”。汽车方向盘的左下方一般都有这么一个16针的接口,这个接口最早是用来检测排放废气的,也用来故障诊断。
OBD接口
那ECU是什么呢?这块我们团队也还没有深入研究,只是理解到ECU就是汽车的大脑。现在的电子技术在汽车运用得越来越多,很多汽车的数据都是存储在ECU上的。如果汽车出现了什么问题(故障码),就会存储在ECU上。
ECU板
OBD和ECU的关系我的理解就是USB和电脑核心系统(芯片,内存,硬盘)的关系。在这个领域中的极客,都是可以通过OBD去刷ECU的数据而提高汽车动力性能的。有点类似于刷系统,当然难度也是很高的,主要是OBD一般都是读取的发动机转速、速度、水温、油耗等通用数据,协议也相对通用。真正每个汽车厂商的核心数据是各不相同的。
二.汽车的总线:K总线和CAN总线
但是OBD和ECU是如何通信的呢?原理和普通电脑一样,是靠总线连接的,目前家用车多采用K总线和CAN总线两种,你只要知道,CAN总线是相对高级的总线就行了。只是这一块如上文所说,中间是有非常复杂的网络协议,有点类似于TCP/IP那种。当然总线不仅仅是连接OBD,还会将汽车上的很多传感器串联起来。也就是说,汽车本身就是一台电脑,也可以理解为一个局域网。
总线示意图
三.总体架构
前面随便说了下汽车内部的通讯方式,下面聊聊整体的架构吧,从图上看真的很简单,包含四层。不过真正做起来的时候,从用户界面到异常处理,到多OBD的适配,到蓝牙的自动连接,好多细节需要处理,以后的文章再慢慢说吧。
1.ECU-------OBD(我们不用关心,OBD硬件厂商一般都做好了)
2.OBD--------Android终端PP(采用OBD解析协议,通过蓝牙方式传输,下篇博客会重点描述)
3.Android终端APP-------服务器+数据库(采用自定义的Webservice)
4.PC浏览器-------服务器+数据库(网站技术)