Go Down

Topic: Leggere e memorizzare dati da RS232 con Arduino Mega 2560 (Read 6806 times) previous topic - next topic

Brunello

Certamente, basta collegare insieme il TX e Rx dal lato che va' allo strumento, e quello che invii con il Serial monitor te lo rimanda indietro

9six4

Scusa brunello ma non ho mica capito... devo cortocircuitare Rx e Tx quindi pin 11 e 12 del max 232 e poi? Porta pazienza, sarà il sonno  :)

Brunello

11 e 12 sono dal lato Atmega
Devi cortocircuitare il 13 e 14. In pratica i due fili che vanno allo strumento.
Poi, apri il SerialMonitor e i caratteri che digiti te li deve replicare.


Testato

scusa ma lui ha lo strumento connesso alla seconda seriale, il serial monitor funziona sulla prima seriale.
quindi il loopback non funziona
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH


Brunello

@testato - Vero, hai perfettamente ragione. Non ci avevo fatto caso.

Si, per provare il circuito e' d'obbligo spostare il tutto sulla serial

9six4

Quindi lo sketch diventa il seguente?

Code: [Select]
void setup() {
  // initialize both serial ports:
  Serial.begin(1200);
}

void loop() {
if (Serial.available()) {
    int inByte = Serial.read();
    Serial.write(inByte);
  }
}


E collego Rx e Tx sulla seriale principale quindi pin 0 e 1?

Brunello

Si
e ricorda di impostare 1200 baud sul serial monitor

9six4

Ciao a tutti,
allora, da dove cominciare... ho ricostruito il circuitino col max232, cambiando i collegamenti al C5. Dopodichè ho collegato il tutto ad Arduino come consigliato da brunello, cortocircuitando i pin 13 e 14. A serial monitor mi replica perfettamente ciò che digito.
Fatto ciò ho collegato Rx e Tx sui pin 18 e 19 di Arduino mega e ho lanciato lo sketch. Sembra leggere qualcosa, però sono caratteri che non significano nulla.
Il problema credo sia il dato che mi entra sull'arduino, ovvero una stringa ASCII di 32 caratteri. Devo in qualche modo "tradurla" prima di visualizzarla a serial monitor?

9six4

Questo è il dato che visualizzo.... poi una marea di spazi e di nuovo un dato simile...


ratto93

Prova a cambiare la velocità del serial monitor...
Se corri veloce come un fulmine, ti schianterai come un tuono.

9six4

Ho provo tutte le velocità ma niente da fare... non centra nulla il fatto che la stringa sia un con ASCII 32 caratteri?

Testato

#42
May 15, 2012, 10:07 pm Last Edit: May 15, 2012, 10:09 pm by Testato Reason: 1
e' forse il dato esatto ?
controlla sulla tabella ascii a che numeri corrispondono quei caratteri e vedi se hanno senso rispetto alla misura che stai facendo
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Brunello

Quelli sono caratteri che vengono fuori da un errato baud rate.
Invece che Serial.write prova ad usare Serial.print (inByte,DEC);

ti restituisce il valore in decimale del carattere.

Domanda: Sai mica cosa dovrebbe arrivare dalla lettura?

9six4

Questo è lo schema della stringa a 32 caratteri:

• byte 0 tipo di sonda: termocoppia K (k)
• bytes 1, 2 canale di misura: T1, T2, T1-T2 (Td)
• byte 3 modalità di misura: normale ("blank"), relativa
(R), media (A), media fatta (a)
• byte 4 modalità operativa: Hold (H), richiamo memoria (M)
• byte 5 carattere "blank"
• bytes 6-10 misura: lettura (XXX.X o "blank" XXXX), fuori scala
(OVRG blank), nessun dato ("blank" ----)
• byte 11 unità di misura della temperatura: C, F
• byte 12 carattere "blank"
D i s p l a y   s e c o n d a r i o ,   p o r z i o n e   s i n i s t r a
• bytes 13, 14 descrizione delle informazioni: temperatura bassa
(Lo), T1 (T1)
• byte 15 carattere "blank"
• bytes 16-20 misura: lettura (XXX.X o "blank" XXXX), fuori scala
(5 "blank"), nessun dato ("blank" ----)
• byte 21 carattere "blank"
D i s p l a y   s e c o n d a r i o ,   p o r z i o n e   d e s t r a
• bytes 22, 23 descrizione delle informazioni: temperatura alta
(Hi), T2 (T2)
• byte 24 carattere "blank"
• bytes 25-29 misura: lettura (XXX.X o "blank" XXXX), fuori scala
(5 "blank"), nessun dato ("blank" ----)
• byte 30 <CR>
• byte 31 "line feed


Go Up