CAN总线屏蔽连接指南

γ
贡献者: 托尼亚克,, 第399586章成员
喜爱的 最喜欢的

介绍

这个CAN总线屏蔽为您的Arduino或Redboard提供CAN总线功能,并允许您对车辆进行黑客攻击!!

CAN总线屏蔽

连接到红板的CAN总线屏蔽。

此屏蔽允许您对ECU进行轮询,以获取包括冷却液温度在内的信息,节气门位置,车速,和发动机转速。您还可以存储这些数据或将其输出到屏幕,以生成一个内置项目。亚博官网

所需材料

您将需要CAN总线屏蔽,以便遵循此连接指南。

CAN总线屏蔽

CAN总线屏蔽

DEV-13262
26.95美元
十八

我们还建议您可以使用以下材料。

建议阅读

如果您不熟悉以下概念,在尝试使用CAN总线屏蔽之前,您可能需要查看这些教程。

如何焊接:通孔焊接

本教程涵盖了关于通孔焊接的所有知识。

安装Arduino库

如何安装自定义Arduino库?这很容易!本教程将介绍如何使用Arduino库管理器安装Arduino库。对于未与Arduino IDE链接的库,我们还将继续手动安装Arduino库。

GPS屏蔽连接指南

本教程介绍如何开始使用Sparkfun GPS Shield,并使用通用GPS接收器读取和分析N亚博官网MEA数据。

阿杜诺盾牌

一切都是阿杜诺·希尔兹。它们是什么以及如何组装它们。

MicroSD防护罩和SD分接头连接指南

以sd或microsd卡的形式添加外部存储对于任何项目都是很好的补充。亚博官网亚博在线娱乐官网了解如何在这个连接指南为microsd屏蔽和sd分接板。

OBD-II入门

在汽车和工业应用中用于通信的OBD-II协议的一般指南。

硬件概述

在CAN总线屏蔽上需要注意几个功能。

屏蔽标记

带有标记功能的CAN总线屏蔽。

1。D9连接器

这个屏蔽上的主要硬件特性是DB9连接器。这允许您使用DB9至OBD-II电缆.

2。GPS连接器

车载GPS连接器是一个6针,兼容JST SH连接器。该板设计用于与EM-506 GPS接收机,或735 GPS接收器总成.这个GND跳线允许用户修改没有GPS接头的装置的GPS接头。GND接头针脚5上的连接。

三。液晶显示器连接器

屏幕上的LCD足迹与外螺纹3针JST连接器并且可以与我们的任何串行液晶屏接口。连接是为5伏液晶显示器设计的,因此,不要意外地插入3.3V选项!针脚顺序是5伏,GND以及RX/D6,当直视屏蔽时。

4。操纵杆

防护罩上的操纵杆为控制屏幕显示或选择CAN扫描设置提供基本用户界面。连接器提供5个基本用户选项:

  • 向上
  • 向下
  • 对吗?
  • 点击选择

5。微槽

此插槽为用户提供将收集到的数据存储到microSD卡上的选项。收集的数据可以包括操纵杆上的用户输入,收集到的CAN总线信息,液晶显示器输出或常规I/O数据。

6。跳线运动员

CAN总线屏蔽上有六个跳线。

  • 6A。SJ1和SJ2-这两个跳线允许用户在UART和软件串行之间进行选择,以便GPS单元与Arduino通信。

  • 6B。SJ3-这允许用户将GPS接头上的针脚5与GND线。此跳线默认关闭。

  • 6C。SJ4Sj5SJ6-这三个跳线允许用户选择OBD-II和CAN之间的DB9针配置。跳线默认为与Sparkfun匹配的OBD-II配置。亚博官网OBD-II至DB9电缆.

    注:尽管管脚配置标记为OBD-II,这仍然是 特定罐头装置。跳线仅用于将屏蔽配置为与其他OBD-II/CAN总线一起工作。 电缆如有必要。

供参考,以下是显示在DB9连接器上为每个设置选择哪些管脚的配置选项。

DB9针的跳线配置
公交线路 罐销 OBDⅡ引脚 焊锡跳线
CA-H 引脚7 引脚3 SJ4
CAN-L 引脚2 引脚5 SJ6
GND 引脚3 引脚2 SJ5

7。罐销

4条CAN线路断开,允许您直接访问DB9连接器输出的原始CAN数据。这些引脚是:

  • 5V
  • GND
  • CAN H(CAN高)
  • L(可以低)

