Hack ein ELM327 Kabel zu einem Arduino OBD2 Scanner (2 / 3 schritt)


Schritt 2: Zuordnen der Arduino Arduino LCD-Schirm

Der Arduino beimessen Sie Arduino LCD Schirm, und schließen Sie ihn an Ihren PC programmiert werden.

Unten ist mein Arduino-Sketch, bemerkte ich, dass die Formatierung mit dem Code ein wenig verwirrt, habe ich einige weitere Informationen finden Sie im Zusammenhang mit diesem Build können Sie auch hier den Code anzeigen.

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

 // include the library code:<br>#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();} 
 } 
Daten lesen und handeln entsprechend void ReadData() {BuildINString = ""; while(Serial.available() > 0) {InData = 0; InChar = 0; InData = Serial.read(); inChar=char(inData); BuildINString = BuildINString + InChar; //Read Data and act accordingly void ReadData() { BuildINString=""; while(Serial.available() > 0) { inData=0; inChar=0; inData = Serial.read(); inChar=char(inData); BuildINString = BuildINString + inChar; } //if(BuildINString!=""){Serial.print(BuildINString);} BuildINString.replace(SentMessage,""); BuildINString.replace(">",""); BuildINString.replace("OK",""); BuildINString.replace("STOPPED",""); BuildINString.replace("SEARCHING",""); BuildINString.replace("NO DATA",""); BuildINString.replace("?",""); BuildINString.replace(",",""); //Serial.print(BuildINString); //Check which OBD Command was sent and calculate VALUE //Calculate RPM I.E Returned bytes wil be 41 0C 1B E0 if (SentMessage=="01 0C") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); WorkingString = BuildINString.substring(11,13); B = strtol(WorkingString.c_str(),NULL,0); DisplayValue = ((A * 256)+B)/4; DisplayString = String(DisplayValue) + " rpm "; lcd.setCursor(0, 1); lcd.print(DisplayString); } //Calculate Vehicle speed I.E Returned bytes wil be 41 0C 1B E0 if (SentMessage=="01 0D") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); If(BuildINString!=""){Serial.Print(BuildINString);} BuildINString.replace(SentMessage,""); BuildINString.replace (">",""); BuildINString.replace("OK",""); BuildINString.replace("STOPPED",""); BuildINString.replace("SEARCHING",""); BuildINString.replace ("keine Daten",""); BuildINString.replace("?",""); BuildINString.replace(",",""); Serial.Print(BuildINString); Überprüfen Sie die OBD-Befehl gesendet wurde, und Wert berechnen //Calculate u/min dh zurückgegeben Bytes Wil werden 41 0C 1 b E0 wenn (SentMessage == "01 0C") {WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); WorkingString = BuildINString.substring(11,13); B = strtol(WorkingString.c_str(),NULL,0); DisplayValue = ((A * 256) + B) / 4; DisplayString = String(DisplayValue) + "Rpm"; lcd.setCursor (0, 1); LCD.Print(DisplayString); DisplayValue = A; DisplayString = String(DisplayValue) + " km/h "; lcd.setCursor(0, 1); lcd.print(DisplayString); } //Coolant Temp if (SentMessage=="01 05") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); 
DisplayValue = A; DisplayString = String(DisplayValue) + "km/h"; lcd.setCursor (0, 1); LCD.Print(DisplayString); DisplayValue = A; DisplayString = String(DisplayValue) + " C "; lcd.setCursor(0, 1); lcd.print(DisplayString); } //IAT Temp if (SentMessage=="01 0F") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); 
DisplayValue = A; DisplayString = String(DisplayValue) + "C"; lcd.setCursor (0, 1); LCD.Print(DisplayString); DisplayValue = A; DisplayString = String(DisplayValue) + " C "; lcd.setCursor(0, 1); lcd.print(DisplayString); } //Air flow Rate if (SentMessage=="01 10") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); WorkingString = BuildINString.substring(11,13); B = strtol(WorkingString.c_str(),NULL,0); DisplayValue = ((A * 256)+B)/100; DisplayString = String(DisplayValue) + " g/s "; lcd.setCursor(0, 1); lcd.print(DisplayString); } //Ambient Temp if (SentMessage=="01 46") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); 
DisplayValue = A; DisplayString = String(DisplayValue) + "C"; lcd.setCursor (0, 1); LCD.Print(DisplayString); DisplayValue = A; DisplayString = String(DisplayValue) + " C "; lcd.setCursor(0, 1); lcd.print(DisplayString); } //Throttle position if (SentMessage=="01 11") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); Air Flow Rate, wenn (SentMessage == "01 10") {WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); WorkingString = BuildINString.substring(11,13); B = strtol(WorkingString.c_str(),NULL,0); DisplayValue = ((A * 256) + B) / 100; DisplayString = String(DisplayValue) + "g/s"; lcd.setCursor (0, 1); LCD.Print(DisplayString); DisplayValue = A; DisplayString = String(DisplayValue) + " % "; lcd.setCursor(0, 1); lcd.print(DisplayString); } //Barometric pressure if (SentMessage=="01 33") { WorkingString = BuildINString.substring(7,9); A = strtol(WorkingString.c_str(),NULL,0); 
DisplayValue = A; DisplayString = String(DisplayValue) + "C"; lcd.setCursor (0, 1); LCD.Print(DisplayString); DisplayValue = A; DisplayString = String(DisplayValue) + " kpa "; lcd.setCursor(0, 1); lcd.print(DisplayString); } } 
DisplayValue = A; DisplayString = String(DisplayValue) + "%"; lcd.setCursor (0, 1); LCD.Print(DisplayString); void Bootup() { lcd.print("WisperChip V2.00 "); for (int i=0; i <= 5; i++) { for (int j=1; j <= 4; j++)// -/|\- { if(j==1){lcd.setCursor(0, 1);lcd.print ("-");delay(200);} if(j==2){lcd.setCursor(0, 1);lcd.print ("/");delay(200);} if(j==3){lcd.setCursor(0, 1);lcd.print ("|");delay(200);} if(j==4){lcd.setCursor(0, 1);lcd.print ("\\");delay(200);} } } delay(1000); } 
DisplayValue = A; DisplayString = String(DisplayValue) + "Kpa"; lcd.setCursor (0, 1); LCD.Print(DisplayString);
void Bootup() {lcd.print ("WisperChip V2. 00"); für (Int ich = 0; ich < = 5; i ++) {für (Int j = 1; j < = 4; j++) / / -/ |\-{if(j==1) {lcd.setCursor (0, 1);lcd.print ("-"); delay(200);} if(j==2) {lcd.setCursor (0, 1);lcd.print ("/"); delay(200);} if(j==3) {lcd.setCursor (0, 1);lcd.print ("|"); Delay(200);} If(j==4) {lcd.setCursor (0, 1);lcd.print ("\\");delay(200);}} delay(1000);

In Verbindung stehende Artikel

Eine LED-Lampe mit einem Arduino Dimmen

Eine LED-Lampe mit einem Arduino Dimmen

So habe ich glücklich mit dieser preiswerten 12V LED-Lampen von Cree erhältlich bei Amazon.de. Bei 9 Watt sind sie so hell wie ein 35 Watt Halogen, billig, und relativ gute Farbe. Auch sind sie leicht auseinander zu nehmen und zu hacken!Hier ist eine
Lessons Learned Weile Gebäude ein nutzlos Box mit einem Arduino und ein Instructable

Lessons Learned Weile Gebäude ein nutzlos Box mit einem Arduino und ein Instructable

Also, ich fand ein Instructable auf der Website, die ziemlich gut schien. Sie sehen, nutzen die Kraft des Arduino nutzlos Box laufen wollte. Ich wollte es bauen und Programmieren mit den Instructable ich auf der Website fand. Nicht nur das, aber ich
Wie erstelle ich eine elektronische Sperre mit einem Arduino UNO

Wie erstelle ich eine elektronische Sperre mit einem Arduino UNO

Dies ist ein ziemlich einfaches Projekt. Du musst nicht löten. Außer den Arduino UNO alle Materialien sind leicht zu finden und sind nicht so teuer. Dieses Projekt, es ist eine tolle Möglichkeit, Ihre Schlafzimmertür zu binden und ist vollständig anp
Programmieren, eine einfache Melodie auf einem Arduino Uno

Programmieren, eine einfache Melodie auf einem Arduino Uno

Diese instructable zeigen Ihnen eine super-einfache Möglichkeit der Programmierung Ihrer Arduino Uno spielen eine einfache Midi-Melodie (in diesem Fall "You Are My Sunshine"). Ich habe ein paar Dinge in meinem Arduino-Starter-Kit, ein Chromebook
Wie installiere ich eine SNES-Kabel auf einem Multi-Konsole Cthulhu

Wie installiere ich eine SNES-Kabel auf einem Multi-Konsole Cthulhu

diese Instructable führt Sie durch die Installation einer SNES-Stil-Controller-Kabels auf einem Multi-Konsole "MC" Cthulhu.Alle Informationen über den Cthulhu-Projekt ist online verfügbar in den Shoryuken.com-Foren:http://Forums.Shoryuken.com/sh
Wie installiere ich eine Gamecube-Kabel auf einem Multi-Konsole Cthulhu

Wie installiere ich eine Gamecube-Kabel auf einem Multi-Konsole Cthulhu

diese Instructable führt Sie durch die Installation einer Gamecube-Stil-Controller-Kabel auf einem Multi-Konsole "MC" Cthulhu.Alle Informationen über den Cthulhu-Projekt ist online verfügbar in den Shoryuken.com-Foren:http://Forums.Shoryuken.com
Eine Charakter-LCD mit einem Arduino Steuerung

Eine Charakter-LCD mit einem Arduino Steuerung

Hallo! Ich werde heute Einführung Charakter LCDs und zeigt, wie sie mit einem Arduino zu verbinden.Es ist alles sehr einfach und nutzt nur 6 PINS mit Schnittstelle zu!Hinweis: das Bild ist nicht von mir und kommt aus http://www.micro-examples.com/pub
Wie installiere ich ein Playstation-Kabel auf einem Multi-Konsole Cthulhu

Wie installiere ich ein Playstation-Kabel auf einem Multi-Konsole Cthulhu

diese Instructable führt Sie durch die Installation einer Playstation und Playstation 2 Stil-Controller-Kabel auf einem Multi-Konsole 'MC' Cthulhu.Alle Informationen über den Cthulhu-Projekt ist online verfügbar in den Shoryuken.com-Foren:http://Foru
Wie installiere ich eine NES-Kabel auf einem Multi-Konsole Cthulhu

Wie installiere ich eine NES-Kabel auf einem Multi-Konsole Cthulhu

diese Instructable führt Sie durch die Installation einer NES Stil Controller-Kabels auf einem Multi-Konsole 'MC' Cthulhu.Alle Informationen über den Cthulhu-Projekt ist online verfügbar in den Shoryuken.com-Foren:http://Forums.Shoryuken.com/showthre
Steuerung einer Relais-Platine mit einem Arduino Uno

Steuerung einer Relais-Platine mit einem Arduino Uno

In diesem instructable steuern wir eine Relaiskarte Velleman K6714 mit einem Arduino. Die Schönheit der Verwendung von Relais ist, dass wir eine bescheidene kleine Arduino verwenden können, um Haushaltsgeräte oder was auch immer kann zu wechseln. Vel
Hack ein HC-SR04 zu einem 3-Pin-Sensor

Hack ein HC-SR04 zu einem 3-Pin-Sensor

Ich hoffe, Sie alle gehört haben, dass teuer aber genial Parallaxe Ping))) Sensor. Ich kann nicht einer von ihnen es sprengt mein Budget in winzig kleine Stücke von Schutt im Umlauf kaufen (30$, die ich meine). Was tun Sie? Hacken Sie Ihre Probleme b
Verwandle ein N64-Controller in ein USB-Gamepad mit einem Arduino Leonardo

Verwandle ein N64-Controller in ein USB-Gamepad mit einem Arduino Leonardo

Der einfachste Weg, ein N64-Controller in ein USB-Gamepad zu verwandeln ist eine N64 Controller Adapter für rund £15 zu kaufen. Jedoch kann es auch geschehen haben Sie ein Arduino Leonardo oder andere Arduino-Board mit integrierten USB-Kommunikation.
So verbinden Sie eine serielle LCD mit einem Arduino Nano

So verbinden Sie eine serielle LCD mit einem Arduino Nano

In einem früheren instructable habe ich demonstriert die seriellen LCD anschließen an ein Arduino UNOGestern habe ich zwei Arduinos für eine RF-Projekt verwenden wollte und merkte, dass ich nicht weiß, wie man die serielle LCD mit dem Arduino Nano ve
Einrichten einer Belastung Guage mit einem Arduino

Einrichten einer Belastung Guage mit einem Arduino

Diesem unzerstörbar ist als ein Teil von drei unternommen, um verschiedene Teile einer Bienenwabe als eine Überwachungsstation für ein College-Projekt zu messen. Dieser Teil ist, das Gewicht des gesamten Bienenstocks zu messen, damit das Gewicht der