Leggere e memorizzare dati da RS232 con Arduino Mega 2560

Salve a tutti,
ho la necessità di leggere delle stringhe ascii in ingresso con arduino e salvarli su una SD.
Conosco il protocollo e la codifica della stringa ascii che mi esce da uno strumento tramite uscita RS232 e volevo ingressarla in arduino, stamparla a serial monitor e salvarla su SD.
Il mio problema è che, ho letto che il segnale dell'RS232 deve essere convertito in TTL, e per questo potrei usare un MAX232 ma, ho visto diversi schemi di collegamento, e ho una confusione pazzesca. Quali sono i giusti collegamenti tra D9 -> max232 -> pin arduino mega 2560?
Il 99% degli schemi che ho trovato in rete servono a collegare una D9 femmina, quindi l'uscita da arduino, a me serve l'ingresso, quindi una D9 maschio.
Qualcuno mi potrebbe aiutare?
Grazie
Alberto

non c'e' differenza tra il discorso maschio-femmina-direzione

Di base calcola che devi mettere il TX di chi spedisce all'RX di chi riceve, e viceversa
Essendoci di mezzo un convertitore potresti dover fare due volte lo stesso giro, incasinando il cervello :slight_smile:

Ma per fortuna non essedoci probelmi elettrici nell'inversione dei segnali puoi fare tutte le prove che vuoi, quindi inverti i segnali e vedi quando ti funziona.

cosa usi lato arduino ? puoi fare in tanti modi, un modo carino e' attaccare un lcd ad arduino e caricare uno sketch che faccia da terminale.
in questo modo leggerai sull'lcd il valore dello strumento

Quindi potrebbe andarmi bene anche questa guida?

cosa usi lato arduino ?

Ora, usando arduino mega, sto provanto a far entrare i dati su Serial1 e visualizzarli con Serial.print() però al momento non sono riuscito a far nulla.

si questo va benissimo,
e' fatto bene perche' sfrutta anche il pin 4 della 232 per resettare arduino.

Lato connettore SV2 ti metterai su pin 0 e pin 1 di arduino, per il segnale di reset, prima di entrare su pin RESET di arduino, mettici in serie un C poliestere da 100nF

Perfetto grazie,
per le prime prove vorrei basarmi su questo tutorial, per te va bene?

yes, pero' secondo me sono invertite le connessioni, se guardi c'e' tx con tx ed rx con rx, anche l'ìarduinoteam puo' sbagliare
tu ricorda che puoi invertire senza prblemi :slight_smile: fai le tue prove

Ho visto XD, provo e ti faccio sapere,
grazie mille intanto!

"Uno è lieto di poter servire" :slight_smile:

L'uomo bicentenario :slight_smile:

grande :slight_smile:
come vanno i test ?

Mi son dimenticato il max232 e l'arduino in ufficio... questo weekend riposo XD
Domani mattina mi metto sotto

Stamattina ho provato, mi sono fatto un circuitino come quello riportato nello schema di cui ho postato il link... niente da fare, non ho alcuna visualizzazione a serial monitor.

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

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

Ho usato questo sketch (il mio strumento ha un baud rate di 1200), leggendo le tensioni su Tx ed Rx in uscita dallo strumento ho rispettivamente 3,5V e 2,8 V mentre in ingresso ad Arduino ho sia su Tx che su Rx 4,5V. Mi aspetto però un andamento alternato, il mio strumento mi butta fuori un segnale ogni secondo, ma niente, la cosa sembra essere continua. Cosa posso aver sbagliato? Dello schema ImageShack - Best place for all of your image hosting and image sharing needs ho eliminato solo il condensatore C1 perché mi metteva in corto 5V e GND... in teoria non ho corti e come alimentazione 8V ho messo la classica batteria da 9V. Heeeeelp :~

spetta spetta
ma non devi mettere nessuna batteria, il chargepump e' fatto internamente, lo schema che hai seguito voleva forse utilizzare quella tensione anche per altro, ma nel gtuo caso non serve.
devi solo montare tutti i condensatori, anche il C1 (i condensatori non mettono in corto l'alimentazione, se lo fa e' in perdita)

Potrebbe essere rotto anche il chip a questo punto.
riprova :slight_smile:

Riprovato, continua a darmi corto tra 5V e GND. Ho cambiato anche il max232 per sicurezza ma non cambia la situazione. Ovviamente il tutto con batteria staccata.

che intendi per darti corto ? senza alimentazione misuri zero Ohm ? tra il pin+5V e GND ?
inizia a postare delle foto

Ecco un paio di immagini del circuitino orrendo che ho fatto con la millefori. Per corto intendo che l'ho misurato con l'apposita funzione e suona. Però ora che l'ho risaldato fa solo un beep e poi si ferma, credo sia dovuto ai condensatori. Hai qualche idea?

Tra GND e 5V misuro resistenza nell'ordine dei M ohm, quindi come se fosse un aperto... quindi in teoria dovrebbe essere corretto

si va bene come misura
ed anche il beep va bene, suona perche' il C si carica

se sei sicuro delle connessioni e delle polarita' dei condensatori (sono tutti elettrolitici controlla bene +-) purtroppo diventa difficile a distanza capire il problema.

Dalle foto dici ti sembra tutto giusto? Ho ricontrollato anche le polarità dei C ma sembrerebbe tutto ok.
Lo sketch ti sembra ok?

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

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

La rs232 entra sul max232 e dal max vado ai pin 18 e 19 dell'arduino. Se apro il serial monitori non mi da nulla, ogni tanto mi da ù oppure à ma solo quando cambio delle connessioni quindi credo si tratti solo di impulsi spuri che entrano.

il condensatore C5 ( ma dove sei andato a pescare quella configurazione del MAX232 ?? ) deve avere il polo negativo collegato al + 5 Volts.