Si può aggiungere una porta seriale su Arduino UNO?

Buongiorno a tutti,
sperando che l'argomento non sia già stato trattato, vorrei far funzionare un sistema tipo:

  • Arduino UNO
  • display Nextion
  • modulo GPS

Sia il display che il GPS hanno una comunicazione seriale, ma Arduino UNO ha una sola porta seriale.

E' possibile convertire via software alcuni degli I/O digitali come porta seriale ?

Grazie a tutti per l'attenzione

Certamente, la cosa migliore è implementare una seconda seriale o con la SoftwareSerial o con l'ottima AltSoftwareSerial (che è decisamente superiore all'altra).

1 Like

Perfetto ti ringrazio, proverò la tua seconda soluzione.
Si può assegnare qualsiasi pin digitale immagino.

Grazie

mmm no, leggi bene la documentazione anche della SoftwareSerial standard

1 Like

Sicuramente grazie.
Più tardi do una lettura approfondita.

Sulla uno devi usare i pin 8(rx) e 9(tx), il pin 10 perde la funzione pwm.

Ciao,
ho visto che fa usare pin 8 e 9 per la seriale ma disabilita il 10 (nel mio caso) non è un problema.

Credo che oggi proverò questa soluzione per collegare il display Nextion.

La seriale integrata ad Arduino la userò per il modulo GPS (che non ho ancora acquistato) che sto ancora scegliendo tra i tanti esistenti.

Grazie

Attenzione che se usi la seriale per il GPS poi perdi la possibilità di usarla per i messaggi di debug e ogni qualvolta dovrai caricare un nuovo programma su Arduino dovrai sconnettere il GPS

Ciao,
non riesco a capire come mai, nel caso in cui dovessi caricare un programma nuovo dovrei scollegare il GPS.

Per caricare un nuovo programma, Arduino è collegato tramite USB.
Mi sfugge qualche cosa.

Grazie

Si ti sfugge che l'USB è collegata, tramite apposito adattatore, alla seriale hardware di Arduino (Pin 0 e 1) quindi se ci attacchi qualcosa che interferisce con la comunicazione l'upload del nuovo programma ha ottime probabilità di fallire.

O mamma mia…..
grazie dell’informazione comunque.
Diciamo che comunque una volta finito il tutto, non dovrei più mettere mano al programma, e ovviamente a questo punto prevedo un connettore rapido per disconnettere ciò che sarà collegato alla seriale hardware

Grazie

Il problema non è alla fine di tutto è nel mentre quando dovrai sistemare il programma affinché funzioni come desideri e senza poter debuggare è abbastanza drammatico.
Puoi seguire la strategia di collegare solo il GPS via seriale software sistemare il programma, poi fare un secondo programma e collegare via seriale software solo il display e poi unirli e cambiare la seriale in uso al GPS passando a quella hardware.
Ma la cosa più semplice potrebbe essere quella di collegare entrambe i dispositivi a due seriali software consci del fatto che la cosa ha le sue limitazioni e l'implementazione non sarà immediata ma dovrai studiare un po' le specifiche.
Oppure passa a qualche altra versione di Arduino dotato di due o più seriali hardware in modo da preservare la primaria a scopo di debug e upload software

Quello pensavo era propio di sviluppare per il display e il GPS sulla seriale software e poi alla fine spostare uno dei due sulla hardaware.

Un altro Arduino, si era un’idea che mi era venuta, potrei riprenderla in considerazione.

Tornando sull’attuale, dalla tua esperienza (io con Arduino ne ho poca), alla seriale softaware collegheresti il display o il gps ?

Grazie

Allora, intanto la AltSoftwareSerial (che è decisamente meglio della classica SoftwareSerial) si può usare SOLO per UNA porta aggiuntiva dato che ... ha i pin fissi ...

Scartata quindi la AltSoftwareSerial devi usare la SoftwareSerial che puoi istanziare più volte su pin a tua scelta leggendo attentamente il reference della libreria per capire, in funzione della scheda che si usa, i pin utilizzabili, ma ... c'è un'altra limitazione ... nel caso di più SoftwareSerial UNA sola può essere attiva in ricezione, quale lo si decide dinamicamente, ma comunque se si attiva l'una, l'altra non riceve e viceversa, quindi ...

... tieni tutto ben presente quando sviluppi il tuo codice e ricorda inoltre che, la SoftwareSerial, è affidabile sino a 9600 bps, oltre da problemi, quindi devi limitarti a tale velocità.

Guglielmo

1 Like

Per le motivazioni che ha ben indicato @gpb01 terrei sulla software il display e il GPS sulla fisica.

1 Like

.... mah ... se non deve ricevere "simultaneamnete" può anche lasciare tutto su due SoftwareSerial e passare alternativamente dall'una all'altra quando c'è da ricevere. Il 90% del tempo starà sul GPS a ricevere le coordinate e, se deve riceve da Nextion, commuta temporaneamente e poi torna sul GPS.

Guglielmo

Intanto grazie sia a te che a @fabpolli.

Il nextion in linea di massima non trasmette nulla ad Arduino, ma visualizza dati che arrivano dal GPS e da altri sensori collegati a ingressi analogici.
Quindi a questo punto proverò la soluzione SoftwareSerial.

Il problema con i Nextion che quando trasmettono se non sei in ascolto sulla seriale software nel momento della trasmissione perdi totalmente il messaggio.
Quindi finché non ci sono oggetti sul nextion che devono inviare dati ma solo ricevere non ci sono problemi, così come se ci sono pulsanti che cambiano pagina e tutta la grafica è autonoma, quindi Arduino scrive solo su oggetti globali, ma se devi comunicare con Arduino allora la doppia seriale software non è una strada percorribile

1 Like

Grazie per le idee che mi avete fornito.

Oggi ho collegato il modulo GPS sulla software serial e Nextion sulla seriale “fisica” e tutto sembra funzionare.