再一次,这些数据是从CAN总线输出的原始数据。未通过MCP2515或MCP2551 IC过滤。

沟通方法

因为屏蔽上的所有不同硬件功能,使用了两种不同的通信方法。

  • SPI-MCP2515 IC和microSD插槽都通过SPI线路与Arduino通信。罐头罐芯片选择线路位于D10.SD芯片选择线路连接到D9.

  • 模拟输入-操纵杆连接至Arduino上的销A1-A5。操纵杆的每个方向都有自己的模拟输入。

  • 软件串行/UART-LCD和GPS都通过串行线路与Arduino通信。液晶显示器RX线路连接到D6.GPS通过软件串行连接到D4D5,或者到上的UART端口D0D1.

硬件连接

焊接接头

为了把你的CAN总线屏蔽连接起来,焊锡上Arduino可堆叠邮件头.

已插入邮件头

您可以使用红板将头部固定到位,同时将其焊接到护罩上。

一旦焊接好,考虑一下你想如何连接液晶屏。您可以使用0.1英寸的公头或母头间距,或者JST连接器。此时也将您的接口选择焊接到屏蔽上。

液晶显示器

确保将连接器焊接到屏蔽顶部,这样,您可以在将屏蔽插入红板时访问它。

连接大脑!!

在我们的例子中,大脑将是红板。把你的盾牌插入红板。慢慢来,不要弯曲收割台销。

连接附加设备

我们建议插入GPS单元,液晶屏,还有microSD卡。如果您不打算使用这些功能,你可以跳过这一步。

如果您计划将CAN总线/红板组合放入一个机箱中,您可以考虑使用延长电缆用于GPS装置。外壳可以阻挡卫星的视线,导致GPS功能不稳定,因此,将GPS设备放置在任何外壳之外都可以缓解这些问题。

注:如果你不使用EM-506,验证GPS单元的插脚,并确保接地跨接器的配置适合您的单元。

我们还建议您此时连接液晶屏。连接液晶屏的方法将取决于您先前焊接到屏蔽上的连接器。直视盾牌,连接为5伏,GND和TX,如果您不使用JST连接器。

确保使用格式化的microSD卡。一旦所有附加设备连接好,您的电路应如下所示:

GPS插入

连接到启用了CAN的设备

这可以是模拟器或车辆。将DB9连接器插入屏蔽,并将DLC连接器插入您计划通话的设备。如果你的盾牌+Arduino现在打开,没关系。车辆/模拟器可以通过电缆为电路板供电。

最终电路

插入所有内容后,您的电路应如下所示:

接模拟器

在这种情况下,我们展示了连接到CAN模拟器的电路。然而,您可以将电路连接到启用了CAN的车辆中的DLC。

接汽车

这里我们看到电路连接到Pete Dokter大众。

Arduino库安装

注:此示例假定您正在桌面上使用最新版本的Arduino IDE。如果这是你第一次使用Arduino,请回顾我们的教程安装Arduino IDE。如果您以前没有安装过Arduino库,请查看我们的安装指南。

有一个非常好的库可以使用CAN总线屏蔽。您需要下载并将其安装到Arduino IDE中。您可以在Arduino库管理器中搜索它,也可以从Github存储库从下面的按钮下载库。

下载CAN总线屏蔽库(zip)

示例代码

图书馆里有几个不同的草图,每个都有不同的功能。

  1. 亚博官网sparkfun\u can\u演示-此草图允许您自行测试板的CAN功能。

  2. 亚博官网sparkfun_ecu_演示-此草图将屏蔽上的所有硬件一起运行,日志可以将数据和GPS数据传输到SD卡,在串行LCD上输出数据时。您需要安装TinyGPS图书馆以及SD库为了这个工作。

  3. 亚博官网Sparkfun_GPS_演示-此草图使用GPS模块贯穿。您需要安装TinyGPS图书馆为了这个工作。

  4. 亚博官网Sparkfun游戏杆演示-此快速草图允许您测试车载操纵杆的功能。

  5. 亚博官网Sparkfun演示-此草图允许您验证和测试板上microSD插座的功能。您需要安装SD库为了这个工作。

  6. 亚博官网sparkfun_seriallcd_演示-快速示意图,以确保串行LCD屏幕正常工作。

  7. ChanaRead演示-一个非常简单的草图,用于读取来自CAN总线的所有数据。

  8. 卡诺写演示-写入CAN总线的基本演示。

