Show Posts
Pages: 1 ... 3 4 [5] 6 7 ... 22
61  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 26, 2014, 08:27:41 am
I riferimenti ai pin TX ed RX ci sono nelle modifiche che ti ho detto di apportare.

Per implementare la SoftwareSerial dovrebbe essere sufficiente includere la libreria SoftwareSerial.h nei file obd.h e obd.cpp, quindi dichiarare dichiarare una nuova seriale nel file obd.cpp ed aggiungere l'etichetta OBDUART nel file obd.h per mantenere la compatibilità con la libreria originale. In poche parole devi sostituire le prime 19 righe del file obd.h con queste:

Code:
#include <SoftwareSerial.h>

#define OBD_TIMEOUT_SHORT 2000 /* ms */
#define OBD_TIMEOUT_LONG 7000 /* ms */
#define OBD_SERIAL_BAUDRATE 38400
#define OBD_RECV_BUF_SIZE 80

#define OBDUART mySerial

ed aggiungere queste righe nel file obd.cpp subito dopo gli include delle altre librerie:

Code:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

Dovrebbe essere sufficiente ma non ne sono sicuro al 100%.

come vedi si presuppone che il pin RX sia il 10 e il TX sia l'11.
Il baudrate dovrebbe essere 38400 ma potrebbe non essere questo e ti tocca fare diversi tentativi.

62  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 25, 2014, 01:15:48 pm
Che problemi riscontri?
Il codice compila?
Riesci a comunicare con display e con ELM327?
63  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 25, 2014, 09:59:25 am
Ops scusa dimenticavo la questione della Software Serial.
Per implementare la SoftwareSerial dovrebbe essere sufficiente includere la libreria SoftwareSerial.h nei file obd.h e obd.cpp, quindi dichiarare dichiarare una nuova seriale nel file obd.cpp ed aggiungere l'etichetta OBDUART nel file obd.h per mantenere la compatibilità con la libreria originale. In poche parole devi sostituire le prime 19 righe del file obd.h con queste:

Code:
#include <SoftwareSerial.h>

#define OBD_TIMEOUT_SHORT 2000 /* ms */
#define OBD_TIMEOUT_LONG 7000 /* ms */
#define OBD_SERIAL_BAUDRATE 38400
#define OBD_RECV_BUF_SIZE 80

#define OBDUART mySerial

ed aggiungere queste righe nel file obd.cpp subito dopo gli include delle altre librerie:

Code:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

Dovrebbe essere sufficiente ma non ne sono sicuro al 100%.
64  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 25, 2014, 08:58:58 am
I2C ed UART sono due modi di comunicare completamente dirversi: a te interessa l'UART che per intenderci è la seriale dell'Arduino.
Una volta collegato il tutto, ammesso che i collegamenti siano giusti, puoi caricare sul tuo Arduino lo sketch rpm_led_uart.ino di quella libreria.

La richiesta che effettua quella libreria è questa:

Code:
obd.read(PID_RPM, value);

Dove:
1) obd è un oggetto della libreria OBD.h precedentemente dichiarato (riga 11);
2) PID_RPM non è altro che un'etichetta che equivale a scrivere 0x0C e che non è altro che il PID per la richiesta degli rpm del motore;
3) value è una variabile di tipo int precedentemente dichiarata (riga 25) in cui la richiesta inserirà il  numero di giri ottenuto dall'ELM327 e quindi dalla ECU.

Se per esempio volessi ottenere la temperatura del liquido di raffreddamento del motore basterebbe eseguire una richiesta in questo modo:

Code:
obd.read(PID_COOLANT_TEMP, value);

in quel programma il codice per la richiesta viene inserito all'interno di un if (riga 26): questo è molto utile perchè se la richiesta va a buon fine e l'ELM327 restituisce un valore valido allora viene eseguito il codice all'interno del costrutto if, mentre se la richiesta non va a buon fine, la funzione read della libreria restituisce 0 e quindi il costrutto il codice all'interno del costrutto if non viene eseguito.

