
本文的目的是讨论我在汽车改装方面的经验以及使用CAN总线进行的实验。
一切如何开始
首先,我决定在我的2017 Chevrolet Cruze中添加前置摄像头。 由于汽车已经装有工厂后视摄像头,因此从高层次上讲,有必要找出两件事:
- 我将添加从前置摄像头传输视频的方式。
- 一种随时显示来自后视摄像头的图片的方法。
视频部分很简单。 根据以前的经验,我知道您可以在继电器上制作视频混合器。
在屏幕上启动的过程变得更加复杂,经过一番调查,我得出的结论是,汽车应该通过某种数据总线将后视摄像头的信号发送到屏幕。
CAN总线
雪佛兰有两种不同的数据总线。 第一个是标准的CAN,快速(500 Kbps)且可靠,用于关键数据。 第二个是GM所谓的LAN(GMLAN),这是一种用于传输非安全数据的较旧且较慢的总线(33.3 Kbps)。
我需要一种侦听CAN上流量的方法,即嗅探器。 为此,PCAN设备非常有用。
高峰罐Peak Can(PCAN)是一种USB设备,能够拦截和传输消息。 借助Pcan View软件,无需进行大量培训即可开始使用。
由于后视摄像头对安全性的重要性不如其他组件,因此我建议您查找的数据最有可能在GMLAN总线上。
最简单的访问点是OBD2连接器。 我将Peak Can连接到GMLAN总线,启动了该软件,并立即开始监听流量。
整合性
目标是对后视摄像头调用进行反向工程。 为此,在打开嗅探器的情况下,我将汽车倒转以使其打开显示器,然后尝试停放几次。 在整个过程中,我注意到一个ID,其中包含依次模仿我的操作的消息。
然后停放,并通过Pcan View尝试传输与打开和关闭显示器时看到的相同的消息。 眨眼间,我已经在与公共汽车互动。
PCAN消息传递但是,我并不打算经常带着笔记本电脑旅行。 所需要的是使这些功能自动化的方法-在这里,Arduino派上了用场。 直接接收12V电源以及大量资源和Internet支持的能力使这种选择变得显而易见。
除了Arduino外,我还需要两个组件来完成项目:CAN模块和中继模块。 本质上,Arduino是运行和运行代码的大脑。 CAN模块提供了与数据总线进行交互的能力,并且继电器为前置摄像头供电,并且还充当了前置摄像头与后视摄像头之间的视频混合器。
Mcp2515模块(顶部),Arduino Uno(中),继电器模块(底部)添加并配置适当的库后,Arduino与汽车建立了连接。
通过Arduino监听交通因为我已经知道可以开始显示了,所以我开始考虑如何做到这一点。 最初的想法是在面板上安装一个特殊的即时呼叫按钮,但我开始思考:“网络中还有什么可以用作触发器?”
在实验期间,我发现ID对应于“取消巡航控制”按钮的消息也通过GMLAN总线传输。 这是理想的选择,因为当我使用前置摄像头时,巡航控制将以高于65 km / h的速度激活,而在低于15 km / h的速度时,后视摄像头将打开以帮助停车,因此它们永远不会重叠。 编写一些代码后,我能够使Arduino识别出何时按下了取消巡航控制按钮。
单击识别但是,我不想每次取消巡航控制时都启动相机,所以我决定最好的方法是(实际上)将其变成多功能按钮。 仅在“两次按下”按钮时才激活相机。
经过一个漫长的周末,探索了millis功能并调试了代码,我成功地编程了两次轻击识别。
双击识别当我将其绑定到团队来控制显示时,我得到了一个非常酷的小实用程序。
双击+命令功能性
现在我有机会打开和关闭显示屏,但是有一个问题-后视摄像头怎么样? 我需要它们与前置摄像头一起工作,就好像它们是在工厂那样设置的。
在流程图中,我描述了如何表示它。

我很快意识到,对于这样的系统,您需要随时了解三个变量的状态:
- 前置摄像头模块:驾驶员是否打开或关闭了它?
- 相机显示屏:图像是打开还是关闭?
- 倒车:倒车还是不倒车?
没有编程经验,这是很难做到的,而且我所有的空闲时间都在考虑不同的方法。
最后,我成功了!
主动监控现在,我能够实现控制继电器的操作逻辑。
继电器控制在整个过程中,我了解了更多有关Arduino的信息,并注意到Nano版本具有更小的尺寸和更低的价格,能够满足您的所有需求。 非常适合在汽车中永久安装。 我开发了一个模型,并在3D打印机上打印了一个盒子,以将组件作为紧凑的单元进行安装。
3D外壳一起
终于有一天,我看到了结果。 尽管您仍然需要调整时间,但很高兴看到模块正常工作。
打开/关闭停车模式,打开/关闭前置摄像头,自动切换到后视摄像头,然后自动切换回总的来说,这种经验教给我很多东西,使我对直接与CAN总线集成的可能性大开眼界。 通过两条线连接可以实现什么是非常令人惊讶的。
将来
将来,我计划编写一个深入的教程,介绍如何使用免费软件和组件为汽车中的现有按钮添加附加功能。