例如,我们要穿过ECU演示草图,但请随意使用或修改其他草图。如果您决定不插入microSD卡,GPS单元和LCD屏幕,你应该运行卡诺演示.

ECU演示

这个示意图展示了防护罩每个部分的基本功能。一旦安装了库,打开Arduino并将此代码上载到红板。

查看代码中的注释,了解每个部分的详细操作,但素描的一般流程如下:

  1. Arduino初始化管脚,变量,以及GPS的波特率,液晶显示器,美元卡,还有CAN总线。
  2. 在设置循环中,每个设备都启动了,并验证了所有事物都是按其应该的方式连接的。CAN总线和美元卡都将在LCD屏幕上打印成功或失败消息。
  3. 屏蔽将等待用户单击操纵杆开始从GPS模块和CAN总线收集数据。
  4. 一旦用户单击开始记录,CAN总线将轮询发动机转速,写下纬度,经度,和GPS速度。LCD屏幕上将显示设备正在记录的消息,实际发动机转速将打印到串行监视器上。收集的数据写入美元卡。
  5. 每个循环,代码检查用户是否单击了操纵杆。如果是这样,装置停止记录。
/***********************************************************************ECU CAN总线读写器和记录器toni klopfenstein@sparkfun electronics 2015年9月http亚博官网s://github.com/sparkfun/can-bus_Shield此示例草图与sparkfun electronics的CAN总线屏蔽一起工作。它可以读取MCP2515 CAN控制器和MCP2551 CAN总线驱动器。该草图还可以记录GPS数据,并输出到串行启用的LCD屏幕。所有数据都记录在美元卡上。资源:为草图功能安装的附加库。-威廉·格雷曼的SD图书馆。https://github.com/greiman/sdfat开发环境细节:基于原始示例ecu-reader-logger为Arduino 1.65开发,作者:sukkin-pang sk-pang-electronics www.sk pang.co.uk,此代码为Beerware;如果你在当地看到我(或其他Sparkfun员工),亚博官网你发现我们的代码很有用,请给我们买一轮!对于官方许可证,请查看库中包含的许可证文件。按原样分发;不提供保修。***********************************************************************////包括编译所需的库include
           
            包括:
            
             包括:
             
              包括:
              
               包括:
               
                //初始化usd pins const int chipselect=9;//初始化LCD针软件串行LCD(3,6);//初始化GPS针软件串行UARTU GPS(4,5);//定义操纵杆连接管脚定义上A1定义下A3定义左A2定义右A5定义单击A4//定义LED管脚定义LED2 8定义LED3 7//定义波特率。GPS应比SERIAL慢,以确保通过define gps rate 4800 define lcd覕rate 115200//创建Tinygps Tinygps GPS实例的有效语句;//为tinygps库函数void getgps(tinygps&gps)声明原型;//声明GPS变量浮动纬度;浮点数经度;年份;字节月份;字节日;字节小时;字节分钟;字节秒;字节百分之一;浮动GPS速度;//声明sd文件数据文件;//为通信char*engineerpm声明can变量;字符缓冲区[64];//在写入文件之前,数据将临时存储到此缓冲区中//定义LCD位置定义命令0xFE定义清除0x01定义行1 0x80定义行2 0xC0//*******************************设置循环**************************************************//void setup()//初始化串行通信调试操作//serial.begin(9600);//serial.println(“ECU演示;//开始LCD串行通信LCD.BEGIN(9600);//开始GPS通信uart_gps.begin(gpsrate);//根据需要初始化pin模式(chipselect,输出;点击模式,输入);PNMODE(LeD2,输出;PNMODE(CED3)输出;//将模拟销拉高,以启用操纵杆运动的读数DigitalWrite(点击,高);//将LED管脚写低,以在默认情况下关闭DigitalWrite(LED2,低);数字写入(LED3,低);//如果(canbus.init(can speed_500))/*以指定的速度初始化mcp2515 can控制器*/clear_lcd();打印可以吗?;//serial.println(“可以吗?;延迟(1500);其他LCD.打印(“不能初始化;//serial.println(“不能初始化;返回;//检查美元卡是否初始化if(!sd.begin(chipselect))//serial.println(“美元卡初始化失败,或不存在”;CeleLyLCD();打印美元失败了。;返回;else//序列号.println(“美元卡已初始化。“;CeleLyLCD();打印美元成功!“;延迟(1500);//打印菜单到LCD屏幕清除_lcd();打印点击开始;写(命令);LCD.WRITE(第2行);打印测井数据“,”;while(digitalread(click)==high)//等待用户点击操纵杆开始记录延迟(1000);//**********************************************主循环**************************************//void loop()while(digitalread(click)=high)digitalwrite(led3,高);//打开LED指示CAN总线通信CANBUS.ECU请求(发动机转速,缓冲器);//请求引擎转速engineerpm=缓冲区;//serial.print(“发动机转速:;//取消对串行调试的注释//serial.println(buffer);延迟(100);数字写入(LED3,低);//关闭LED3延时(500);文件datafile=sd.open(“TXT数据,文件写入;//打开美元文件记录数据//如果无法打开数据文件,投掷错误。如果(!)数据文件)清除_LCD();打印打开错误;写(命令);LCD.WRITE(第2行);打印TXT数据;(1);清除_LCD();打印记录“点击”;写(命令);LCD.WRITE(第2行);打印停止记录”;if(uart_gps.available())//当RX引脚上有数据时…数字写入(LED2,高);//在D8上接收到GPS数据的信号。//将纬度/经度打印到SD卡数据文件。打印(“拉特/朗:;datafile.print(纬度,5);数据文件.print(“,“;datafile.println(经度,5);//将数据和时间打印到SD卡数据文件。打印(“日期:;datafile.print(月,DEC);数据文件.print(“/;数据文件.print(day,DEC);数据文件.print(“/;数据文件打印(年);数据文件.print(“时间:;数据文件.print(小时,DEC);数据文件.print(“:;数据文件.print(分钟,DEC);数据文件.print(“:;datafile.print(第二个,DEC);数据文件.print(“.";数据文件.println(百分之一,DEC);//将GPS速度打印到SD卡数据文件。打印(“GPS速度(kmph):”;datafile.println(GPS速度);数字写入(LED2,低);//关闭D8 LED。数据文件.print(“发动机转速:;数据文件.println(engineerpm);datafile.println();datafile.flush();datafile.close();//关闭数据记录文件clear_lcd();打印日志记录已停止。“;(1);//如果单击操纵杆,则停止日志记录//******************************************LCD函数*******************************************//void clear_LCD(void)LCD.write(command);LCD.写入(清除);//******************************************GPS功能**************************************//void get gps(tinygps&gps)//接收GPS纬度/经度gps.f_get_position(&latitude,经度;//调用函数从gps gps.crack_date time(&year,月白天小时分钟,第二,百分之一百);//同时收集gps_speed gps_speed=gps.f_speed_kmph();}
               
              
             
            
           

