Offline
Full Member
Karma: 0
Posts: 116
|
 |
« on: October 16, 2012, 12:25:37 pm » |
ciao, Ho deciso di rispolverare Arduino per dei progetti che mi piacerebbe intraprendere... Il punto principale è come far dialogare vari Arduino tra una stanza è l'altra. Fortunatamente esistono molte librerie per fare ciò, scarterei il Can bus perché richiede troppe connessioni ed un cip dedicato MCP2515 + 2551 ecc. principalmente pensavo al RS485 per la semplicità del circuito con qualche bus già bello fatto! Ma sono aperto a qualsiasi suggerimento. Considerando che questa problematica è stata già affrontata da molti di Voi, mi piacerebbe ricevere un consiglio per non inoltrarmi in strade che non portano molto lontano. Quello che mi sconcerta è quantità di librerie per Modbus ma quale scegliere? Esiste anche il Dmx ma da una superficiale lettura non sembra essere bidirezionale.
Grazie
Luca
|
|
|
|
« Last Edit: October 17, 2012, 06:52:55 am by llluca »
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 87
Posts: 8497
:(){:|:&};:
|
 |
« Reply #1 on: October 17, 2012, 05:37:45 am » |
l'rs485 dovrebbe essere più che sufficiente. Però non è una "breve" distanza; per breve distanza io penso all'i2c o alla SPI che al massimo arrivano ad una decina di centimetri! se correggi il titolo sono sicuro che avrai più aiuto.
Tra l'altro se ne è già parlato spesso, la cosa migliore IMHO è un chip da seriale rs232 livelli TTL (insomma, la seriale di arduino) in RS485; Infatti la libreria SoftwareSerial ti permette di trasformare due pin qualsiasi dell'arduino in TX/RX (ma per via dell'implementazione software puoi rivecevere a massimo 19200baud e scrivere poco più velocemente, ma di solito è più che sufficiente), e quindi creare facilmente una rete con molti collegamenti. Infice credo che i chip siffatti siano abbastanza economici (max485 CREDO vada bene, verica se i livello sono ttl o no)
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 226
Posts: 16998
Don't know what I do
|
 |
« Reply #2 on: October 17, 2012, 06:32:29 am » |
I 75176 sono migliori, costano meno e sono meno sensibili alle interferenze.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 116
|
 |
« Reply #3 on: October 17, 2012, 07:15:13 am » |
(max485 CREDO vada bene, verica se i livello sono ttl o no)
Confermo ttl! @ leo72 i 75176 = € 0,672 i max 485 € 3,12 ottimo consiglio!  Grazie per la risposta ma mi chiedevo volendo usare un protocollo, ed essendocene parecchi e con molte discussioni in merito, verso quale sarebbe meglio orientarsi?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 3
Posts: 608
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
|
 |
« Reply #4 on: October 17, 2012, 07:20:28 am » |
Allora, se hai bisogno di una connessione multimaster mi sembra che la CAN lo sia. Se ti basta monomaster e multislave potresti utilizzare il Modbus. Come librerie potresti utilizzare queste: https://sites.google.com/site/jpmzometa/arduino-mbrtQuasi sicuramente vanno adattate all'IDE di Arduino 1.x ma è una cavolata. Non sono state implementate tutte le funzioni previste dallo standard ma dovrebbero bastare. Vedi un po' te. Per il master ti segnalo anche questa libreria: http://www.arduino.cc/playground/Code/ModbusMasterIl modbus secondo me fa al caso tuo perché prevede fino a 127 slave, è standardizzato, universalmente riconosciuto e prevede anche un controllo sull'integrità dei dati mediante un controllo CRC. EDIT: Dai un'occhiata anche qui: http://arduino.cc/forum/index.php?topic=36562.0Parla della I2C (chiamata anche TWI), la quale prevede il multimaster. EDIT2: Altrimenti ancora perché non le Wifi-shield?
|
|
|
|
« Last Edit: October 17, 2012, 07:23:55 am by Janos »
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 116
|
 |
« Reply #5 on: October 17, 2012, 09:34:28 am » |
EDIT2: Altrimenti ancora perché non le Wifi-shield?
PEr ora vorrei concentrarmi solo su protocolli via filo Ma la domanda forse banale è con un monomaster: Può uno slave fare sniffing dei dati sulla rete per vederli dal monitor seriale ? o questo è prerogativa dell master? Se non ho capito male esiste la filtratura dei dati che dovrebbe dipendere dall' indirizzo dello salve? Vi ringrazio per la pazienza e come si capirà la confusione nella mia testa non è poca.... 
|
|
|
|
« Last Edit: October 18, 2012, 06:45:28 am by llluca »
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 3
Posts: 608
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
|
 |
« Reply #6 on: October 17, 2012, 10:17:19 am » |
Si, è possibile effettuare lo sniffing dei dati. Tutti gli slave ricevono gli stessi dati ma solo quello con quel dato indirizzo risponde. Inoltre il CRC ti permette di avere sicurezza sull'integrità dei dati ma contro alterazioni dovute da interferenze, mentre è sensibile di un eventuale attacco intenzionale. Utile per l'individuazione di errori casuali nella trasmissione dati (a causa di interferenze, rumore di linea, distorsione), il CRC non è invece affidabile per verificare la completa correttezza dei dati contro tentativi intenzionali di manomissione. A tal fine sono utilizzati algoritmi di hash quali MD5 e SHA1, più robusti seppur computazionalmente meno efficienti. In pratica il master invia sul bus un messaggio del tipo "slave X, funzione Y(ad esempio letti un valore), altri comandi, CRC". Solo lo slave interrogato, se ha correttamente interpretato il messaggio, risponde ma tutti hanno ricevuto lo stesso messaggio. Per vedere come è fatto un meggaggio "frame" di una comunicazione Modbus puoi vedere qui: http://en.wikipedia.org/wiki/Modbus
|
|
|
|
« Last Edit: October 17, 2012, 10:20:30 am by Janos »
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 116
|
 |
« Reply #7 on: October 17, 2012, 10:57:05 am » |
Ciao, Forse sto capendo, esempio per capire meglio il problema... In un appartamento ho 4 o 5 sensori di temperatura questi probabilmente arduino tiny si dovrebbero comportare da Slave Giusto? Voglio visualizzare la temperatura su vari lcd ma questi cosa sarebbero?
Soluzione 1) il master riceve i dati se questi cambiano li ritrasmette il nuovo dato agli salve lcd? Soluzione 2) Gli slave Lcd possono intercettare i dati temperatura e visualizzarli autonomamente.
Volendo utilizzare un protocollo tipo Modbus dovrei ragionare con la soluzione 1?
grazie
|
|
|
|
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 3
Posts: 608
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
|
 |
