Collegare 2 arduino da seriale

E' possibile collegare due schede arduino e farle 'parlare' da seriale.
Cioè da un arduino accendere dei led sull'altra scheda arduino comunicando dalla rispettiva porta seriale.

Grazie, Alberto

I pin D0 e D1 sono per le comunicazioni seriali. Se colleghi il pin TX del 1° Arduino al pin RX del 2° Arduino e viceversa, puoi fare in modo che si scambino informazioni (impostando i dovuti sketch su entrambi).

Potresti collegarle anche via i2c, che forse e' piu' interessante come soluzione e mantieni la comunicazione con un eventuale computer

Ok :slight_smile:

I due arduino dovrei collegarli con un cavo di 10/15 metri ........ non dovrei avere problemi sulla seriale vero ?

Grazie, Alberto

Se la Baudrate non é troppo alta non hai problemi.

Se usi la seriale sui pin 0 e 1 digitali non potrai piú usare l' interfaccia USB perché verrá bloccata dal collegamento col altro Arduino. Per poterla usare deci scollegare il cavo tra i 2 Arduini.
Soluzione: usare una seriale emulata via sotware.

Ciaop Uwe

Riprendo questa discussione perchè dovrei fare proprio quello indicato in oggetto.
Visto che il thread è rimasto a mezz'aria vorrei sapere cosa si intende per:

uwefed:
Soluzione: usare una seriale emulata via sotware.

C'é la libreria http://arduino.cc/en/Reference/SoftwareSerial che gestisce una seriale non implementata via HW ma via SW (programma) che puó essere usato su tutti i pin. In questo modo tieni libera la seriale per la comunicazione col PC.
Ciao Uwe

Grazie mille.
Ho dato uno sguardo alla libreria ma francamente non ho capito come fare i collegamenti.
Devo cortocircuitare i pin rx/tx su una stessa scheda arduino o nell'esempio utilizza 2 schede distinte.

Grazie

Devi incrociare i pin 0 e 1.

leo72:
I pin D0 e D1 sono per le comunicazioni seriali. Se colleghi il pin TX del 1° Arduino al pin RX del 2° Arduino e viceversa, puoi fare in modo che si scambino informazioni (impostando i dovuti sketch su entrambi).

Allora io ho collegato 2 arduino uno sui pin 2/3 invertiti (il 2 del primo sul 3 del secondo e viceversa).
Avviando lo script di esempio Software Serial Example ovviamente installato su entrambi gli arduino mi da tutti caratteri strani sulla console seriale.

Secondo voi dove posso sbagliare?

L'esempio da te citato imposta la seriale hardware a 57600. Devi settare questa velocità nel serial monitor dell'IDE.
Mentre le due seriali emulate viaggiano a 4800. A seconda della distanza puoi provare anche ad aumentare questa velocità o a diminuirla in caso di errori di comunicazione.

La velocità della console seriale l'ho abbassata a 9600 (a 57600 non funzionava anche modificando il valore nella tendina) mentre ho lasciato invariata la velocità delle seriali emulate (4800). Ma così non funziona.

Proverò ad abbassarla.

Scusa ma hai collegato i gnd dei due arduini in comune ??
Mi sembra che vada fatta questa cosa...

ops questa cosa non l'ho fatta ma il pc a cui erano collegate le arduino era lo stesso.
Domani provo.

Penso che questo possa interessarti. Io non l'ho (ancora) provata, ma mi sembra valga decisamente la pena dare un'occhiata.

pietro78:
Scusa ma hai collegato i gnd dei due arduini in comune ??
Mi sembra che vada fatta questa cosa...

Prova fatta ma nulla da fare.
Ma è mai possibile che si rilasci una libreria senza un minimo di supporto. Un esempio pratico.
Bo.

erpomata:
La velocità della console seriale l'ho abbassata a 9600 (a 57600 non funzionava anche modificando il valore nella tendina)

C'è un bug nell'IDE 1.0.1 che si manifesta scegliendo una lingua diversa dall'inglese: quando usi la versione localizzata in italiano, dal menu a tendina di scelta della velocità della porta del monitor seriale non puoi cambiare il valore ma ottieni un errore/crash della finestra e/o dell'IDE stessa.

Ah, grazie leo! Sono incappato in questo bug proprio l'altro giorno, stavo per fare una segnalazione ma mi chiedevo se fossi io a sbagliare qualcosa...

La cosa è nota e già segnalata.
Troverai la correzione nella prossima 1.0.2. :wink:

erpomata:
La velocità della console seriale l'ho abbassata a 9600 (a 57600 non funzionava anche modificando il valore nella tendina) mentre ho lasciato invariata la velocità delle seriali emulate (4800). Ma così non funziona.

Proverò ad abbassarla.

Peccato che questo thread sia rimasto appeso, mi serviva una soluzione bell'e pronta senza dover reinventare la ruota...
Proverò EasyTransfer, ma intanto voglio rispondere a questa antica domanda rimasta appesa:
il SerialMonitor e le arduino devono comunicare tutti alla stessa velocità, sennò ovviamente sul serial monitor si vedranno caratteri senza senso: se il monitor legge a 9600 bps e arduino gli spedisce dati a 4800, come fanno a capirsi???

Ma su una tratta di 15 metri 'sti segnalini da 5V non si perdono? Esiste da qualche parte una tabella che elenca diametri, lunghezze e bps possibili?