Home > Technologie > Arduino OBD2 Simulator

Arduino OBD2 Simulator

0
Advertisement

Arduino OBD2 Simulator

Ive errichtete einen Arduino OBD2 Scanner, Schnittstelle mit meinem Jeep OBD2 Hafen, aber es wurde ein beeeeeg! schlep Code zu meinem Arduino Nano + 16x2 LCD + ELM327 Scanner-Gerät zu laden, dann den ganzen Prototyp im Gurage zum Jeep schleppen die ganze Zeit und dann auch nur dort zu finden war etwas klein, dass ich ändern vergessen zu.

Ich musste einen Weg finden, um meinen Prototypen im Komfort von zu Hause zu testen.

Ive suchte hoch und niedrig und konnte keine Arduino OBD2 Simulatoren finden, dass ich mein Selbst bauen kann. Ich kam in ein oder zwei Websites , die Verwendung von Arduino ist sie ein OBD2 Simulator zu bauen , aber sie nicht geben Sie den Code , den Sie das fertige Produkt von ihnen, dh die zu kaufen FreeMatics für so etwas wie eine satte $ 169, Wheres die Liebe zu öffnen Quelle darin, dass ???? Pffft Ich sehe nicht $ 169 Ich sehe etwa 8 Arduinos kann ich mit ihm zu kaufen.

So unfortunatly und fortunatly für Sie :-) Ich hatte, um herauszufinden, wie ich ein mir selbst zu bauen werde, die mich gezwungen, nun an einem Projekt, konzentriere ich mich auf nehmen musste, um mein erstes Projekt abgeschlossen ist, hat mich einige Zeit, um herauszufinden, wie PIDs im Standard-OBD2-Format zu senden. Aber am Ende konnte ich ein FreeObd Scanner Programm, das Sie normalerweise mit Ihrem ELM327 Scanner.

Stuff Sie brauchen.

Arduino UNO

CAN-BUS Schirm

ELM327 (USB, Bluetooth, Wifi) Es spielt keine Rolle, welches Aroma Sie haben. Solange es einen COM-Port erstellt

OBD2-Diagnose-Software (nur zu testen, wenn es funktioniert) jede OBD2-Software sollte funktionieren, sollte die Software, die Sie mit dem ELM327-Scanner sollte gut tun.

Schritt 1: Schritt 1: Der Code

Leider für diese Arbeit müssen Sie einen Schild von SeeedStudio Called the CAN-BUS-Schild. Sie erhalten auch eine von Skpang, aber der unten stehende Code wird nicht für Skpang funktionieren, wenn Sie es nicht leicht ändern.

Wenn Sie nicht bereits wissen, müssen Sie auch die SeeedStudion CAN-BUS-Bibliothek geladenen int er Arduino IDE.