« Reply #8 on: October 18, 2012, 03:51:39 am » |
Non ho capito...  Allora, fa tutto il master, sia inviare che ricevere i dati. Quando il master invia sul bus un messaggio tutti gli slave lo ricevono ma solo quello che corrisponde a quel dato indirizzo lo elabora, tutti gli altri semplicemente lo ignorano. Sarà il master che farà un polling su tutti i sensori per sapere le varie temperature, gli slave non possono di loro iniziativa inviare dati al master e tantomeno fra di se.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 116
|
 |
« Reply #9 on: October 18, 2012, 06:44:12 am » |
slave non possono di loro iniziativa inviare dati al master e tantomeno fra di se.
Forse ho capito il principio, Il vantaggio è non avere dati Che si scontrano collidono nel bus, perchè i vari nodi in un certo senso sono diretti dal master. Quindi in questa ottica è preferibile l'adozione di un protocollo come Modbus. Grazie Luca
|
|
|
|
« Last Edit: October 18, 2012, 06:50:08 am by llluca »
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 87
Posts: 8497
:(){:|:&};:
|
 |
« Reply #10 on: October 18, 2012, 06:45:55 am » |
scontrano nel bus
si dice collisione, se cerchi trovi tanta roba su questo problema
|
|
|
|
|
Logged
|
|
|
|
|
Firenze
Offline
Jr. Member
Karma: 1
Posts: 65
|
 |
« Reply #11 on: October 19, 2012, 08:06:42 am » |
Parlando di modbus, monomaster non significa che gli slave non possono inviare dati al master, monomaster significa che il master e' l'unico in grado di ricevere richieste (lettura e scrittura). Le richieste possono essere di vario tipo in base al tipo di dato da gestire e all'operazione da eseguire. Con una richiesta di scrittura puoi inviare dati al master da un qualsiasi slave, mentre con una richiesta di lettura lo slave richiede dei dati al master e il master invia i dati richiesti al client che li ha richiesti (non a tutti).
Perche non modbus TCP e shield ethernet?
|
|
|
|
|
Logged
|
"Cosi non si va avanti..." disse il gambero
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 116
|
 |
« Reply #12 on: October 19, 2012, 08:20:18 am » |
Grazie! (forse) ho capito! è esattamente quello che avevo in mente... Perche non modbus TCP e shield ethernet?
oltre a una ovvia questione di costi vedi ethernet shield vs 75176 quali vantaggi avrei in + ?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 116
|
 |
« Reply #13 on: October 19, 2012, 08:51:35 am » |
Chiedo scusa fin da ora per la banalità della domanda ma vorrei capire alcune cose. Analizzando l'esempio SimpleModbusSlaveExample: modbus_configure(9600, 1, 2, TOTAL_REGS_SIZE);
9600 = velocità 1= indirizzo dispositivo da 1 a 127 (mio pensiero lo 0 = master?) 2= pin numero due (int0 o quarto pin fisico) connessi a re -de del max485 (posso usare qualsiasi digital pin?) ma Rx e Tx sono sempre fissi o li posso modificare? TOTAL_REGS_SIZE = array dei dati Grazie per la pazienza Luca
|
|
|
|
|
Logged
|
|
|
|
|
Firenze
Offline
Jr. Member
Karma: 1
Posts: 65
|
 |
« Reply #14 on: October 22, 2012, 02:21:59 am » |
Grazie! (forse) ho capito! è esattamente quello che avevo in mente... Perche non modbus TCP e shield ethernet?
oltre a una ovvia questione di costi vedi ethernet shield vs 75176 quali vantaggi avrei in + ? - la diagnostica (sniffing con wireshark) - simulatori (sia master che slave) se ne trovano tanti in internet - integrazione su una eventuale rete esistente - l'alimentazione da poe
|
|
|
|
|
Logged
|
"Cosi non si va avanti..." disse il gambero
|
|
|
|
|