Considera comunque che non è un argomento proprio semplice per chi non ha le basi ne di elettronica ne di informatica, quindi non ti demoralizzare se non riesci a primo colpo!  smiley-mr-green smiley-wink
65  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 25, 2014, 05:23:08 am
Ciao campe,
che problemi hai con la comunicazione seriale?
Per ottenere un dato dall'ELM327 devi ovviamente prima interrogarlo.
Nella libreria che ti ho consigliato nei primi post ci sono gli esempi e mi sembrano abbastanza chiari.
Se hai qualche problema in particolare scrivilo qui che cercheremo di aiutarti.
66  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 21, 2014, 08:47:57 am
Ciao Guglielmo,
non mi è chiara una cosa:
Ma l'inversione di livelli, nello schema elettrico del modulo, non avviene nella parte circuitale che si trova in uscita ai pin 17 e 18? Oppure l'inversione potrebbe avvenire tramite software? Perchè se l'inversione fosse causata dai transistor Q9 e Q8 non avremmo alcun problema collegandoci direttamente ai pin dell'IC...
67  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 21, 2014, 05:07:01 am
tranquillo, nessun problema.

io ho usato proprio quella libreria ma non essendo esperto la devo prendere per buona e spero vada bene.

beh quindi questo convertitore rs232/ttl -> rs232 è indispensabile? perchè se la risposta è sì, credo che abbiamo trovato il problema.

non sapendo il baud rate del mio modulo, potrei arrivarci per tentativi; è sufficiente cambiare il valore nella libreria obd.h ?
Code:
#define OBD_TIMEOUT_SHORT 2000 /* ms */
#define OBD_TIMEOUT_LONG 7000 /* ms */
#define OBD_SERIAL_BAUDRATE 38400
#define OBD_RECV_BUF_SIZE 80

ma, non è che nel mio sketch devo in qualche modo richiamare la parte seriale?

Per interfacciare quel modulo con il tuo arduino, non ti serve la conversione da ttl a rs232 ma basta collegare il pin 18 (RX) dell'elm327 al tuo TX e il pin 17 (TX) dell'elm327 al tuo RX.
Per quanto riguarda il baud rate dovrebbe essere sufficiente modificare il valore di quel define, anche se al momento non posso verificare.

EDIT:
Quella libreria si aspetta che il modulo ELM327 sia collegato alla seriale hardware. Se questa cosa non ti va bene devi modificare la libreria ed implementare la seriale software.
68  International / Generale / Re: OBD-II con ELM327/STN1110 on: February 21, 2014, 03:11:00 am
Ciao campe, scusa se non ti ho risposto via pm ma per adesso sono molto impegnato.
Qualche post indietro avevo postato una libreria che va benissimo e secondo me é pure fatta bene.
La parte circuitale che vedi fra il pin 17 e il pin 18 é un semplice convertitore da rs232/ttl a rs232. Nel tuo modulo non la trovi perché c'é collegato direttamente il modulo bluetoorh. Per quanto riguarda il baud rate generalmente é impostato di default a 38400 ma bada bene che spesso i produttori modificano questi parametri secondo le loro esigenze.
69  International / Generale / Re: Segnalazione di problemi legati al forum on: February 18, 2014, 02:35:43 am
Problema mattutino, fateci caso e ditemi se succede solo a me.

Guardate le seguenti parole:

aàeèeéiìoòuù

Io vedo come le lettere accentate ì, ò e ù siano più grosse delle altre. Siccome non so se lo fa solo a me, vi allego uno screenshot.

Confermo, sono visibilmente più grandi. Non ci avevo mai fatto caso, magari è un problema causato dagli ultimi aggiornamenti?
70  International / Hardware / Re: Scelta optoisolatore on: February 16, 2014, 09:46:55 am
Ciao Leo,
avevo pensato al partitore semplice, ma in questo caso sembrava appunto "troppo" semplice..
È vero che le tensioni superano anche i 14V ma in questo caso credo che non avvenga in quanto queste tensioni variabili di cui parlo vanno a controllare gli indicatori analogici a lancette che in teoria si aspettano segnali abbastanza veritieri. Ovviamente prima di montare il tutto verifico accuratamente le tensioni.
Hai ragione, forse è più adatto uno zener da 3.6V, in particolare il BZT55C3V6 ha come tensione di zener minima 3.4V il che vuol dire che a 3.3V non è ancora in conduzione e quindi non si crea il corto circuito.
71  International / Hardware / Re: Scelta optoisolatore on: February 16, 2014, 08:21:35 am
Sbagli nel mettere lo zener così ... è giusto dove lo hai attaccato sul partitore, ma ... l'altro capo va a GND (in parallelo a R2) ... così, se si superano i 3.3V, va in "effetto valanga" (... entra in conduzione) e praticamente fa da corto verso massa (... tranquillo, la corrente è limitata dalla R1) tagliando il limite superiore a 3.3V smiley-wink

