0
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« on: November 03, 2011, 08:20:38 am » |
Devo creare una rete di arduini in grado di comunicare tra di loro, ma vorrei evitare la classica topologia master - slave. Da dove posso cominciare a documentarmi?
|
|
|
|
|
Logged
|
Matteo Lucchesi - Luccalug President
|
|
|
|
Milano, Italy
Offline
Faraday Member
Karma: 10
Posts: 3080
Sideralis Arduino!
|
 |
« Reply #1 on: November 03, 2011, 08:25:00 am » |
Qui si chiedeva uan cosa simile a quella a questa http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1225573352se poi indichi quale tipologia vuoi creare e' piu' facile. Considerando che sostanzialmente anche quasi tutta internet lavora su un presupposto di server-client, forse vuoi fare una rete distribuita? F
|
|
|
|
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 3
Posts: 589
"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 #2 on: November 03, 2011, 08:53:21 am » |
Un'idea potrebbe essere la TWI (nota anche con il nome di I2C) ma non è indicata per grandi distanze. Di solito si utilizza per far comunicare integrati che stanno sulla stessa scheda.
Il TWI prevede anche il multi-master e, per come è fatto, evita automaticamente che più master possano entrare in collisione.
|
|
|
|
|
Logged
|
|
|
|
|
Riva del Garda, TN / Forlì
Offline
Edison Member
Karma: 7
Posts: 2075
Il piu' modesto al mondo
|
 |
« Reply #3 on: November 03, 2011, 09:05:45 am » |
ma una bella idea non sarebbe fare una bella libreria che crei un protocollo su rs485???
|
|
|
|
|
Logged
|
|
|
|
|
MC
Offline
God Member
Karma: 9
Posts: 670
|
 |
« Reply #4 on: November 03, 2011, 09:37:04 am » |
Non sarebbe male infatti sfruttare il 485. Sennò una rete CAN...
|
|
|
|
|
Logged
|
Vi è una spiegazione scientifica a tutto. La fede è solo quell'anello che si porta al dito dopo il matrimonio.
|
|
|
|
Offline
God Member
Karma: 3
Posts: 589
"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 #5 on: November 03, 2011, 10:38:21 am » |
ma una bella idea non sarebbe fare una bella libreria che crei un protocollo su rs485???
Esiste già: https://sites.google.com/site/jpmzometa/arduino-mbrtE prevede anche che un pin venga preposto come abilitazione del trasmettitore nel caso si utilizzi una 485 half-duplex. Funziona, la sto usando... Però non prevede la possibilità di un multi-master, deve esserci un master e più slave.
|
|
|
|
|
Logged
|
|
|
|
|
Monselice PD Italy
Offline
Faraday Member
Karma: 15
Posts: 4905
фон Крыса
|
 |
« Reply #6 on: November 03, 2011, 02:17:03 pm » |
Sarebbe però da implementare una libreria semplice come la seriale normale ma che funzioni come la I2C in modo da collegare più dispositivi sulla stessa linea...
Se avete voglia di darmi una mano... io proverei anche a scriverla una libreria ma necessito di aiuto anche perchè non l'ho mai fatto...
|
|
|
|
|
Logged
|
Se corri veloce come un fulmine, ti schianterai come un tuono.
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3918
Arduino rocks
|
 |
« Reply #7 on: November 03, 2011, 02:19:58 pm » |
scusa ma piu' che una libreria tu vorresti creare proprio un nuovo protocollo ?
|
|
|
|
|
Logged
|
|
|
|
|
Monselice PD Italy
Offline
Faraday Member
Karma: 15
Posts: 4905
фон Крыса
|
 |
« Reply #8 on: November 03, 2011, 02:28:21 pm » |
scusa ma piu' che una libreria tu vorresti creare proprio un nuovo protocollo ?
Più o meno, nel senso, basarsi su qualche standard di comunicazione che già esiste per semplicità, per gli integrati che possono servire etc.. e scrivere un protocollo che semplifichi all'osso il tutto...
|
|
|
|
|
Logged
|
Se corri veloce come un fulmine, ti schianterai come un tuono.
|
|
|
|
Offline
God Member
Karma: 3
Posts: 589
"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 #9 on: November 03, 2011, 03:05:38 pm » |
Prova a dare un'occhiata al link che ti ho pubblicato. Più semplice di quello non c'è, ci sono due funzioni: una per la configurazione iniziale e l'altra da eseguire ogni ciclo per aggiornare i dati.
|
|
|
|
|
Logged
|
|
|
|
|
Riva del Garda, TN / Forlì
Offline
Edison Member
Karma: 7
Posts: 2075
Il piu' modesto al mondo
|
 |
