Come leggere RS232 con Arduino tramite MAX232

Qualcuno sa come devo fare per collegare la porta RS232 del PC al mio Arduino?

Ho letto che devo usare un convertitore come MAX232 e realizzare un circuito con 5 condensatori...ma non riesco a farlo funzionare: continua a spararmi una raffica di zero e di 128 senza logica apparente...

Benvenuto. :slight_smile:
Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! (Part 1) - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Posta una foto, un disegno dei collegamenti che hai fatto. Oppure ci dici dove abiti e veniamo a vedere come hai fatto i collegamenti :grin:

  1. Prima studiati il datasheet del componente ...

  2. Guardati come è suggerito di usarlo a pag. 7 del datasheet

  3. Se non sei in grado di studiare/capire un datasheet ... allora è meglio che compri uno shield già fatto come QUESTO

Guglielmo

nid69ita:
Posta una foto, un disegno dei collegamenti che hai fatto. Oppure ci dici dove abiti e veniamo a vedere come hai fatto i collegamenti :grin:

Questa è la foto del circuito che ho realizzato e questo è lo sketch:

void setup() {
// initialize both serial ports:
Serial.begin(9600);
Serial1.begin(9600);
}

void loop() {
// read from port 1, send to port 0:
if (Serial1.available()) {
int inByte = Serial1.read();
Serial.write(inByte);
}

// read from port 0, send to port 1:
if (Serial.available()) {
int inByte = Serial.read();
Serial1.write(inByte);
}
}

Il cavo arancione va a GND mentre il cavo nero va a TX della DB9 (rispettivamente il primo e il terzo della fila da cinque)

e queste sono altre due foto da altre angolazioni.

Nid ti ha chiesto anche :

nid69ita:
un disegno dei collegamenti che hai fatto.

... ovvero lo schema esatto di cosa e come hai collegato, che con le foto si capisce poco.

Guglielmo

Salvo errori nelle connessioni, questo è lo schema che ho seguito:

Ok, allora ricontrolla bene i collegamenti ... e ... occhio, quello schema è per un DB9 femmina ... tu stai usando quello o il DB9 maschio ?

Guglielmo

SEI UN GRANDE!
Non so come hai fatto a pensarci ma ero talmente concentrato sul circuito che non ho guardato minimamente il collegamento con DB9.
Adesso funziona.
Grazie infinite.

nid69ita:
Posta una foto, un disegno dei collegamenti che hai fatto. Oppure ci dici dove abiti e veniamo a vedere come hai fatto i collegamenti :grin:

Ragazzi, questa non è solo una battuta.
Avete visto, solo dando tutte le informazioni (foto, schema, codice, etc.) vi si può aiutare pienamente.
Capito @elletiz? :wink:

Lo so qualcuno strorgera' il naso gridando all'eresia, al pressapochismo!
Potrei convincervi che non e' frutto del caso, ma di una serie di considerazioni, ma questo non è oggetto del mio intervento.
Posso garantirvi che da una vita uso questo tipo di schema e non mi ha dato mai problemi.

Pur riconoscendo alla soluzione con il MAX qualcosa di piu' rispettoso degli standar, la mia alternativa è piu' semplice, meno componenti, ed e possibile utilizzre qualsiasi tipo di inverter.
Quelli che ho proposto (40106 o 74C14) hanno avuto il favore perche' ne ho sempre sopra il tavolo e puoi farci di tutto.

Lo schema in particolare l'ho sviluppato per usare la tradizione RS232 per programmare Arduino. Provare per credere.

Ovvio per chi ha bisogno solo dell'interfaccia Rx/Tx puo' ommettere l'inverter che fa capo al pin DTR, mantenendo pero' l'alimentazione al pin 14.
I tre restanti inverter sono collegati in cascata giusto per garantire un ingresso certo, per evitare auto oscillazioni.

inverter.jpg

elletiz:
SEI UN GRANDE!
Non so come hai fatto a pensarci ma ero talmente concentrato sul circuito che non ho guardato minimamente il collegamento con DB9.
Adesso funziona.
Grazie infinite.

XD ... quando ho visto lo schemino con il DB9 ... mi è venuto subito il dubbio ... purtroppo è una svista piuttosto comune il "guardare il connettore dal lato sbagliato" :grin: :grin: :grin:

Sono contento che ora ti va tutto ! :wink:

Guglielmo

overmike:
Posso garantirvi che da una vita uso questo tipo di schema e non mi ha dato mai problemi .....

Non ne dubito ... XD ...
... ma trovo così comodo e semplice il MAX232 ... :grin:

E poi scusa ... le tensioni a norma RS232 (-12V MARK / +12V SPACE) come le generi tu ? Il MAX se le genera con una "charge-pump" che nel tuo schema non vedo ... :roll_eyes:

Guglielmo

Non la genero!
Ecco la semplicità dell'interfaccia che si alimenta direttamente da Arduino.
Probabilmente sulle lunghe distanze i +12/-12 danno più garanzie, ma sull'ordine della decine di metri i 0-5V sono sufficenti e posso garantirlo.

La vecchia serie dei GPS Garmin, quando non avevano la porta USB, ma solo la RS232, utilizzavano un livello di tensione 0-5V per trasferire le cartografie a 115200baud.

