当我通过CAN向汽车添加功能时,无法编程



本文的目的是讨论我在汽车改装方面的经验以及使用CAN总线进行的实验。

一切如何开始


首先,我决定在我的2017 Chevrolet Cruze中添加前置摄像头。 由于汽车已经装有工厂后视摄像头,因此从高层次上讲,有必要找出两件事:

  1. 我将添加从前置摄像头传输视频的方式。
  2. 一种随时显示来自后视摄像头的图片的方法。

视频部分很简单。 根据以前的经验,我知道您可以在继电器上制作视频混合器。

在屏幕上启动的过程变得更加复杂,经过一番调查,我得出的结论是,汽车应该通过某种数据总线将后视摄像头的信号发送到屏幕。

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总线集成的可能性大开眼界。 通过两条线连接可以实现什么是非常令人惊讶的。

将来


将来,我计划编写一个深入的教程,介绍如何使用免费软件和组件为汽车中的现有按钮添加附加功能。

Source: https://habr.com/ru/post/zh-CN451294/


All Articles