OBD-II con ELM327/STN1110

Ciao,
vorrei integrare la mia auto con un dispositivo in grado di leggere dalla porta di diagnosi obd2, tutti i vari parametri con protocollo canbus.
Esistono già delle shield con elm327 o mcp2515/mcp2551 tipo queste:

http://www.seeedstudio.com/wiki/CAN-BUS_Shield
http://sigalabs.com/projects/vehicle-obd2-shield-with-stn1110-ic/
ma vorrei usare l'integrato STN1110 che risulta più aggiornato e performante degli altri.
Per chi non lo conosce, questo è il datasheet del elm327 che è il più famoso http://elmelectronics.com/DSheets/ELM327DS.pdf

In particolare, nel display del dispositivo, vorrei visualizzare la temperatura del liquido refrigerante motore, e la pressione del carburante(nel mio caso è la pressione del metano, che spero di riuscire a leggere).

Le mie domande sono:
-qualcuno ha avuto esperienza con questi dispositivi?
-purtroppo non so leggere i vari codici, qualcuno più esperto potrebbe dirmi se riesco a visualizzare sul display solo quei valori che voglio? (immagino di si, basta modificare il codice?)
-qualcuno a Modena e provincia ha la possibilità di farmi il circuito stampato?

Grazie.

Ciao Alessandro,
benvenuto nel forum :slight_smile:

Il dispositivo del primo link funziona proprio con STN1110, e se non vuoi realizzarti una shield da zero puoi usare quello, in ogni caso posso dirti che le differenze fra l'ELM327 e l'STN1110 non le noterai molto facilmente, soprattuto se la centralina della tua auto comunica con un protocollo vecchio e lento come ad esempio l'ISO 9141, per questo sarebbe utile sapere il modello della tua auto e l'anno..

Risposte:

  • Si, puoi vedere il mio progetto di maturità in firma :slight_smile:
  • Puoi visualizzare sul display tutti i valori che vuoi a patto che la centralina della tua auto lo preveda.
  • Non sono di Modena :sweat_smile:

Ad ogni modo ti consiglio di leggere a fondo il datasheet dell'ELM327 (i comandi dell'STN1110 sono perfettamente compatibili con quelli dell'ELM) e soprattutto ti consiglio di leggere attentamente questo (in particolar modo la modalità 01) in cui troverai ogni risposta alle tue domande a riguardo, ogni giorno ringrazio colui che ha scritto quella pagina su wikipedia! :sweat_smile:

Ciao Dario, grazie del supporto e complimenti: il tuo progetto è davvero ben fatto!
La mia Auto è una Grande Punto del 2009(l'auto è nata nel 2005) e sinceramente non saprei nemmeno dove andare a guardare in merito al protocollo; ora utilizzo un lm327 1.4 bluetooth assieme a Torque per Android, non so se mi può fornire questa informazione. Ad ogni modo volevo usare l'stn1110 perchè poi questo dispositivo lo utilizzerò su altre auto, più recenti.
Sapresti consigliarmi con quale scheda di ardunino e canbus cominciare? Attualmente i valori che vorrei leggere sono solamente due, ma in futuro sicuramente dovrò espanderli. Avevo in mente di usare un display 16x2 e mantenere sempre collegato il dispositivo, magari montandolo in qualche spazio libero sotto il cruscotto.
Per la lettura del refrigerante del motore direi che non ho problemi; in merito alla lettura della pressione del carburante(metano)sono quasi certo che questa informazione sia trasmessa sempre via canbus(non ne sono sicuro ma viene riportata sul quadro strumenti), però sono anche a conoscenza di un obd pinout specifico per Fiat, perchè attualmente utilizzo il software Multiecuscan che con un apposito adattatore(n°3) permette di "scrivere" nella ecu
http://www.multiecuscan.net/

Ora inizio a leggermi gli obd pids :wink:

quasi dimenticavo: il sensore di pressione del metano, è questo http://www.keller-druck.com/picts/pdf/engl/22e.pdf magari se non riesco a prelevare l'informazione dal canbus, potrei comunque collegare il sensore direttamente ad arduino; dovrebbe avere con output una tensione variabile costante tra 0.5 e 4.5v, che ne pensi?

campe89:
La mia Auto è una Grande Punto del 2009(l'auto è nata nel 2005)...

Come puoi leggere QUI la tua auto utilizza il protocollo can a 29 bit @ 500kb e soprattutto adesso sappiamo quali sono i PID supportati per la modalità 1, o meglio li sapremo una volta decodificati i dati presenti nella colonna "MODE 1". Per fortuna su wikipedia c'è scritto come decodificarli, ma se vuoi puoi anche usare uno dei tanti tool per windows o meglio questo tool online (inserisci il dato della colonna "MODE 1" nel formato "BE 3E B8 11" e successivamente scegli l'offset ovvero il range di PID: 0 per i PID dal 01 al 20, 1 per i PID dal 21 al 40 e 2 per i PID dal 41 al 60).

ora utilizzo un lm327 1.4 bluetooth

volendo puoi utilizzare anche questo modulo per poi leggere i dati con un modulo bluetooth HC-05 collegato ad arduino (e cosi ho fatto io nel mio progetto) ma se puoi/vuoi puoi realizzarti uno shield da 0.

Ad ogni modo volevo usare l'stn1110 perchè poi questo dispositivo lo utilizzerò su altre auto, più recenti.

per questo va bene anche l'ELM327, questo per dirti che fra i due integrati (che poi sono dei PIC con un programma custom) non c'è tutta questa gran differenza, soprattutto per applicazioni così semplici. Il vantaggio principale del'STN1110 è che se fai richiesta nel sito del produttore ti mandano dei campioni gratuiti (fino a 3 integrati) mentre per un integrato ELM327 da futurashop ci vogliono 46 euro.

Attualmente i valori che vorrei leggere sono solamente due, ma in futuro sicuramente dovrò espanderli

Considera che più dati leggi più ovviamente sarà lento l'aggiornamento generale, soprattutto con protocolli lenti (Il CAN è il più veloce e non dovresti avere grandi problemi)

Per la lettura del refrigerante del motore direi che non ho problemi; in merito alla lettura della pressione del carburante(metano)sono quasi certo che questa informazione sia trasmessa sempre via canbus(non ne sono sicuro ma viene riportata sul quadro strumenti).

Per la lettura della temperatura del refrigerante non ci sono problemi mentre per la pressione del carburante dovrai ricorrere ad altri metodi perchè come puoi vedere dalla decodifica dei PID supportati non è leggibile attraverso l'ECU. In generale se un'informazione è disponibile sul cruscotto non è detto che sia leggibile dall'ECU.

quasi dimenticavo: il sensore di pressione del metano, è questo http://www.keller-druck.com/picts/pdf/engl/22e.pdf magari se non riesco a prelevare l'informazione dal canbus, potrei comunque collegare il sensore direttamente ad arduino; dovrebbe avere con output una tensione variabile costante tra 0.5 e 4.5v, che ne pensi?

Si dovrebbe essere possibile leggerlo tramite un ingresso analogico di arduino ma su questo magari dovremmo aspettare il parere di qualcuno più esperto, non ci ho mai provato e non ci metterei la mano sul fuoco :sweat_smile: :sweat_smile:

Ciao Dario, complimenti per il progetto OBD. Sono visibili da qualche parte schema e sorgenti per il MBED?

tra mode1 e pids mi sono già perso; mi tocca studiare a fondo.
con torque ho scoperto prima che il valore "fuel level" restituisce un valore percentuale riferito al carburante in quel momento utilizzato; potrei empiricamente trovare una proporzione per poterlo convertire nell'unità di misura che mi serve(bar).

BaBBuino:
Ciao Dario, complimenti per il progetto OBD. Sono visibili da qualche parte schema e sorgenti per il MBED?

Ciao Babbuino, grazie per i complimenti.
No, non ho mai pubblicato niente e sinceramente non so se lo farò in quanto mi è stata chiesta la documentazione da parte di una scuderia e da parte di una azienda italiana operante nel settore e per questo magari aspetterei ancora un po'...

campe89:
tra mode1 e pids mi sono già perso; mi tocca studiare a fondo.

È un argomento abbastanza vasto e complicato soprattutto se vuoi scriverti tutto il codice da 0. In alternativa (fortunatamente) ci sono delle librerie per arduino che ti facilitano molto il lavoro come questa che sembra ben fatta...

campe89:
con torque ho scoperto prima che il valore "fuel level" restituisce un valore percentuale riferito al carburante in quel momento utilizzato; potrei empiricamente trovare una proporzione per poterlo convertire nell'unità di misura che mi serve(bar).

Scusa l'ignoranza ma la tua auto ha doppia alimentazione? perchè se così fosse allora dovresti vedere prima a quale "fuel" si riferisce...
Comunque siamo tranquilli perchè se non riusciamo ad ottenere questo dato dall'ECU possiamo provarci dal sensore del metano direttamente...

Per la realizzazione dello shield puoi utilizzare lo schema elettrico della board sparkfun. Inoltre volendo puoi anche realizzare soltanto il transceiver CAN (sempre interfacciato con l'STN1110) in modo da semplificare il tutto ma poi ovviamente funzionerà soltanto con auto che utilizzano appunto questo protocollo.

x iscrizione

si la mia auto ha doppia alimentazione, ma il valore "fuel level" pare essere soltanto uno, ed in base al valore percentuale visualizzato sono risalito a quale carburante si riferiva.
detto questo credo proprio che abbandonerò l'stn a favore del mcp e magari prenderò una shield già fatta e pronta da abbinare ad arduino uno.
lo scoglio maggiore sarà la parte software che fatico a capire, ma ancora non comprendo se il display andrà collegato ad arduino, o alla shield direttamente come si vede qua http://www.skpang.co.uk/catalog/arduino-canbus-shield-with-usd-card-holder-p-706.html

Ciao, io ho fatto un lavoro molto simile sulla mia classe c del 2012, ho prelevato direttamente il segnale dai 2 sensori interessati, quello della temperatura olio e pressione turbo, da leggere sui pin analogici di arduino, per fare la scala del sensore devi leggere da obd i valori istantanei e poi dal altra parte con un tester, di solito tutti questi sensori buttano fuori voltaggio, poi con delle formule lo converti... ecco il video del mio in funzione: W204 Gauge Oil And Boost by Arduino - YouTube

Saluti Francesco. :slight_smile:

Allora mettiamola così:

  • Se vuoi utilizzare il tuo progetto con diverse auto che magari utilizzano bus dati diversi devi necessariamente utilizzare un STN1110 (o anche un ELM327 volendo) con i transceiver per tutti bus disponibili nel connettore OBD-II (ovvero ISO 9141, CAN e J1850).
  • Se vuoi utilizzare il tuo progetto soltanto sulle auto che usano il protocollo CAN puoi utilizzare l'accoppiata MCP2515 + MCP2551 (vedi shield SKPang): il primo serve a interfacciare l'arduino tramite SPI con un qualsiasi dispositivo che comunica con il protocollo CAN, mentre il secondo serve ad adattare i livelli fisici del bus CAN dell'ECU a quelli standard ovvero quelli con cui comunica il MCP2515.

Se vuoi prendere qualcosa di già fatto io ti consiglio vivamente questa che come puoi vedere, a differenza della shield SKPang, utilizza l'STN1110 e quindi è interfacciabile con tutte le ECU, ovvero è praticamente universale...

Se utilizzi la libreria che ho postato in precedenza vedrai che il software è molto semplice...

volevo chiederti un "parere" visto che sei esperto dell'argomento obd can,
la mia auto alfa 147 fa apparire nello schermino del cruscotto la stessa scritta che compare sol display della radio originale, di solito il nome la stazione radio

quasi sicuramente viene adoperato un connettore/connessione can per mandare i "dati" dalla radio al cruscotto,

volevo sapere come approfondire l'argomento pe poter utilizzare il su detto connettore per poter mandare "messaggi"
allo schermino del cruscotto tramite arduino o interfaccia/arduino
tanks

gingardu:
volevo sapere come approfondire l'argomento pe poter utilizzare il su detto connettore per poter mandare "messaggi"
allo schermino del cruscotto tramite arduino o interfaccia/arduino
tanks

su qualche forum avevo letto qualcosa a riguardo, ma credo che veniva sfruttato il modulo blue&me; appena lo trovo lo posto.

gingardu:
volevo chiederti un "parere" visto che sei esperto dell'argomento obd can,
la mia auto alfa 147 fa apparire nello schermino del cruscotto la stessa scritta che compare sol display della radio originale, di solito il nome la stazione radio

quasi sicuramente viene adoperato un connettore/connessione can per mandare i "dati" dalla radio al cruscotto,

volevo sapere come approfondire l'argomento pe poter utilizzare il su detto connettore per poter mandare "messaggi"
allo schermino del cruscotto tramite arduino o interfaccia/arduino
tanks

Ciao gingardu,
personalmente non ho mai fatto niente di simile e non so darti informazioni con certezza però dopo una rapida ricerca su google ho trovato una guida davvero interessante divisa in 2 parti che spiega come interfacciare un qualsiasi dispositivo direttamente ai comandi dell'auto: quest'aspetto è davvero interessante e se avessi avuto il tempo l'avrei approfondito ma purtroppo l'università non me lo permette. Ti consiglio di leggere attentamente il datasheet dell'ELM327 soprattutto la parte riguardante i comandi AT: li troverai tutte le informazioni utili. Da parte mia spero di trovare il tempo per poter approfondire questo a cui fino ad ora non ci avevo proprio pensato... Grazie per l'idea! :slight_smile: :slight_smile:

ok .. pero NON volevo connettermi tramite elm alla presa obd che tra laltro c'è già collegato un elm 327 blue tooth che adopero con il cellulare android con torque,

volevo "simulare" i dati che invia l'autoradio originale (una Blaupunkt) quasi sicuramente attraverso un connettore extra
a 2 fili se la memoria non mi inganna, ovviamente l'autoradio originale non c'è più che l'avevo sostituita con una più "performante" molto tempo fa, il "fantomatico" connettore è rimasto senza nessun collegamento
quindi l'idea sarebbe si simulare quello che faceva la radio su quel connettore a 2 fili (rete can ?)

ovviamente il tutto per evitare di appiccicare un altro monitor/schermino posticcio che in auto è sempre un po' un problema =(

gingardu:
ok .. pero NON volevo connettermi tramite elm alla presa obd che tra laltro c'è già collegato un elm 327 blue tooth che adopero con il cellulare android con torque,

volevo "simulare" i dati che invia l'autoradio originale (una Blaupunkt) quasi sicuramente attraverso un connettore extra
a 2 fili se la memoria non mi inganna, ovviamente l'autoradio originale non c'è più che l'avevo sostituita con una più "performante" molto tempo fa, il "fantomatico" connettore è rimasto senza nessun collegamento
quindi l'idea sarebbe si simulare quello che faceva la radio su quel connettore a 2 fili (rete can ?)

ovviamente il tutto per evitare di appiccicare un altro monitor/schermino posticcio che in auto è sempre un po' un problema =(

Oh scusa avevo capito male allora..
Anche se quel display comunicasse tramite CAN-BUS non sapremmo comunque "cosa si dicono" e comunque queste informazione le possiamo trovare soltanto nel manuale d'officina che sto provando a scaricare da ieri senza successo (alcuni archivi rar sono protetti da password)...
Per assurdo potrebbe anche essere un metodo di comunicazione completamente estraneo al CAN-BUS, non ci resta che aspettare la fine del download :slight_smile:

se può interessare ho il manuale d'officina della mia punto; è probabile che il sistema sia lo stesso.

Sono riuscito ad avere il manuale d'officina della 147 (restyling) e ho visto che la radio e il quadro strumenti comunicano tramite linea B-CAN (CAN a bassa velocità), purtroppo però non viene detto "cosa si dicono" perchè in generale alle tecnici delle officine basta avere gli strumenti che facciano questo lavoro...
A questo punto l'unica soluzione potrebbe essere stare "in ascolto", con un modulo ELM327 connesso alla porta OBD-II, e analizzare tutti i dati che vengono trasmessi. Per fare questo puoi usare la guida che ho linkato qualche post indietro... Certo è un lavoraccio ma è l'unica cosa che possiamo fare senza avere un "set di comandi"...

@campe89 come procede col tuo progetto?

Complimenti Dario Gogliandolo !!
Io sto facendo una cosa molto simile, ma per una centralina molto vecchia e non standard OBD, con reverse enginering e interpretazione del protocollo, utilizza le linee KL.
Nel tuo studio ti sei mai imbattuto in questo campo?