如果您已经为串行调试取消了对行的注释,你应该看到这样的东西:

发动机转速

连接到模拟器的CAN总线屏蔽的发动机转速读数。

一旦你收集了一些读数,您可以拔出美元卡,查看记录的数据。您的美元卡上应该有一个文件,名为“TXT数据,它应该包括以下信息:

记录数据

注意:如果您只记录GPS的空白读数,如上所示,确保您的GPS设备位于卫星视野良好的区域。

一旦您验证数据存储到美元卡,你走得好!您已成功与车辆的CAN总线连接,现在可以开始挖掘诊断代码并围绕发动机数据构建项目。亚博官网

资源和进一步发展

一旦您获得了CAN总线屏蔽工作的基本功能,你可以开始侵入你的车,并将你自己的电子设备连接到你的车上。尝试在您的车辆上检查CAN总线上的不同PID,或者查看是否可以将CAN总线连接到控制LED,发言者,还有更多!!

更多信息,查看以下资源:

或者根据皮特对CAN总线和OBD-II的解释查看以下视频:

下一个项目需要一些灵感吗?亚博官网查看以下一些相关教程:

OBD II UART连接指南

如何开始使用OBD-II UART板。

OBD-II入门

在汽车和工业应用中用于通信的OBD-II协议的一般指南。

AST-CAN485连接指南

ASTCAN485是普罗米尼紧凑外形的微型阿杜诺。除了所有常见的功能外,它还具有板载CAN和RS485端口,能够快速方便地与多种工业设备连接。

如果你有任何反馈,请访问评论或联系我们的技术支持团队亚博国际官网tech亚博国际官网su亚博官网pport@sparkfun.com网站.