Laden Sie den unten stehenden Code, wenn Sie nicht über die CAN-BUS Shield-Bibliothek geladen die unten wird höchstwahrscheinlich Fehler aus.

  // Das Arduino UNO Sketch erfordert die Seeed CAN-BUS-Schild Bibliotheken // https: //github.com/yexiaobo-seeedstudio/CAN_BUS_Shield # include # include "mcp_can.h"
  INT32U canId = 0x000;
  // 2024 4 65 12 18 248 185 147
  Unsigned char len = 0;  Unsigned char buf [8];  Char str [20];
  String BuildMessage = "";  Int MSGIdentifier = 0;
  Void setup () {Serial.begin (38400);
  START_INIT:
      If (CAN_OK == CAN.begin (CAN_500KBPS)) {Serial.println ( "CAN BUS Shield init ok!");  } Else {Serial.println ( "CAN BUS Shield init fail");  Serial.println ( "Init CAN BUS Shield wieder");  Verzögerung (100);  Goto START_INIT;  aufrechtzuerhalten.
  Void Schleife () {char rndCoolantTemp = random (1.200);  Char rndRPM = zufällig (1,55);  Char rndSpeed ​​= zufällig (0,255);  Char rndIAT = zufällig (0,255);  Char rndMAF = zufällig (0,255);  Char rndAmbientAirTemp = random (0,200);  Char rndCAT1Temp = zufällig (1,55);  // GENERAL ROUTINE unsigned char SupportedPID [8] = {1,2,3,4,5,6,7,8};  Unsigned char MilCleared [7] = {4, 65, 63, 34, 224, 185, 147};  // SENSORS unsigned char CoolantTemp [7] = {4, 65, 5, rndCoolantTemp, 0, 185, 147};  Unsigned char rpm [7] = {4, 65, 12, rndRPM, 224, 185, 147};  Unsigned char vspeed [7] = {4, 65, 13, rndSpeed, 224, 185, 147};  Unsigned char IATSensor [7] = {4, 65, 15, rndIAT, 0, 185, 147};  Unsigned char MAFSensor [7] = {4, 65, 16, rndMAF, 0, 185, 147};  Unsigned char AmbientAirTemp [7] = {4, 65, 70, rndAmbientAirTemp, 0, 185, 147};  Unsigned char CAT1Temp [7] = {4, 65, 60, rndCAT1Temp, 224, 185, 147};  Unsigned char CAT2Temp [7] = {4, 65, 61, rndCAT1Temp, 224, 185, 147};  Unsigned char CAT3Temp [7] = {4, 65, 62, rndCAT1Temp, 224, 185, 147};  Unsigned char CAT4Temp [7] = {4, 65, 63, rndCAT1Temp, 224, 185, 147};  If (CAN_MSGAVAIL == CAN.checkReceive ()) {CAN.readMsgBuf (& len, buf);  CanId = CAN.getCanId ();  Serial.print ( "<"); Serial.print (canId); Serial.print ( ",");
          Für (int i = 0;
          BuildMessage = "";
      aufrechtzuerhalten.

Schritt 2: Schritt 2: Vorbereiten des ELM327 Scanner-Kabels, um Ihren neuen OBDII-Simulator zu testen.

Arduino OBD2 Simulator

Arduino OBD2 Simulator

Arduino OBD2 Simulator

Arduino OBD2 Simulator

Du kannst es tun, was immer du willst. Da das ELM327 Scanner-Kabel ziemlich billig ist, habe ich es nach meinem Geschmack geändert.

Ich entfernte den ursprünglichen Aufkleber, um zu den 4 Schrauben zu gelangen, um die Kiste zu öffnen, nahm ich ein männliches zum weiblichen Verlängerung USB-Kabel und schnitt es in Hälfte.

und verlötet die ein Stück vom Ende des USB-Kabels an Pin 6-CAN High und Pin 14-CAN Low, ein kleines Loch an der Seite gemacht, schloss sie auf und steckte einen Aufkleber an der Seite, mich zu erinnern, was was ist. Sehen Sie sich die Fotos an

Ich beendet dann die andere Hälfte des USB-Verlängerungskabel an den SeeedStudio Can-BUS Schild, Offensichtlich CAN-H von ELM327 auf CAN-H auf dem Schild und auch mit den CAN-L Drähte.

Schritt 3: Schritt 3: Die Prüfung.

Arduino OBD2 Simulator

Ich habe dann das Arduino mit Strom versorgt, die Arduino + CANBUS Schild jetzt stehen allein und braucht nicht einen PC, aber ich gerade verlassen es angeschlossen Strom aus dem USB-Anschluss zu bekommen.

Dann ConnectR die ELM327 auf USB, im Gerätemanager stellen Sie sicher, die Comport der ELM327 überprüfen gehört, weil Sie jetzt zwei COM-Ports den COM-Port und die ELM327 des Arduino haben.

Starten Sie ein OBD-Diagnose-Fenster-Programm IE ScanTool.net dann lassen Sie es die RPM zu überwachen.

Die OBD-Simulator nicht ist glatt, weil seine programmierten nach dem Zufallsprinzip "Gültig" Daten der RPM-IE erzeugen wil aus zufällig springen sagen 5RPM zu 800rpm zu 20 Umdrehungen pro Minute zu 1800rpm ect ect, Ive machte sich Notizen in der Arduino-Code, dessen leicht lesbar und tut alle PID-Daten unterstützen Aber Sie können sicherlich hinzufügen. Mit Blick auf einige der Standard-PIDs aus Wiki und nach "My" -Methode

http://en.wikipedia.org/wiki/OBD-II_PIDs

Sie können auch, wenn Sie wollen, bauen sie in ein Feld dann fügen Sie ein paar Tasten, um die Variablen zugewiesen, um die zufällige Generator-Funktion, ich brauchte keine glatten Werte, nur so lange, wie ich bin in der Lage, meine Arduino ScanTool Prototype-Test.

Related Reading