of 24/24
Jan Rautalin, 1103482 Tiedonkeruu ajoneuvon CAN-väylästä Arduino:n ja Raspberry Pi:n avulla Metropolia Ammattikorkeakoulu 26.12.2013

Tiedonkeruu ajoneuvon CAN-väylästä Arduino:n ja Raspberry Pi:n avulla

  • View
    2.104

  • Download
    7

Embed Size (px)

DESCRIPTION

Tiedonkeruu ajoneuvon CAN-väylästä Arduino:n ja Raspberry Pi:n avulla. (Jan Rautalin, projektityö Metropolia-amk:ssa)

Text of Tiedonkeruu ajoneuvon CAN-väylästä Arduino:n ja Raspberry Pi:n avulla

  • Jan Rautalin, 1103482 Tiedonkeruu ajoneuvon CAN-vylst Arduino:n ja Raspberry Pi:n avulla Metropolia Ammattikorkeakoulu 26.12.2013
  • Sisllys Lyhenteet 1 Taustaa 1 2 Johdanto 1 3 Arduino lyhyesti 2 4 Arduino CAN-shield lyhyesti 3 5 Arduinon tarvitsemat ohjelmistot 4 6 Projekti 1, CAN-vyln lukeminen Arduino CAN-shieldill 5 6.1 Ohjelmakoodit 5 6.2 Kytkent ajoneuvoon ja tiedonkeruun kyttminen 8 7 Raspberry Pi lyhyesti 8 ELM 327 sovitin 12 9 Raspberry PI:n tarvitsemat ohjelmistot 12 10 Projekti 2, CAN-vyln lukeminen Raspberry Pi:ll 9 13 10.1 Ohjelmakoodit 13 10.2 Kytkent ajoneuvoon ja tiedonkeruun kyttminen 13 10.3 Paranneltu asennus ajoneuvoon 15 11 Ptelmt Liitteet Liite 1. Muokattu ohjelmakoodi Arduinolle 17
  • Lyhenteet CAN Controller Area Network. Mm. ajoneuvoissa kytetty tiedonsiirtovyl. DIL Dual in-line package. Perinteinen mikropiirien kotelointitapa. Piirin jalat ovat kahdessa riviss. DIL-piiri voidaan juottaa piirikortin lpi tai kytt juotettavaa DIL-kantaa, johon piiri painetaan. GPIO General purpose input/output. Ohjelmoitava digitaalinen sisn/ulostulo. OBD On-board Diagnostics. Ajoneuvoissa kytetty diagnostiikkajrjestelm.
  • 1 1 Taustaa Kiinnostus lukea ajoneuvon CAN-vyln tietoja syntyi kahdesta tekijst. Ensiksikin kytssni olleesta uudehkosta autosta puuttui jhdytysnesteen lmpmittari. Toisaalta olin Metropolia AMK:n opintojaksolla Sulautetut jrjestelmt pssyt tutustumaan mielenkiintoiseen Arduino-mikrokontrolleriin. Niinp muutamien yksinkertaisempien Arduino-projektien jlkeen ptin soveltaa Arduinoa CAN-vyln lukemiseen ja tiedonkeruuseen, mm. kaivatun jhdytysnesteen lmptilatiedon havainnollistamiseksi. Saatuani laitteiston toimimaan ja kytettyni sit useissa ajoneuvoissa, kiinnostuin mys toisesta, hieman vastaavantyyppisest laitteesta, Raspberry Pi:st. Niinp halusin mys tutkia, onnistuuko CAN-vyln lukeminen sill ja miten toteutus eroaisi Arduino-projektista. Etenkin Arduinon ollessa riippuvainen siihen liitetyst kannettavasta tietokoneesta kiinnosti Raspberry Pi itsenisempn kokonaisuutena, onhan se itsessn pienoiskokoinen tietokone, johon on suoraan liitettviss mm. nytt. 2 Johdanto Tmn raportin tarkoitus on johdatella lukijaa aiheen pariin ja antaa joitakin perustietoja projektien toteuttamisesta. Koska tllaiset projektit kuitenkin perustuvat posin henkilkohtaiseen ongelmanratkaisuprosessiin ja asioiden oivaltamisen, ei selostuksen ole siten tarkoitus toimia yksityiskohtaisena rakennusohjeena. Molempien kokoonpanojen osalta ainoastaan itse laitteet on hankittava ostamalla. Muuten kaikki tarvittava, eli avoimeen lhdekoodiin perustuvat ohjelmis- tot/ohjelmointitykalut sek vertaistuki lytyvt luonnollisesti internetist. Tst syyst myskn aivan alkeita, kuten ohjelmistojen asennuksia ei ole tss selostuksessa erityisemmin ksitelty. Perustavaa laatua olevaa ohjelmointityt ei tss yhteydess ole tehty. Aikaansaadut sovellukset perustuvat internetist lydettyihin open source esimerkkikoodauksiin, joita on jonkin verran muokattu. Muutoksien tekemiseen riittnee mink tahansa ohjelmointikielen parissa hankitut perustiedot.
  • 2 Mainittakoon mys, ett tss ksitellyn lisksi internet pursuaa muita kiinnostavia rakenteluprojekteja molemmille alustoille. 3 Arduino lyhyesti Arduino on avoimeen lhdekoodiin perustuva edullinen elektroniikan prototyyppi- ja rakentelualusta. Saatavilla on useampia erilaisia versioita. Tss yhteydess on kytetty Arduino Uno R3:a. Kyseess on noin korttipakan kokoinen laite, joka perustuu AVR ATmega328- mikrokontrolleripiiriin. Laitteessa on 14 ohjelmoitavaa digitaalista ja kuusi analogista sisn/ulostuloa. Perustason liitynt muihin laitteisiin sek virransytt tapahtuvat USB-liittimen kautta. Arduino Uno poikkeaa edukseen muista versioista esim. siten, ett mikli pelkk mikrokontrolleripiiri vaurioituu, se on asennettu ns. DILasennuskantaan ja siten helposti vaihdettavissa. Arduinoon on liitettviss lukuisa mr valmiita oheislaitteita ja omia rakennelmia, joita kutsutaan shieldeiksi. Valmiit shieldit ja omat protokortit kytkeytyvt Arduinoon kortin reunoilla olevien piikkirimojen vlityksell (kuva 1). Virtaa enemmn kuluttavien rakennelmien (mm. relekortti) ohjaamista varten Arduinoon on liitettviss lisvirtalhde. Listiedot ja ohjelmistot: http://arduino.cc Arduino Uno R3 maksaa (joulukuussa 2013) n. 30 euroa. Tuotetta myy ainakin Partco (www.partco.fi).
  • 3 Kuva 1. Kuvassa Arduino Uno R3 sek erikseen ostetut, koekytkentj helpottavat, piikkirimoihin liitettvt ruuviliitosrimat. 4 Arduino CAN-shield lyhyesti Jotta Arduinolla pystyy lukemaan ajoneuvon CAN-vyl, tarvitaan jonkinlainen sovitin. Ers vaihtoehto olisi rakentaa sellainen itse. Tss yhteydess pdyttiin kuitenkin kyttmn valmista shieldi eli Arduinoon liitettv sovitinta. Sopiva lytyi internetist mm. SK Pang Electronicsin sivujen kautta. http://skpang.co.uk/catalog/arduino-canbus-shield-with-usd-card-holder-p-706.html katso mys: https://www.sparkfun.com/products/10039 http://proto-pic.co.uk/can-bus-shield/ Kyseess on ajoneuvon OBD-diagnostiikkaliittimeen kaapelilla liitettv, Microchip:in MCP2515 CAN controller ja MCP2551 CAN transceiver-piireihin perustuva valmiiksi koottu tuote (kuva 2). Kuitenkin auton diagnostiikkaliittimen ja sovittimen vlille tarvit-
  • 4 tava OBD2-DB9 kaapeli on tilattava (tai tehtv) erikseen, samoin Arduinoon liittmiseksi tarvittavat piikkirimat piti ostaa erikseen ja juottaa itse paikoilleen. Kuva 2. Arduinoon liitettv sparkfun.com:in CAN-shield. tarvittavat piikkirimat juotettuina paikoilleen. Kuvassa Arduinoon liittmiseen Itse tilasin ko. tuotteen englantilaisesta Proto-PIC nettikaupasta, kuluja tuli tarvittavan OBD2-DB9 ja piikkirimojen sek lhetyskulujen kanssa (tammikuussa 2013) n. 65 puntaa. 5 Arduinon tarvitsemat ohjelmistot Arduinon ohjelmoimiseksi tarvitaan tietokone sek USB-kaapeli. Lisksi Arduino-sivuilta (http://Arduino.cc ) ladataan ja asennetaan tietokoneelle ohjelmisto Arduino IDE. Tll ohjelmistolla laaditaan tai muokataan Arduinon tarvitsema ohjelmakoodi, tarkistetaan ja knnetn sek ladataan se Arduinon muistiin.
  • 5 Muita projektissa hyvksi havaittuja ohjelmia ovat ohjelmatiedostojen suoraan muokkaamiseen hyvin soveltuva Notepad++ sek sarjaliikenteen lukemiseen ja liikenteen tiedostoon tallentamiseen soveltuva PuTTy-terminaaliohjelma (PuTTy.exe). 6 6.1 Projekti 1, CAN-vyln lukeminen Arduino CAN-shieldill Ohjelmakoodit Arduino IDE:n asentamisen jlkeen ladattiin internetist SK Pang Electronicsin sivuilta http://skpang.co.uk/catalog/arduino-canbus-shield-with-usd-card-holder-p-706.html CAN-shieldille kirjoitetut ohjelmat (CAN-BUS ECU Reader demo sketch v4). Tss projektissa kytettiin examples-hakemiston ecu_reader_logger.ino ohjelmatiedostoa muokattuna sek tehtiin pieni muutoksia canbus.h ja canbus.cpp kirjastotiedostoihin. Viimeistn projektin tss vaiheessa on syyt perehty ainakin jollakin tasolla tietorakenteisiin, joita CAN-vylst ollaan aikeissa lukea. Kiinnostavia ovat OBD PID:t eli tietyille antureille tunnusomaiset parametrit, joita vylss liikkuu. Lhes kaikki automerkit tukevat tiettyj perusparametrej, mutta suurin osa on automerkkien salaamia. Tss keskityttiin vain helposti saatavilla olevien tietojen lukemiseen. Tyypillisi, esimerkkiautossakin (Subaru Forester Diesel vm. 2009) tuettuja ovat kuvassa 5 nkyvt PID:it.
  • 6 Kuva 3. Esimerkkiautossa tuettuja OBD2-protokollan PID:ej Listietoja: http://en.wikipedia.org/wiki/OBD-II_PIDs Kytnnss siis muokattiin canbus.h tiedoston rivej (kuva 5) siten, ett kyselyyn otetaan mukaan vain halutut (tuetut) PID:it. Lisksi muokattiin canbus.cpp tiedostoa siten, ett edellist valintaa vastaavat casekohdat ovat mukana tsskin koodissa (kuva 6).
  • 7 Kuva 4. Canbus.cpp tiedoston case-lauseita. Varsinaista ohjelmakoodia (ecu_reader_logger.ino) muokattiin hieman edellist enemmn. Alkuperinen koodi on kirjoitettu CAN-shieldille, johon on liitetty saman valmistajan yksijohtoista tiedonsiirtoa kyttv Serial LCD eli shieldiin kytketty LCD-nytt sek GPS-moduli (shieldin lisvaruste). Mainittakoon, ett suoraan Arduinolle sovellettua vastaavaa 16x2 LCD-nytt kokeiltiin liitt Arduinon ja CAN-shieldin plle piikkirimojen lpi pinoamalla kolmanneksi shieldiksi, mutta tm kokeilu ei toiminut. Jos siis CAN-shieldin kanssa haluaa kytt LCD-nytt, on hankittava suoraan CAN-shieldiin liitettv saman toimittajan Serial LCD tai valmistettava itse vastaava (kytkent lytyy SK Pang:in sivuilta). Ohjelmakoodia on siis omaa kytt varten lyhennetty noin puoleen ja Serial LCD:n puuttuessa tietojen nyttminen on muutettu tavalliseksi sarjaliikenteeksi, jota voidaan
  • 8 seurata PC:lt ja tarvittaessa tallentaa esim. PuTTy-terminaalin avulla. Kyseinen koodi nkyy liitteess 1. Valmista koodia kokeiltiin useissa eri autoissa, jolloin havaittiin, ett joissakin autoissa kysytyt PID:t nkyivt hyvin, mutta samasta CAN-vyln nimellisnopeudesta (500 kbps) huolimatta joissakin nkyi vain satunnaisia PID:ej. Nytti silt, kun tietojen luku ei oikein olisi pysynyt vauhdissa mukana. Thn auttoi yrityksen ja erehdyksen kautta tehty canbus.cpp tiedoston rivill 125 olevan timeout-arvon 4000 nostaminen 8000:een. Muutoksen jlkeen toiminta on ollut asianmukaista kaikissa kokeilluissa ajoneuvoissa (n. 10 kpl). 6.2 Kytkent ajoneuvoon ja tiedonkeruun kyttminen Kun edellisess kohdassa mainittu muokattu ohjelmakoodi on ladattu Arduinon muistiin, on aika kytke laite toimintaan: CAN-shield kytketn kaapelilla auton OBD-diagnostiikkaliittimeen (sytytysvirta pois kytkettyn) Arduino kytketn USB-kaapelilla kannettavaan tietokoneeseen. Tietokoneella kynnistetn joko Arduino IDE:n Serial Monitor tai erikseen asennettu PuTTy-terminaaliohjelma. Jos kaikki toimii niin kuin pit, niin nytlle tulostuu. ECU Reader CAN Init ok Auto kynnistetn Nytlle (tai vaihtoehtoisesti PuTTy:n log-tiedostoon) tulostuvat kysytyt parametrit ja niiden arvot halutulla nytteenottotaajuudella (kuva 7). Lopetus pinvastaisessa jrjestyksess
  • 9 Kuva 5. PuTTy-terminnaliohjelmalla PC.lle tiedostoon talletettua tietoa (nytteenottotaajuus 10s). 7 Raspberry Pi lyhyesti Raspberry Pi (lyhenne RPi) on pienoiskokoinen tietokone tarvittavine liittimineen (kuvat 3 ja 4). Alunperinkin opetuskyttn tehty RPi perustuu Arduinon tavoin avoimeen lhdekoodiin. Arduinoa hieman suurempi, koottuna piirikorttina myytv laite perustuu lypuhelimissa kytettyyn ARM-prosessoriin. Tarjolla on erilaisia Linux-
  • 10 kyttjrjestelmversioita, esim. tss yhteydess kytetty Raspbian. toimii SD-muistikortti. Kiintolevyn Raspberry Pi:ss on useita ohjelmoitavia digitaalisia si- sn/ulostuloja (GPIO), mutta analogisia tuloja ei Arduinon tapaan ole. Ern erona Arduinoon on se, ett Raspberry Pi-korttiin ei voi liitt lisvirtalhdett, joten GPIO-kanavilla voi ohjata hyvin pieni, muutaman kymmenen mA:n virtoja. Kuva 6. Raspberry Pi model B. Kuvassa lisvarusteena ostettava avattava muovinen asennuskotelo.
  • 11 Kuva 7. Raspberry Pi model B:n liitnnt (www.raspberrypi.org/FAQ). Virtalhteen kytetn tavanomaista (hyvlaatuista) micro-USB liittimell varustettua, esim. lypuhelimen laturia. Osa myyjist on oheistanut kortin mukaan ns. NOOBS-muistikortin (New Out of The Box Software) eli 4 GB:n SD-muistikortin, jossa on esiladattu useiden eri kyttjrjestelmversioiden asennustiedostoja. Valittava kyttjrjestelm purkautuu ja asentuu (ylikirjoittaa) samalle kyseiselle SD:lle, joten lienee suositeltavaa tehd ainakin imagetiedosto kyseisest muistikortista ennen kyttjrjestelmn asennusta. Mikli ostamasi RPi:n mukana ei tule NOOBS-muistikorttia, sen sislt lytyy RPi:n kotisivuilta. Raspberry Pi:n kyttn liittyy Arduinoon verrattuna jonkin verran enemmn tietoteknist taustatyt, lhinn sopivan Linux-kyttjrjestelmn (esim. Raspbian) asennus. Listiedot ja ohjelmistot: http://www.raspberrypi.org/ RPi:st lytyy mys hydyllinen artikkeli Tekniikan Maailman numerosta 8/2013. Raspberry Pi Model B Rev. 2.0 maksaa (tammikuussa 2014) ostopaikasta riippuen n. 50 euroa. Tuotetta myyvt ainakin Partco (www.partco.fi) ja Yleiselektroniikka (www.yeint.fi).
  • 12 8 ELM 327 sovitin Raspberry Pi, kuten mik tahansa tietokone, tarvitsee sovittimen, joka pystyy lukemaan CAN-vyl. Markkinoilla on tllisi tuotteita valtavasti. Yleisimmt lienevt ELM 327 piirin halpakopioihin perustuvia johdollisia (USB) tai Bluetooth-yhteydell toimivia laitteita (kuva 8). Kuva 8. Erilaisia ELM 327 halpakopiosovittimia, hinnat 1020 eur/kpl. Etualalla USB-liitynnll oleva, taustalla Bluetooth-adaptereita, jotka toimivat hyvin esim. Android-lypuhelimien ja tablettien valmiiden App:sien, (kuten Torque) kanssa. Tss yhteydess kytettiin johdollista USB-liitynnll olevaa sovitinta sen oletetun helppouden vuoksi (Bluetoothista Raspberry Pi:n kanssa ei ollut kokemusta). 9 Raspberry Pi:n tarvitsemat ohjelmistot Aluksi tarvitaan Python-ohjelmointiymprist. Useimmissa tapauksissa tm asentunee oletuksena, kun asennetaan Raspbian-kyttjrjestelm.
  • 13 Pythoniin tarvitaan sarjaliikennelaajennus (python-serial) Lisksi tarvitaan tietenkin Pythonille kirjoitettu ohjelma, joka lukee tietoja auton CAN-vylst. Tss tapauksessa lydettiin internetist pyobd-niminen sovellus, jota kokeiltiin. http://www.stuffaboutcode.com/2013/07/raspberry-pi-reading-car-obd-ii-data.html 10 Projekti 2, CAN-vyln lukeminen Raspberry Pi:ll 10.1 Ohjelmakoodit RPi-projetissa kytettiin lydetty pyobd-sovellusta sellaisenaan. Alla olevilla Raspbianin komentotulkissa (shell) annettavilla komennoilla ladataan Pythonin sarjaliikennelaajennus sek pyobd-sovellus. Viimeinen komento kynnist sovelluksen, joten sit ei kannata tss vaiheessa viel tehd. 10.2 Kytkent ajoneuvoon ja tiedonkeruun kyttminen Ainakin aluksi kytettiin RPi:n nyttn tavallista tietokoneen nytt, joka tietenkin sopii ajoneuvoon todella huonosti. RPi:hin kytketn nytt, nppimist sek hiiri (tarvitaan USB-jakaja, koska RPi:ss vain kaksi USB-paikkaa) ELM 327 sovitin liitetn auton diagnostiikkaliittimeen (sytytysvirta pois kytkettyn). Sovittimen USB-liitin kytketn RPi:hin.
  • 14 Kytketn RPi:n virtalhde kiinni, RPi kynnistyy. Avataan komentotulkki (shell) ja siirrytn pyobd-hakemistoon Kynnistetn auto annetaan komentotulkissa komento: python obd_capture.py pyobd-ohjelma kynnistyy ja tiedot nkyvt komentotulkin ikkunassa (kuva 9). pyobd-ohjelma lopetetaan ctrl-C:ll Lopetus pinvastaisessa jrjestyksess
  • 15 Kuva 9. CAN-vyllt pyobd-ohjelmalla luettua dataa. Nytteenottotaajuus 2 s. 10.3 Paranneltu asennus ajoneuvoon Koska tietokoneen verkkovirtakyttinen nytt on autokytss lhes mahdoton, samoin kuin nppimist ja hiiri, oli ensimmisten testien jlkeen tarpeen hieman automatisoida tiedonkeruun kytt. Nytksi hankittiin halpa peruutuskameran nytt, joka on suoraan liitettviss RPi:n RCA Video liittimeen (keltainen).
  • 16 Raspbianiin tehtiin seuraavat asetusmuutokset: bootissa ei kynnistet graafista kyttliittym otettiin hotplug hdmi-nytlle pois plt (kuva RCA Video:lle) bootin jlkeen tehdn autologon autologonin jlkeen kynnistyy automaattisesti pyobd-ohjelma Niden muutosten jlkeen voidaan pyobd-ohjelmaa kytt pienell nytll (kuva 10) ilman nppimist ja hiirt. Ainoat liitynnt RPi:lle ovat siten nytn RCA-liitin, ELM 327 sovittimen USB-liitin ja micro-USB virransytt. Nytlle tarvitaan mys erillinen 12 V sytt. Kuva 10. Peruutuskameran monitori (hintaluokka 20 ) Raspberry PI:n nyttn.
  • 17 11 Ptelmt Molemmissa projekteissa onnistuttiin ja yleisesti saatavilla olevia OBD-parametrej pystyttiin lukemaan molemmilla laitteistokokoonpanoilla autojen CAN-vylst. Molempiin jrjestelmiin ji mys jatkokehitystarpeita. Arduino-pohjainen systeemi voisi sopia paremmin pysyvn asennukseen, jos siihen saataisiin liitetty toimiva 16x2 tai 16x4 LCD-nytt. RPi-pohjainen saatiin huomattavasti nopeammin vlttvn toimintakuntoon, pitklti valmiiksi toimivan sovelluksen ansiosta. Ohjelmistoa kuitenkin tarvitsisi kehitt edelleen, jotta pienelle nytlle saataisiin lukukelpoinen grafiikka, esim. 2-4 kiinnostavinta lukemaa riittvn suurella fontilla. Toki on mys todettava, ett vastaavia ja paljon hienompia tuotteita vastaavaan tarpeeseen on markkinoilla runsaasti, jopa tss esiteltyj edullisempaan hintaan. Niss projekteissa vastaus kysymykseen: miksi siis tehd itse kuuluukin: koska se on mahdollista!
  • D:usersJanneDocumentsArduinoCanbusexamplesecu_reader_logger_janneecu_reader_logger_janne.ino 25. joulukuuta 2013 21:44 /*Sulautettujen jrjestelmien perusteet (3 op) harjoitus 3 Jan Rautalin ACT11 4.2.2013 Ohjelma lukee Arduinoon liitetyn sparkfun.com:in CAN Shieldin kautta auton CAN-vyllt tiettyj parametrej. Ohjelmaan on kertty sellaiset standardi OBD-II PID:it, joita eri lhteist kerttyjen tietojen mukaan Subary Forester Diesel MY09 (Euro4) tukee. */ LIITE 1 muokattu ohjelmakoodi #include char buffer[512]; the file //Data will be temporarily stored to this buffer before being written to void setup() { Serial.begin(9600); Serial.println("ECU Reader "); /* For debug use */ if(Canbus.init(CANSPEED_500)) /* Initialise MCP2515 CAN controller at the specified speed */ { Serial.println("CAN Init ok"); } else { Serial.println("Can't init CAN"); } delay(1000); } void loop() { /* if(Canbus.ecu_req(MONITOR_STATUS,buffer) == 1) { Serial.print(millis()/1000); Serial.print(" secs since last reset"); Serial.println(); Serial.print("Monitor status since DTCs cleared: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } */ if(Canbus.ecu_req(ENGINE_LOAD_VALUE,buffer) == 1) { Serial.print("Calculated engine load value: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(ENGINE_COOLANT_TEMP,buffer) == 1) { -1-
  • D:usersJanneDocumentsArduinoCanbusexamplesecu_reader_logger_janneecu_reader_logger_janne.ino Serial.print("Engine Coolant Temperature: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(INTAKE_MANIF_PRESS,buffer) == 1) { Serial.print("Intake manifold absolute pressure: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(ENGINE_RPM,buffer) == 1) { Serial.print("Engine RPM: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(VEHICLE_SPEED,buffer) == 1) { Serial.print("Vehicle Speed: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(INTAKE_AIR_TEMP,buffer) == 1) { Serial.print("Intake Air Temperature: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(MAF_SENSOR,buffer) == 1) { Serial.print("MAF Air Flow Rate: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } /* if(Canbus.ecu_req(THROTTLE,buffer) == 1) { Serial.print("Throttle Position: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(OBD_STANDARD,buffer) == 1) { Serial.print("OBD standards this vehicle conforms to: "); -2- 25. joulukuuta 2013 21:44
  • D:usersJanneDocumentsArduinoCanbusexamplesecu_reader_logger_janneecu_reader_logger_janne.ino Serial.print(buffer); Serial.print(";"); Serial.println(); } */ if(Canbus.ecu_req(RUNTIME,buffer) == 1) { Serial.print("Runtime since last engine start: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(DIST_MIL_ON,buffer) == 1) { Serial.print("Distance travelled with MIL on: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(FUEL_RAIL_PRESS,buffer) == 1) { Serial.print("Fuel Rail Pressure: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } /* if(Canbus.ecu_req(WARM_UPS_CODES_CLD,buffer) == 1) { Serial.print("Number of warm-ups since codes cleared: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(DIST_CODES_CLD,buffer) == 1) { Serial.print("Distance travelled since codes cleared: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } */ if(Canbus.ecu_req(BAROM_PRESS,buffer) == 1) { Serial.print("Absolute pressure: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(CAT_TEMP_B1_S1,buffer) == 1) { Serial.print("Catalyst Temperatur Bank1 Sensor1: "); Serial.print(buffer); Serial.print(";"); -3- 25. joulukuuta 2013 21:44
  • D:usersJanneDocumentsArduinoCanbusexamplesecu_reader_logger_janneecu_reader_logger_janne.ino Serial.println(); } if(Canbus.ecu_req(CAT_TEMP_B1_S2,buffer) == 1) { Serial.print("Catalyst Temperatur Bank1 Sensor2: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(CTRL_MOD_VOLTS,buffer) == 1) { Serial.print("Control Module Voltage: "); Serial.print(buffer)/1000; Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(AMBIENT_AIR_TEMP,buffer) == 1) { Serial.print("Ambient Air Temperature: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } /* if(Canbus.ecu_req(ACC_PEDAL_POS_MAIN,buffer) == 1) { Serial.print("Accel pedal position Main Sensor: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } if(Canbus.ecu_req(ACC_PEDAL_POS_SUB,buffer) == 1) { Serial.print("Accel pedal position Main Sensor: "); Serial.print(buffer); Serial.print(";"); Serial.println(); } */ if(Canbus.ecu_req(THROTTLE_ACTUATOR,buffer) == 1) { Serial.print("Commanded throttle actuator: "); Serial.print(buffer); Serial.print(";"); Serial.println(); Serial.println("----------------;"); delay(20000); } } -4- 25. joulukuuta 2013 21:44