« Reply #10 on: November 03, 2011, 04:39:02 pm » |
se posso dire la mia basta una libreria con 4 funzioni: init send read available si basano sulla seriale, in init si passano i valori di tx, rx, il pin necessario per le comunicazioni half duplex (commuta il max485 o equivalente da sender a recevier) e l'id di arduino. poi la funzione send: serial.write(idarduino); serial.write(messaggio); serial.write(255); non serve molto, così si possono collegare fino a 254 arduini tutti insieme e non vi sono master o slave (sarebbero tutti master) available equivale all'available della newsoftserial (ci basiamo su quella così è possibile la comunicazione su 3 pin qualsiasi) e read puoi mettere uno script tipo void read() { char value[]; while(myserial.available() > 0) { value += myserial.read(); } // va messo un modo per togliere il primo carattere, tipo far shiftare l'array ed eliminare il byte di stop return value; } non sono un espertissimo ma non è fattibile?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #11 on: November 03, 2011, 04:49:33 pm » |
Scusate, la discussione ha preso una via autonoma. Volevo fare una banale domanda: l' rs485 è uno standard per quanto riguarda solo l'hardware? supponiamo che mi adatti ad una struttura master-slave, qual'è il metodo più veloce ed affidabile per implementarlo?
|
|
|
|
|
Logged
|
Matteo Lucchesi - Luccalug President
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16460
Don't know what I do
|
 |
« Reply #12 on: November 03, 2011, 04:53:35 pm » |
@luk: non hai detto su che distanze devono comunicare. Come ti hanno specificato, l'I2C è un ottimo standard che già gestisce di suo la problematica master/slave ma lavora su piccole distanze (cm). Se devi andare oltre allora usa l'RS485, che copre distanze molto lunghe (fino al Km). @tutti: a me pare vogliate reinventare la ruota  Scusate, ma l'RS485 apre una normalissima connessione su 2 fili, una seriale bidirezionale. Bastano le comunissime librerie Serial o NewSoftSerial per poter dialogare. Il protocollo dovrà gestire al max solo il pin per attivare il chip su ricezione o trasmissione (slave o master). Perché diventare grulli per fare ciò che già c'è? 
|
|
|
|
|
Logged
|
|
|
|
|
Riva del Garda, TN / Forlì
Offline
Edison Member
Karma: 7
Posts: 2075
Il piu' modesto al mondo
|
 |
« Reply #13 on: November 03, 2011, 04:58:21 pm » |
@luk: non hai detto su che distanze devono comunicare. Come ti hanno specificato, l'I2C è un ottimo standard che già gestisce di suo la problematica master/slave ma lavora su piccole distanze (cm). Se devi andare oltre allora usa l'RS485, che copre distanze molto lunghe (fino al Km). @tutti: a me pare vogliate reinventare la ruota  Scusate, ma l'RS485 apre una normalissima connessione su 2 fili, una seriale bidirezionale. Bastano le comunissime librerie Serial o NewSoftSerial per poter dialogare. Il protocollo dovrà gestire al max solo il pin per attivare il chip su ricezione o trasmissione (slave o master). Perché diventare grulli per fare ciò che già c'è?  rimane che domani provo a mettermi dietro e creare la libreria, nonostante non abbia tempo per provarla  (e poi mi si è pure bruciato un arduino quindi non ho un convertitore usb-rs232  )
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 39
|
 |
« Reply #14 on: November 03, 2011, 06:14:58 pm » |
Mi servono alcune 100naia di metri quindi rs485. Ma posso stabilire con quale arduino comunicare? cioè tramite un indirizzo o qualcosa del genere? Cosa ne pensate dell'arduino con la ethernet? Devo fare un lavoro per un piccolo albergo.
|
|
|
|
|
Logged
|
Matteo Lucchesi - Luccalug President
|
|
|
|
|