Collegamento seriale in comune tra schede Arduino

Salve a tutti, ero indeciso se scrivere questo topic Nella categoria Hardware o Software perchè li comprende entrambi. Per un progettino sul quale sto lavorando ho bisogno di collegare più schede Arduino tra loro. Ho pensato subito alla soluzione i2c, ma se volessi semplificare la comunicazione, posso effettuare i collegamenti tramite protocollo seriale collegando in parallelo TX e RX? Provo a spiegarmi meglio... Ho una board Arduino centrale, e voglio collegare ad essa 20 board Arduino; Posso collegare tutte le board nella stessa porta seriale?

E' un dubbio al quale non so dare risposta...

Grazie, Ivan

La risposta è NO, ma puoi farlo interponendo un adattatore da Seriale a RS485 ... tipo QUESTO ... creando un bus half-duplex 485 ... ;)

Ovviamente poi dovrai gestire la logica di colloqui via software ... XD

Guglielmo

Ciao e grazie della risposta. Quindi probabilmente mi conviene comprendere come utilizzare il protocollo I2C con Arduino? Ho studiato il protocollo e come deve avvenire la comunicazione, ma nella pratica non capisco molto come impiegarlo...

Il protocolo I2C, salvo non utilizzare dei chip di bus-externder, è fatto per collegamenti molto vicini ... qualche decina di cm.

Inoltre ... sicuramente, di base, Arduino da fa "master" ... mentre per fargli fare da "slave" ... devi andare a cercare qualche libreria apposta.

Se i collegamenti sono di una certa lunghezza e non vuoi problemi ... la soluzione migliore è la RS485 ;)

Guglielmo

gpb01: Il protocolo I2C, salvo non utilizzare dei chip di bus-externder, è fatto per collegamenti molto vicini ... qualche decina di cm.

Inoltre ... sicuramente, di base, Arduino da fa "master" ... mentre per fargli fare da "slave" ... devi andare a cercare qualche libreria apposta.

Se i collegamenti sono di una certa lunghezza e non vuoi problemi ... la soluzione migliore è la RS485 ;)

Guglielmo

Sono sicuro che hai ragione, perciò utilizzerò la RS485 8) Utilizzerò questi convertitori: http://www.aliexpress.com/item/FREE-SHIPPING-10PCS-LOT-MAX485-module-RS485-module-TTL-turn-RS-485-module-MCU-development-accessories/1095900156.html

Adesso non mi resta che studiarmi il protocollo e il modo in cui avviene lo scambio. Devo collegare un convertitore ad ogni Arduino, giusto?

A presto, Ivan

Si, te ne serve UNO per ogni Arduino ... ... il protocollo lo devi scrivere TU ... quello sono solo degli adattatori di livello in grado di andare in three-state e basta ... non hanno logica a bordo.

In pratica dovrai definire un Master che ciclicamnete interroga e gli slave, uno ad uno rispondono.

Quindi ... tutti stanno in ascolto (il pin RX è sempre attivo) mentre quello interrogato, attiva il TX e risponde, dopo di che lo disattiva immediatamente.

Il grande vantaggio della 485 è che, se i collegamenti sono fatti bene, è immune da disturbi anche su distanze notevoli ;)

Guglielmo

P.S. : Guardati i datasheet degli adattatori e come mettere le resistenze di terminazione ... mi raccomando ...

e nel codice prevedi dei piccoli tempi morti tra il TX e l'RX e viceversa, che la commutazione del pin R/D non è immediata (non mi ricordo in che ordine di tempo), sicuramente c'è qui chi sa dirti di preciso, altrimenti ti perdi dei dati.