2 seriali con Arduino UNO

Buongiorno
Devo realizzare un convertitore di protocollo su delle stringhe
Praticamente devo leggere una stringa da un cronometro
modificarla e adattarla
e scriverla in out verso un tabellone (display THS)
mi servono quindi 2 seriali....
Cosa posso usare come shield seriale aggiuntiva?
come devo montarla? e come la definisco nello sketch? Grazienda per i suggerimenti
Grazie per l'aiuto, è un progetto molto importante per me è i miei colleghi (siamo della FICR)

Maury

Puoi usare la seriale hardware per scrivere sul tabellone così da vedere i messaggi su monitor seriale durante il debug e lo sviluppo, e usare una seriale software per ricevere i dati dal cronometro, documentati qui.
Se invece vuoi lasciare libera la seriale hardware puoi usare due seriali software usando (per una delle due) la libreria alternativa AltSoftSerial in modo da gestirne due distine

MauryM:
Praticamente devo leggere una stringa da un cronometro
modificarla e adattarla
e scriverla in out verso un tabellone (display THS)
mi servono quindi 2 seriali....

Se da una leggi solamente e dall'altra scrivi solamente, come mi pare di capire, non te ne servono due ma ti basta usare una seriale (magari software, se non hai velocità oltre 38400 meglio se inferiore, tra 9600 e 18200) e collegare RX e TX separatamente (con GND comune ovviamente)... :wink:

PS: verifica pure che siano seriali TTL (0-5V) e non RS232 perché in tal caso ti servirebbe un convertitore...

Grazie ad entrambi
Dato che sono un principiante
Potete dirmi la differenza tra seriali software e hardware?
Che Pin usano?

Mi consigliate una shield? Se ne possono montare 2 hardware?
Si, da una leggo solo e sull'altra scrivo solo e vorrei usare una le 20x4 per mostrare cosa mando

Scusate se ... rompo

MauryM:
Potete dirmi la differenza tra seriali software e hardware?
Che Pin usano?

La seriale hardware è gestita dall'hardware della MCU, è più veloce, impegna di meno la MCU stessa e, su Arduino UNO, utilizza i pin 0 ed 1.

La seriale software, come dice il nome, è un programma che simula una seriale e serve a creare una seconda seriale, su una coppia di pin scelti dall'utente, totalmente gestita da software, quindi, meno veloce, impegna di più la MCU, utilizza i pin scelti dall'utente (consigliati pin 10 RX e pin 11 TX) ed è l'unico modo per avere una seconda seriale su MCU che ne hanno una sola.

MauryM:
Mi consigliate una shield? Se ne possono montare 2 hardware?
Si, da una leggo solo e sull'altra scrivo solo e vorrei usare una le 20x4 per mostrare cosa mando

Nessuna shield ... casomai una libreria, la SoftwareSerial per creare una seconda seriale via software.

Guglielmo

Oppure usa una scheda con due seriali hardware invece della UNO.

MauryM:
Si, da una leggo solo e sull'altra scrivo solo e vorrei usare una le 20x4 per mostrare cosa mando

Non c'è problema, se usi un display 20x4 su I2C (che consiglio) hai ancora meno problemi perché usa solo 2 pin.

Comunque devi verificare le caratteristiche tecniche "fisiche" delle seriali, ossia, come detto, devono essere TTL (il segnale deva andare da 0V, bit basso, a 5V, bit alto) altrimenti serve un adattamento di livelli (per il quale, una volta che avrai le informazioni, possiamo provare a consigliarti).

Inoltre devi anche verificare il protocollo seriale ossia velocità (e se fissa o si può impostare), bit di parità, stop, eccetera. Tutte informazioni che chi conosce quegli apparati può dirti o fornirti i relativi datasheet, oppure se li trovi tu posta qui i link e poi cerchiamo di darti noi una mano.

