rs422 full duplex

Potresti tirare un'altra coppia di fili fra gli Arduino che devono comunicare tra di loro, creando quindi una seconda RS485 che serve solo queste 2 schede.

Il problema e che con alcuni moduli ci dovrebbero parlare praticamente quasi tutti ... Possibile che non ci sia una soluzione (anche non rs485/422) in cui ho una rete che sia plug and play in cui tutti parlino con tutti!

Help me!

Sull'I2C puoi avere una configurazione multimaster ma il problema è che con questo protocollo non ci fai molta strada: si parla di decine di cm, metri se hai fortuna, anche se alcuni riferiscono connessioni più lunghe questa non è comunque la regola (l'I2C è nato per far dialogare dispositivi sulla stessa scheda o comunque fra schede interconnesse).

Le soluzioni possibili sono due, I2C e CAN, per la prima non ti serve hardware aggiuntivo però ci sono dei grossi limiti sulla lunghezza delle connessioni, o meglio il limite è la capacità totale della linea che non deve superare i 400 pf e questo penalizza molto la lunghezza dei cavi e il numero di device collegabili al bus.
Il CAN bus è la soluzione ottimale, velocissimo e senza problemi di lunghezza cavi visto che possono essere anche di centinaia di metri, però non puoi gestirlo nativamente da Arduino, devi usare appositi IC che ti forniscono sia la parte trasceiver che lo strato più basso del protocollo software.
Una buona soluzione per implementare il CAN bus su Arduino, senza gravare troppo sul micro, è utilizzare l'abbinata MCP215 (CAN controller) e MCP2551 (CAN trasceiver) esistono delle shield con questi IC e relative librerie per l'utilizzo.

ma con xbee e un mash network non si potrebbe fare?
Complimenti per la promozione Leo :wink: .

BrainBooster:
ma con xbee e un mesh network non si potrebbe fare?

Volendo si.

ma con xbee e un mash network non si potrebbe fare?

Io propenderei per il CAN suggerito da astrobeed. Mi pare più economico e meno soggetto a distrubi esterni. Confesso che non conosco la sensibilità di xbee ai distrurbi, ma poichè si tratta di una applicazione abbastanza mission critical (bruschetta parlava di un valore di migliaia di euro...) eviterei di correre rischi.

Rifletterei inoltre ancora un po' sulla soluzione I2C. Dovendo controllare un acquario, quindi un sistema relativamente piccolo dove i diversi arduino saranno probabilmente posizionati molto vicini tra loro (se poi mi sbaglio, bruschetta mi correggerà...) magari la lunghezza del bus non è così critica. Inoltre esiste il P82B715 che è un I2C extender che potrebbe aiutare qualora fosse necessaria una lunghezza del bus maggiore.

vittorio68:
Rifletterei inoltre ancora un po' sulla soluzione I2C. Dovendo controllare un acquario, quindi un sistema relativamente piccolo dove i diversi arduino saranno probabilmente posizionati molto vicini

Dal punto di vista realizzazione la soluzione basata su I2C è quella più semplice ed economica, tutte le schede Arduino dispongono di questo bus e basta collegarlo con un cavo, poi c'è il discorso della I2C multimaster che se non mi ricordo male dovrebbe già esserci una libreria dedicata.
Però c'è un "piccolo" problema, la gestione I2C di Arduino non è affidabile, ovvero in caso di errori sul bus c'è il reale rischio di trovarsi con il bus bloccato e nessuno può più comunicare, peggio ancora lo sketch rimane fermo in eterno in attesa di un qualcosa che non arriverà mai, cose che avrebbe effetti disatrosi sull'acquario, è possibile risolvere però tocca scriversi delle proprie routine di gestione I2C che non siano bloccanti in caso di errore e stabilire un modo di autoripristino, ovvero c'è molto lavoro software da fare.

astrobeed:
Le soluzioni possibili sono due, I2C e CAN, per la prima non ti serve hardware aggiuntivo però ci sono dei grossi limiti sulla lunghezza delle connessioni, o meglio il limite è la capacità totale della linea che non deve superare i 400 pf e questo penalizza molto la lunghezza dei cavi e il numero di device collegabili al bus.
Il CAN bus è la soluzione ottimale, velocissimo e senza problemi di lunghezza cavi visto che possono essere anche di centinaia di metri, però non puoi gestirlo nativamente da Arduino, devi usare appositi IC che ti forniscono sia la parte trasceiver che lo strato più basso del protocollo software.
Una buona soluzione per implementare il CAN bus su Arduino, senza gravare troppo sul micro, è utilizzare l'abbinata MCP215 (CAN controller) e MCP2551 (CAN trasceiver) esistono delle shield con questi IC e relative librerie per l'utilizzo.

prima di tutto ti ringrazio per l'auto che mi stai dando ...

secondo avresti qualche link delle librerie e di qualche esempio di trasmissione? tanto a me serve solo che invi un macro comando poi il ricevente effettua tutte le operazioni ...

per adesso grazie :slight_smile:

allora ragazzi ...

i2c non è possibile in quanto l'attrezzatura tante volte si trova anche a molti metri di distanza ... vi spiego meglio ... l'acquario marino ha bisogno (solitamente) di tre vasche:

  1. Acquario
  2. Vasca tecnica (dove vengono allogiate le attrezzature)
  3. Vasca di Ripristino acqua evaporata

Molti malati (nel buon senso della parola) hanno l'Acquario al piano di sopra e la vasca tecnica al piano di sotto ...

Riguardo agli Xbee cercando in rete mi è sembrato che anche qui serve per forza un coordinatore ma in questo sistema potrebbe non esserci (dipende se uno compra tutto il sistema subito) ...