Mah ... non so con cosa ti colleghi tu di solito, ma se vuoi un qualche cosa che sia standard, affidabile e che garantisca la compatibilità con la VERA RS232 ... non hai alternative ... i segnali devono esser sopra e sotto lo zero e, a norme, attorno ai -12 / +12 ... :roll_eyes:

Insomma, gli standard sono standard ... la tua NON è affatto una EIA RS-232 ... ma rimane sempre e solo una Seriale TTL !

Guglielmo

Lo so qualcuno strorgera' il naso gridando all'eresia, al pressapochismo!

Era scontato che arrivasse la contestazione.

Questa domanda dovresti farla prima a Garmin, visto che ha adottato per anni tale soluzione

Comunque per chi cerca semplicità e funzionamento garantito, 4 resistenze e un IC ed il gioco e' fatto.
Resto a disposizione per dare ogni supporto.

Renzo

overmike:

Lo so qualcuno strorgera' il naso gridando all'eresia, al pressapochismo!

Era scontato che arrivasse la contestazione.

No, nessuna contestazione, pretendo solo che si chiamino le cose con il loro nome ... quella è una seriale con livelli TTL, una EIA-RS232 è semplicemente un'altra cosa ... XD

E magari con il tuo garmin potrà anche funzionare, ma ti posso portare un infinità di altri apparecchi che invece non andranno.

Quindi ... è quello che è ... una circuito che a te risolve sicuramente un problema, ma che non si può certo definire un adattatore EIA RS-232 ... che è invece è tutt'altro.

Tutto qui ... :slight_smile:

Guglielmo

Allora vediamo di far chiarezza sul mio intervento:

  1. Non ho mai affermato che il mio adattatore e' conforme allo standar EIA RS-232
  2. All'inizio del post ho evidenziato la differenza tra le due soluzioni.

Pur riconoscendo alla soluzione con il MAX qualcosa di piu' rispettoso degli standar, la mia alternativa è piu' semplice, meno componenti, ed e possibile utilizzre qualsiasi tipo di inverter.

  1. Mi sono reso disponibile a dare supporto per ogni problema
  2. Mi sembra un po forte come affermazione. Garmin non ha venduto solo a me i suoi prodotti, per sua fortuna

E magari con il tuo garmin potrà anche funzionare.

Ora vediamo di analizzire alcuni numeri della EIA 232:
Sezione TX ( +12/-12V).

  • Le seriali a bordo PC arrivano poco sopra i +10/-10V
  • Il MAX232 arriva appena a +7/-7
  • Le seriali dei modem GSM superano di poco +3/-3

Sezione RX
A partire dai mitici SN75189 (QUADRUPLE LINE RECEIVERS) installati sui PC fino alla classe 80486, passando per i MAX232 e terminando con i convertitori USB/RS232 le tensioni in ingresso sono rimaste pressoche' uguali.
Vit+ = 1.7V (2.4V)
Vit- = 1.2V (0.8V)

Come puoi notare, non sono definiti valori negativi. Sono livelli di tensione che puoi tranquillamente controllare con un uscita TTL, meglio ancora se CMOS come il CD40106.

Io chiedo a chi ci sta osservando, perche' dovrei complicarmi la vita a generare i livelli di tensione prescritti da EIA (+/-), quando possiamo ottenere risultati analoghi da un uscita CMOS?

Quando in maniera "bislacca" si definisce "seriale livello TTL", non si intende tanto il livello di tensione (che TTL non e', perche' quasi sempre e' CMOS), quanto la necessita' di dover invertire il segnale sia in ingresso che in uscita, prima di applicarlo a rispettivi pin.

Per concludere, rispetto la libera critica e avrei trovato costruttivo la possibilità di instaurare un confronto sulla funzionalità del mio progetto.
Resto davvero sorpreso dall'accanimento che hai avuto verso la mia proposta, ancor prima di chiedere ragguagli, hai sentenziato il mancato rispetto alla normativa EIA (quando l'avevo gia anticipato) e che il mio convertitore non sarebbe stato affidabile o peggio.

Per me la discussione si chiude qui, e lascio al moderatore eventuale intervento.

max232_.pdf (216 KB)

overmike:
Resto davvero sorpreso dall'accanimento che hai avuto verso la mia proposta, ancor prima di chiedere ragguagli, hai sentenziato il mancato rispetto alla normativa EIA ...

Hai problemi particolari ??? :astonished:

Perché ... prima sei convito che io ti stessi contestando, poi ora sei convinto che io mi stia accanendo sul tuo progetto ...
... forse non ti è chiara una cosa ... di quel progetto NON ME NE PUO' FREGARE DI MENO.

Quello che mi interessa è che qui si aiuti una persona che sta iniziando, come elletiz e ... lo si aiuta insegnandogli le basi nel rispetto delle norme (... delle quali sembra tu ti ostini ad ignorare l'esistenza).

Uno che inizia deve imparare i fondamenti e deve imparare che esistono delle regole e delle norme ... poi, quando sarà esperto, potrà anche scoprire che queste regole e queste norme possono essere infrante ... ma all'inizio no ... perché gli si confondono solo le idee.

Tutto qui.

Guglielmo