0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样制作Arduino OBD2扫描仪

454398 来源:网络整理 作者:网络整理 2019-11-14 17:43 次阅读

步骤1:准备ELM327板以绕过USB桥接芯片

ELM327电缆外壳上的标签,用细小的星形螺钉拧下4个螺钉

然后拿出木板。

提示: 借用Girlfrien/妻子的表情,并在连接到OBD2连接器的连接器的一侧做一个标记,以这种方式将其取出时会知道它会走到哪一边,因为它可以双向移动,因此在此可指示的情况下,无需移除上述连接器。

将2线连接到板上的TX和RX引脚,在随附的照片中,我包括了USB Bridge芯片的引脚排列信息。请小心,尽管我设法取消焊接了一些我无法放回的组件,但幸运的是,此后它仍然可以工作。

提示:对arduino进行编程,以便对其进行编程写入串行监视器时,它们之间有一些短的延迟,然后将跳线电缆连接到arduino的TX引脚上,并与电路板的另一端相碰,以查看在哪里可以进行一些串行活动,表面安装的LED闪烁为发生通信,不幸的是,这在RX端不起作用,但是在图片中很容易看到我将其焊接到板上的位置。

注意: USB电缆通过4针连接器连接到板上,我将中间的2条切掉,以便ELM327在连接时无法与PC通信,这样,它仅从PC的USB端口和板上的串行控制器获取电源将不会被允许Arduino与之交谈的PC占用

一旦将其放回盒子中,我就将其录音因为在我的吉普车中,箱子挡住了我的路,无法在驾驶员座位上驾驶它,所以我将把外壳用于其他用途。

步骤2:将Arduino LCD Shield连接到Arduino

将Arduino LCD Shield连接到arduino,然后将其连接到要编程的PC。

下面是我的Arduino Sketch,我注意到格式混乱有了一些代码,我可以获得一些与此版本有关的信息,您也可以在此处查看代码。

http://techtinker.co.za/viewtopic.php?f=14&t=17

// include the library code:

#include

//Declare Serial Read variables

int CmdCount=1;

byte inData;

char inChar;

String BuildINString=“”;

String DisplayString=“”;

long DisplayValue;

String SentMessage=“”;

int ByteCount=0;

long A;

int B;

int WorkingVal;

String WorkingString=“”; //Declare Buttons

int MenuID=0; // initialize the library with the numbers of the interface pins

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup()