:slight_smile:

Bruschetta:
Molti malati (nel buon senso della parola) hanno l'Acquario al piano di sopra e la vasca tecnica al piano di sotto ...

ma per "piano" intendi il piano della casa oppure "livello", cioè prendendo come esempio un mobile, la vasca acquario sul ripiano superiore e la vasca tecnica sul ripiano inferiore? Se la distanza è di circa mezzo metro con l'I2C dovresti farcela.

Bruschetta:
Riguardo agli Xbee cercando in rete mi è sembrato che anche qui serve per forza un coordinatore ma in questo sistema potrebbe non esserci (dipende se uno compra tutto il sistema subito) ...

Il coordinatore è uno, ma anche più di uno, dei moduli Xbee in rete, serve per gestire le comunicazioni tra i moduli.
In pratica un mesh network Xbee è composto da almeno due moduli Xbee serie 2, uno è il coordinatore e l'altro un router, puoi inserire molti altri router e altri coordinatori nella rete, tutti i moduli Xbee possono parlare tra di loro e ricevere comunicazioni broadcast, cioè quello che viene trasmesso da uno arriva a tutti gli altri.
Per il CAN ti conviene iniziare dal topic messo in evidenza sul blog di Arduino che ti avevo linkato http://arduino.cc/forum/index.php/topic,8730.0.html, li trovi anche le librerie, se opti per l'utilizzo della coppia MCP2515 (controller) e MCP2551(transceiver) praticamente hai il 95% del carico di lavoro svolto dal 2515, che in realtà è un micro preprogrammato per gestire il protocollo CAN.
Come puoi vedere nella foto del topic che ti ho linkato i due IC esistono anche in formato pdip il che ti semplifica molto la loro integrazione su una tua shield se non vuoi "combattere" con gli SMD.

no intendo piano di casa :slight_smile:

conta che la vasca tecnica oltre a contenere l'attrezzatura deve anche contenere l'eventuale acqua che scende in caso di black out ... conosco persone che hanno acquari di 1000/1500 litri :slight_smile:

vi sto facendo un corso accellerato sull'acquario di barriera :slight_smile:

astrobeed:
Il coordinatore è uno, ma anche più di uno, dei moduli Xbee in rete, serve per gestire le comunicazioni tra i moduli.
In pratica un mesh network Xbee è composto da almeno due moduli Xbee serie 2, uno è il coordinatore e l'altro un router, puoi inserire molti altri router e altri coordinatori nella rete, tutti i moduli Xbee possono parlare tra di loro e ricevere comunicazioni broadcast, cioè quello che viene trasmesso da uno arriva a tutti gli altri.

Cercando su wiki:

Ci sono tre differenti tipi di dispositivo ZigBee:

-ZigBee Coordinator (ZC): è il dispositivo più "intelligente" tra quelli disponibili, costituisce la radice di una rete ZigBee e può operare da ponte tra più reti. Ci può essere un solo Coordinator in ogni rete. Esso è inoltre in grado di memorizzare informazioni riguardo alla sua rete e può agire come deposito per le chiavi di sicurezza.

-ZigBee Router (ZR): questi dispositivi agiscono come router intermedi passando i dati da e verso altri dispositivi.

-ZigBee End Device (ZED): includono solo le funzionalità minime per dialogare con il suo nodo parente (Coordinator o Router), non possono trasmettere dati provenienti da altri dispositivi; sono i nodi che richiedono il minor quantitativo di memoria e quindi risultano spesso più economici rispetto ai ZR o ai ZC.

astrobeed:
Per il CAN ti conviene iniziare dal topic messo in evidenza sul blog di Arduino che ti avevo linkato http://arduino.cc/forum/index.php/topic,8730.0.html, li trovi anche le librerie, se opti per l'utilizzo della coppia MCP2515 (controller) e MCP2551(transceiver) praticamente hai il 95% del carico di lavoro svolto dal 2515, che in realtà è un micro preprogrammato per gestire il protocollo CAN.
Come puoi vedere nella foto del topic che ti ho linkato i due IC esistono anche in formato pdip il che ti semplifica molto la loro integrazione su una tua shield se non vuoi "combattere" con gli SMD.

provo a dargli un'occhiata anche se l'inglese lo mastico mooolto poco :frowning:

Bruschetta:
Ci sono tre differenti tipi di dispositivo ZigBee:

Gli Xbee consentono di utilizzare reti con più coordinatori, estendono le possibilità del protocollo Zigbee e non sono dei moduli Zigbee generici.

astrobeed:

Bruschetta:
Ci sono tre differenti tipi di dispositivo ZigBee:

Gli Xbee consentono di utilizzare reti con più coordinatori, estendono le possibilità del protocollo Zigbee e non sono dei moduli Zigbee generici.

quindi alla fine che cosa mi consiglieresti tu tra il can e zigbee (con l'utilizzo degli xbee) ... forse il can è più economico ...

Bruschetta:
quindi alla fine che cosa mi consiglieresti tu tra il can e zigbee (con l'utilizzo degli xbee) ... forse il can è più economico ...

Sicuramente il CAN, costa molto di meno (la coppia 2515+2551 costa circa 3.5 Euro) e hai meno problemi con il software, gli Xbee non sono semplici da gestire in modalità API (Mesh Network), poi c'è il fattore velocità di trasmissione che sugli Xbee è abbastanza limitato, banda reale 80 kbps, mentre sul CAN viaggi senza problemi a velocità altissime, non ultimo il fattore sicurezza offerto dal cavo.

ok mi hai convinto ... can ... :slight_smile: ... questa sera vedo di capire il funzionamento delle librerie ... se ho problemi mi puoi dare una mano?

grazie e ciao