Ah, ovviamente per usare solo una porta seriale devi avere la stessa velocità (baud) su entrambe, se lavorano a velocità differenti ti serve comunque una seconda seriale che non è assolutamente un problema se colleghi a questa la seriale con velocità inferiore (come detto, fino a 9600 o 19200 va bene, già 38400 è un po' troppo al limite, oltre quello non si può).

Avrei questa che mi hanno regalato, va bene?
Come la collego?
Se ne potrebbero montare 2?
E sopra il 20x4 lcd?k

Quella è solo una scheda che converte i segnali seriali di livello RS232 in segnali seriali di livello TTL, ma NON aggiunge alcuna porta, trasla solo dei livelli di tensione.

Ti è già stato chiesto, da COSA devi leggere via seriale, ovvero, l'oggetto da cui devi leggere, che tipo di porta seriale ha? Occorrono le specifiche esatte o si rischia di fare solo danni ... ::slight_smile:

Guglielmo

Devo leggere da un cronometro che ha rs232 -12 +12 v
E scrivere su un display con stesso tipo di porta
Ma la shield indicata ha un connettore rs232 , quindi posso programmarla e usarla

Se non sai i parametri di trasmissione non ne siamo sicuri

Comunque ci sono schedine meno costose e più flessibili, cerca "rs232 ttl arduino", ne trovi anche da meno di 1 euro

Ti conviene, prima di cimentarti con la programmazione di arduino:
1 provare a comperare due convertitori rs232-ttl, collegarli tra loro lato ttl e provare a usarli come fossero una prolunga rs232

Se riesci a far andare la comunicazione così passi a

2 collegare un arduino tra i due convertitori

E li comincia la salita

Avvisa quando sei al punto 1

Ho parlato

Quella shield sembra quella prodotta/venduta da Seeedstudio, qui i dettagli e poi il loro wiki:

Quella shield può essere utile per leggere da quel dispositivo seriale a 12V verso arduino.
Ma come detto da Guglielmo non aggiunge una seriale. Si collega ai pin di arduino sembra tramite ponticelli. Alla domanda si possono mettere + shield una sopra l'altra dicono di si, penso cambiando i ponticelli, una può essere seriale hw (Serial) e l'altra usi la libreria SoftwareSerial usando pin diversi da 0 e 1.
Questo è quello che ho capito io dal sito di seeedstudio.

Immagino che quando parla di sovrapporre più shield, intenda shield di vario tipo e, in tal caso, la risposta è si, a patto che non utilizzino gli stessi pin di I/O e non creino conflitti.

Guglielmo

No Guglielmo, proprio la stessa shield, tanto la mappatura del suo maxrs232 verso i pin di Arduino la decidi tu con i ponticelli sulla shield stessa. Per un principiante può essere semplice da usare, credo.

nid69ita:
..Per un principiante può essere semplice da usare, credo.

Su questo non concordo, su tutto il resto si

Allo OP sono stati consigliati, ad ottobre, degli adattatori di livello su schedina separata

Con quelli può veramente partire un passo alla volta

Se attacca subito con due shield, 4 ponticelli, protocolli, velocità, parita stop, connettori maschi femmina, apparati dte dce ... rischia di non uscirne

Come ho detto prima: due convertitori, incrociati lato ttl, in mezzo al cavo esistente tra i due apparati funzionanti

E già così non è garantito che riesca, sono da considerare handshaking hardware, apparati DTE o DCE, connettori db9 da maschio a femmina

Figuriamoci se a questi problemi aggiungiamo arduino, velocità e ponticelli (oltre al programma ancora da scrivere)

Comunque io mi sono pronunciato e quindi adesso aspetto

nid69ita:
No Guglielmo, proprio la stessa shield ...

Cambia poco di che shield parliamo, resta sempre valido quanto ho scritto. :slight_smile:

Se ha bisogno di due porte RS232 (... ma ne ha bisogno, o da un lato è RS232 e dall'altro TTL?) monta due di quelle shield usando pin differenti ...

Ma, come giustamente indica Standardoil, tutto il resto è noto? Caratteristiche della seriale, protocollo, ecc. ?

Guglielmo

Grazie a tutti
Cmq volevo chiarire che il cronometro lo collego con un comune cavo rs232 al PC su cui girano programmi ad hoc per leggere dati e inviare comandi
Ad u n portatile lo collego con normale codino usb-rs232
E tutto funziona
Proverò la Shilld della seeed che ho già
Provare con 2 ttl collegate non sono capace
Grazie di nuovo

gpb01:
Se ha bisogno di due porte RS232 (... ma ne ha bisogno, o da un lato è RS232 e dall'altro TTL?) monta due di quelle shield usando pin differenti ...

Guglielmo

Si, ne ha bisogno

Deve fare il 'man in the middle' in una comunicazione bidirezionale esistente

Quindi due seriali rs 232f

Standardoil:
Deve fare il 'man in the middle' in una comunicazione bidirezionale esistente

OK !!!

Guglielmo

1 provare a comperare due convertitori rs232-ttl
Cosa mi consigliate? Indicate mi un modello