Il pin di Arduino è direttamente collegato al partitore smiley

Guglielmo
Chiaro al 1000%, così è perfetto!
Ancora una volta grazie!  smiley-mr-green smiley-mr-green smiley-mr-green
72  International / Hardware / Re: Scelta optoisolatore on: February 16, 2014, 08:07:03 am
Ah, scusa, non avevo capito che avevi ingressi a 3.3V ...
... allora ... R1=15K, R2=4.7K e hai per 0 .. 13V in ingresso, 0 .. 3.1V in uscita, aggiungi lo zener da 3.3V e stai tranquillo smiley-wink

Guglielmo
Scusa Guglielmo ma mi sfugge qualcosa.
Se io lo zener lo collego polarizzato direttamente questo si comporta come un normale diodo mentre se lo collego polarizzato inversamente ho bisogno di una tensione maggiore della tensione di zener fra catodo e anodo in modo da avere l'uscita stabilizzata a 3.3V. Se usassi ad esempio un diodo BZX85C3V3 avrei bisogno di una tensione fra catodo e anodo Vz compresa fra 3.1V e 3.5V e quindi col partitore da te consigliato avrei i 3.3V garantiti al pin Arduino. Se invece lo collegassi polarizzato direttamente credo che non risolverebbe il mio problema perchè a questo punto l'unico effetto che otterrei sarebbe la sola caduta di tensione dovuta alla giunzione e nient'altro. Se il mio ragionamento fosse corretto allora non capisco come potrebbe, lo zener, servirmi per la tensione variabile da 0 a 12V in quanto quando la tensione prelevata dal partitore è inferiore a 3.1V, lo zener si comporterebbe come un circuito aperto... Cos'ha che non va il mio ragionamento? Dove sbaglio? Grazie per la pazienza!  smiley-mr-green
73  International / Hardware / Re: Scelta optoisolatore on: February 16, 2014, 06:02:37 am
Io farei un semplice partitore ... magari considerando la massima un po' più altra di 12V, così stai tranquillo e, comunque, mettendo sull'uscita del partitore un bel diodo zener da 5.1V che ... ti taglia qualsiasi cosa sopra questo valore e ti protegge il pin di ingresso smiley-wink

Metti ... in ingresso 0 .. 13V, partitore con R1 = 15K, R2 = 8.2K ... hai in uscita 0 .. 4.6V ... ci metti pure lo zener ... direi che stai tranquilo smiley-wink

Guglielmo

Ok ma l'Arduino Pro Mini lavora a 3.3V quindi forse è meglio mettere uno zener da 3.3V?  smiley-sweat
74  International / Hardware / Re: Scelta optoisolatore on: February 16, 2014, 05:41:32 am
Ciao Guglielmo, grazie per la risposta così veloce! smiley
Effettivamente sono dispositivi abbastanza semplici che credo vadano benissimo per la mia applicazione.
Ma per la tensione variabile cosa posso fare?
75  International / Hardware / Scelta optoisolatore on: February 16, 2014, 05:08:34 am
Buongiorno e buona domenica a tutti.
Devo interfacciare un Arduino Pro Mini a 3.3v con il quadro strumenti di una moto che funziona a 12V, in particolare voglio leggere l'accensione di alcune spie e vorrei separare completamene i due livelli di tensione. Avevo pensato ad un partitore di tensione per portare i 12V a 3.3V, ma pensavo che se per qualche strano motivo ci dovesse essere uno sbalzo di tensione potrei danneggiare l'Arduino. Ho visto che molto spesso consigliate degli optoisolatori ma non ne mai visto ne usato uno. In base a cosa devo sceglierlo? Inoltre se volessi leggere un tensione variabile da 0V a 12V su un pin analogico si può sempre usare qualche optoisolatore oppure no?
Pages: 1 ... 3 4 [5] 6 7 ... 22