{

// set up the LCD‘s number of columns and rows:

lcd.begin(16, 2);

// Print a message to the LCD.

lcd.setCursor(0, 0);

Bootup();//Simulate Bootup process doesnt have to be here this only makes it look cool

Retry:

lcd.setCursor(0, 0);

lcd.print(“Connecting.。..。. ”);

lcd.setCursor(0, 1);

lcd.print(“ ”);

Serial.begin(38400);

delay(500);

//Send a test message to see if the ELM327 Chip is responding

SentMessage = “ATI”;

Serial.println(“ATI”);delay(500);ReadData();

if (BuildINString.substring(1,7)==“ELM327”)

{

lcd.setCursor(0, 0);

lcd.print(“Welcome.。. ”);

lcd.setCursor(0, 1);

lcd.print(“Connection OK ”);

delay(1500);

}

else

{

lcd.setCursor(0, 0);

lcd.print(“Error ”);

lcd.setCursor(0, 1);

lcd.print(“No Connection! ”);

delay(1500);

goto Retry;

}

delay(1500);

} void loop() {

int x;

x = analogRead (0);

//Serial.println(x);

lcd.setCursor(10,1);

if (x 》 800 and x 《 820){lcd.print (“Select ”);}

if (x 》 620 and x 《 630){if (MenuID》0){MenuID--;}delay(250);}//Left

if (x 》 400 and x 《 415){lcd.print (“Down ”);}

if (x 》 190 and x 《 215){lcd.print (“Up ”);}

if (x 》 -10 and x 《 10){if (MenuID《11){MenuID++;}delay(250);} //Right if (MenuID==0){lcd.setCursor(0, 0);lcd.print(“01 Coolant Temp ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 05”;Serial.println(“01 05”);delay(300);ReadData();}

if (MenuID==1){lcd.setCursor(0, 0);lcd.print(“02 IAT Temp ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 0F”;Serial.println(“01 0F”);delay(300);ReadData();}

if (MenuID==2){lcd.setCursor(0, 0);lcd.print(“03 Ambient Temp ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 46”;Serial.println(“01 46”);delay(300);ReadData();}

if (MenuID==3){lcd.setCursor(0, 0);lcd.print(“04 Throttle % ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 11”;Serial.println(“01 11”);delay(300);ReadData();}

if (MenuID==4){lcd.setCursor(0, 0);lcd.print(“05 CAT 1 Temp ”);lcd.setCursor(0, 1);lcd.print(“Not Implemented ”);}

if (MenuID==5){lcd.setCursor(0, 0);lcd.print(“06 CAT 2 Temp ”);lcd.setCursor(0, 1);lcd.print(“Not Implemented ”);}

if (MenuID==6){lcd.setCursor(0, 0);lcd.print(“07 CAT 3 Temp ”);lcd.setCursor(0, 1);lcd.print(“Not Implemented ”);}

if (MenuID==7){lcd.setCursor(0, 0);lcd.print(“08 CAT 4 Temp ”);lcd.setCursor(0, 1);lcd.print(“Not Implemented ”);}

if (MenuID==8){lcd.setCursor(0, 0);lcd.print(“09 RPM ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 0C”;Serial.println(“01 0C”);delay(300);ReadData();}

if (MenuID==9){lcd.setCursor(0, 0);lcd.print(“10 Vehicle Speed ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 0D”;Serial.println(“01 0D”);delay(300);ReadData();}

if (MenuID==10){lcd.setCursor(0, 0);lcd.print(“11 Air Flow Rate ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 10”;Serial.println(“01 10”);delay(300);ReadData();}

if (MenuID==11){lcd.setCursor(0, 0);lcd.print(“12 Barometric ”);lcd.setCursor(0, 1);lcd.print(DisplayString);SentMessage = “01 33”;Serial.println(“01 33”);delay(300);ReadData();}

步骤3:挂钩直到您的车辆

对Arduino进行编程后,请确保将Arduino的TX/RX引脚连接到ELM327板上的TX/RX引脚。

该代码通过发送命令“ ATI”来确保其能够与ELM327芯片通信,如果i t并非液晶显示屏上将显示“错误,无连接”,如果它可以正常工作的话,它将在液晶显示屏上显示欢迎消息。

从那里,您只需按左右按钮即可在

冷却液温度,IAT温度,环境温度,油门%,RPM,车辆速度,空气流速,大气压力

您可以添加如果愿意,可以根据需要将更多菜单更改为

有关更多PID的信息,请参见Wikihttp://en.wikipedia.org/wiki/OBD-II_PIDs。

您可以使用再次插入窗口的手机支架来固定它,并使用USB手机充电器为Arduino供电,ELM327将通过引脚16上的OBD端口供电,引脚16为正,引脚4/5为负。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 扫描仪
    +关注

    关注

    2

    文章

    415

    浏览量

    67819
  • Arduino
    +关注

    关注

    187

    文章

    6464

    浏览量

    186665
收藏 人收藏

    评论

    相关推荐

    大幅扫描仪扫描地图怎么操作

    1. 准备扫描仪和地图 在开始扫描之前,确保您的大幅扫描仪已经安装并正确配置。您可能需要安装特定的驱动程序或软件,以便扫描仪能够与您的计算机通信。 检查
    的头像 发表于 10-14 15:47 429次阅读

    蔡司激光三维扫描仪有效扫描金属材料

    蔡司激光三维扫描仪因其高精度和多功能性,在工业检测、逆向工程、质量控制等领域得到了广泛应用。对于金属材料的扫描,用户常常关心的是ZEISS激光三维扫描仪是否能够有效地完成这项任务。本文蔡司代理-三本
    的头像 发表于 09-26 15:08 409次阅读
    蔡司激光三维<b class='flag-5'>扫描仪</b>有效<b class='flag-5'>扫描</b>金属材料

    何为电磁干扰(EMI)扫描仪,哪里需要它?

    什么是电磁干扰扫描仪?电磁干扰扫描仪(Electromagneticinterferencescanner)又称EMI扫描仪,是属于电磁兼容(EMC)测所试设备,具备干扰频谱分析、定频干扰成像功能
    的头像 发表于 08-30 13:02 342次阅读
    何为电磁干扰(EMI)<b class='flag-5'>扫描仪</b>,哪里需要它?

    如何选择电磁干扰(EMI)扫描仪,看看这几点

    在上期讲完了电磁干扰(EMI)扫描仪的定义和应用以后,我们应该如何去选择一款合适的电磁干扰(EMI)扫描仪?在当今复杂的电子设备环境中,选择合适的电磁干扰(EMI)扫描仪对于确保产品质量、符合标准
    的头像 发表于 08-30 13:02 430次阅读
    如何选择电磁干扰(EMI)<b class='flag-5'>扫描仪</b>,看看这几点

    lidar激光雷达扫描仪有什么用

    LiDAR(Light Detection and Ranging,激光探测与测距)是一种利用激光技术进行距离测量和成像的技术。LiDAR激光雷达扫描仪具有高精度、高分辨率、快速扫描等特点,广泛应用
    的头像 发表于 08-29 16:58 626次阅读

    [can开发板] 一款低价can/obd2总线Linux开发板

    CAN总线/汽车CAN总线/OBD2通讯/OBD分析/USB转CAN/DBC编解码/带远程访问功能的CAN/OBD开发板 实物图 特点 === CPU:全志H3芯片 - ARM
    发表于 07-05 16:46

    工业级gom三维扫描仪的工作原理

    工业级gom三维扫描仪(如ATOS系列)的检测原理主要基于结构光扫描技术(StructuredLightScanning)和光学三角测量原理。以下是其基本的检测原理:1.结构光投射:扫描仪首先通过
    的头像 发表于 05-14 16:45 813次阅读
    工业级gom三维<b class='flag-5'>扫描仪</b>的工作原理

    泰来三维|如何轻松玩转三维扫描仪中手持快速扫描模式

    如何轻松玩转三维扫描仪中手持快速扫描模式,EinScan Pro 2X 2020系列EinScan Pro 2X plus三维扫描仪包含普通
    的头像 发表于 01-11 15:44 445次阅读
    泰来三维|如何轻松玩转三维<b class='flag-5'>扫描仪</b>中手持快速<b class='flag-5'>扫描</b>模式

    faro orbis 移动扫描仪一体化混合扫描

    扫描仪
    泰来三维
    发布于 :2023年12月19日 15:44:33

    泰来三维| FARO Orbis是如何与 Focus Premium 激光扫描仪一起协同工作

    Faro Orbis扫描仪能够同时提供移动扫描和固定式扫描。Orbis 扫描仪允许操作人员在行走和静止扫描之间进行无缝切换,同时连续获取36
    的头像 发表于 12-19 15:41 426次阅读

    蔡司激光手持三维扫描仪蓝光3D扫描仪问题探讨

    扫描仪厂家三本精密仪器,一起来探讨蔡司激光手持三维扫描仪蓝光3D扫描仪问题1:光学扫描受外部光源的影响有多大?解答:对外部光源需要稳定不在太阳光下即可,所以基本上所有车间都是满足需求
    的头像 发表于 12-14 15:44 1043次阅读
    蔡司激光手持三维<b class='flag-5'>扫描仪</b>蓝光3D<b class='flag-5'>扫描仪</b>问题探讨

    蓝光三维扫描仪和激光扫描仪问题解答

    关于蓝光三维扫描仪和激光扫描仪问题解答,扫描仪厂家三本精密仪器讲解如下:问题1:蓝光和激光的扫描,效果哪个更好,两者有什么优缺点?解答:蓝光设备属于固定拍照式,精度较高,针对中小零件,
    的头像 发表于 12-14 15:08 943次阅读
    蓝光三维<b class='flag-5'>扫描仪</b>和激光<b class='flag-5'>扫描仪</b>问题解答

    多功能安全扫描仪工具介绍

    Trivy(发音)是一款全面且多功能的安全扫描仪。Trivy 拥有用于查找安全问题的扫描仪,以及可以找到这些问题的目标。 目标(Trivy 可以扫描的内容):
    的头像 发表于 12-13 10:20 738次阅读
    多功能安全<b class='flag-5'>扫描仪</b>工具介绍

    无缝切换,集移动和固定于一体的混合扫描仪-FARO Orbis 移动扫描仪

    rbis 有力地体现创新和扩大服务市场,兼有 FARO 技术和 GeoSlam 和 HoloBuilder所带来的功能。具有移动扫描仪不具备的功能和基于三脚架的激光扫描仪的精度,为 3D 现实捕获
    的头像 发表于 12-06 10:47 558次阅读
    无缝切换,集移动和固定于一体的混合<b class='flag-5'>扫描仪</b>-FARO Orbis 移动<b class='flag-5'>扫描仪</b>