Hack een ELM327 kabel om een Arduino OBD2 Scanner (2 / 3 stap)

Stap 2: Bevestig de Arduino LCD schild aan de arduino

De Arduino LCD Shield hechten aan de arduino en aansluiting op uw PC worden geprogrammeerd.

Hieronder is mijn Arduino Sketch, merkte ik dat de opmaak rommelt met de code een beetje, ik heb wat meer informatie beschikbaar met betrekking tot deze build kunt u ook hier de code bekijken.

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();} 
 } 
Gegevens lezen en handelen dienovereenkomstig 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 ("geen gegevens",""); BuildINString.replace("?",""); BuildINString.replace(",",""); Serial.Print(BuildINString); Check die OBD-opdracht werd gezonden en berekenen //Calculate RPM dwz retour bytes wil worden 41 0C 1B E0 als (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); Lucht stroom tarief als (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 ("V2.00 WisperChip"); voor (int i = 0; ik < = 5; i ++) {voor (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);

Gerelateerde Artikelen

Arduino OBD2 Simulator

Arduino OBD2 Simulator

Ive is het bouwen van een Arduino OBD2 Scanner interface met mijn Jeep van OBD2 haven, maar het werd een beeeeeg! schlep code uploaden naar mijn Arduino Nano + 16 x 2 LCD + ELM327 Scanner apparaat, trek dan de hele tijd het hele prototype aan de Jeep
Een Video Game Controller met een Arduino Hack voor grotere toegankelijkheid (of bedrog)

Een Video Game Controller met een Arduino Hack voor grotere toegankelijkheid (of bedrog)

Iedereen houdt van videospelletjes. Maar het kan moeilijk zijn om te genieten van bepaalde spellen als u gewond raken of uitgeschakeld en niet de handigheid nodig hoeft voor het uitvoeren van snelle knop combo's. Gelukkig kunnen we een Arduino gebrui
Hack een oude iPod met behulp van een Android en een Arduino.

Hack een oude iPod met behulp van een Android en een Arduino.

Deze tutorial toont je hoe een Arduino gebruiken om te schakelen van dat oude stoffige muziekspeler in een Bluetooth gecontroleerde docking station.Zelfs als er al een gebarsten scherm of een lege batterij die kan nog steeds worden gebruikt.De volgen
Sensorgegevens (DHT11 & BMP180) verzenden ThingSpeak met een Arduino, via kabel of WiFi (ESP8266)

Sensorgegevens (DHT11 & BMP180) verzenden ThingSpeak met een Arduino, via kabel of WiFi (ESP8266)

Ik schreef dit instructable omdat Thingspeak - nevermind hoe gemakkelijk u up - een paar hindernissen heeft dat ik liep in en dat, te oordelen naar de reacties, anderen met worstelen ook.Dingen die je moet:ArduinoWS5100 EthernetShield (als u de oude
Hack een wisselaar van de stem om toe te voegen van de input van een Arduino

Hack een wisselaar van de stem om toe te voegen van de input van een Arduino

een andere snelle hack. Ik kocht een wisselaar van de stem, want ik was op zoek naar iets goedkoop die een stem-invoerapparaat kan worden gekraakt. Eigenlijk wilde ik een schedel van animatie voorzien toen ik sprak. Toegevoegde bonus, nu de schedel p
Hoe Hack een Apple Time Capsule met een Raspberry Pi

Hoe Hack een Apple Time Capsule met een Raspberry Pi

Invoering van de "Pi-Capsule." Het is momenteel de enige Apple Time Capsule die u op uw TV aansluiten kunt..., betekent dit dat het een Apple TV? ;-)OK, ok, laten we zeggen dat je hebt een oude Apple Time Capsule rond leggend dat niet meer werkt
Hack een Toaster Oven voor Reflow solderen

Hack een Toaster Oven voor Reflow solderen

als ik ernstiger in mijn elektronica hobby krijgen, ik moet werken met meer SMD componenten. Sommige onderdeelpakketten zijn zeer moeilijk of onmogelijk om te solderen met een traditionele soldeerbout. U kunt dit probleem oplossen, besloten heb ik om
RotaryX: Hoe Hack een roterende telefoon

RotaryX: Hoe Hack een roterende telefoon

Net als een heleboel analoge technologie maken roterende telefoons met een reeks van hoog/laag-switches die gemakkelijk kan worden aangesloten in een Arduino voor programmering adventures. Deze tutorial zal u door het proces van het openen en herbedr
Treelegram - Hack een kerstboom verlichting van overal in de wereld!

Treelegram - Hack een kerstboom verlichting van overal in de wereld!

Hallo allemaal,Na enkele jaren geregistreerd op Instructables, en nooit gepubliceerd een tutorial, is de tijd gekomen!Dus, hier ben ik, klaar om te delen van mijn laatste project, genaamd Treelegram.Treelegram is een sociale kerstboom waarmee u kappe
Hoe Hack een computer atx power supply

Hoe Hack een computer atx power supply

Hallo iedereen, dit is mijn eerste instructable en het is over hoe Hack een ATX computer voeding en dan zet het in een mooie kleine geval dus het is klaar voor gebruik. Ik heb gemaakt van verschillende van deze vóór en besloten om een instructable er
Gebruik een PS3-Controller te controleren van een Arduino NXT Bot

Gebruik een PS3-Controller te controleren van een Arduino NXT Bot

UPDATE:Ik heb een paar insecten met het gegevenspakket vast, en ik heb bewerkt de NXTI2CDevice bibliotheek zodat ze compatibel zijn met Arduino 1.0.Het bijgevoegde zip-bestand heeft1. een nieuwe schets van de Arduino2. een nieuwe Processing Schets3.
Programmeren van een Arduino van Raspberry Pi

Programmeren van een Arduino van Raspberry Pi

Informatie over het installeren van de Arduino IDE op je Raspberry Pi, zodat u kunt schrijven en uploaden van programma's op een Arduino.Items nodig:1 x Raspberry Pi1 x ArduinoPlus wat ooit kabels nodig zijn zoals USB aan de Arduino.Stap 1: Installer
Gebruik van een Arduino met een N64-controller

Gebruik van een Arduino met een N64-controller

er zijn tutorials die er voor het gebruik van een NES-controller met een Arduino, maar met behulp van de meer gecompliceerde N64-controller en de analoge joystick heeft een duidelijke aantrekkingskracht. Als u een Arduino rond hebt en wil niet te kop
Laten we gaan vliegen een vlieger... met een Arduino daarop!

Laten we gaan vliegen een vlieger... met een Arduino daarop!

Hallo iedereen! Ik ben Michalis Vasilakis uit www.ardumotive.com en in deze Instructables zal ik u tonen hoe maak je je eigen Arduino IOT-systeem voor je vlieger!Dit systeem zal zitten kundig voor real-time waarden van de luchtdruk, de hoogtemeter, d