Go Down

Topic: Rete di arduini (Read 3283 times) previous topic - next topic

luk156

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?
Matteo Lucchesi - Luccalug President

Federico

Qui si chiedeva uan cosa simile a quella a questa
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1225573352
se 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
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Janos

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.

superlol

ma una bella idea non sarebbe fare una bella libreria che crei un protocollo su rs485???
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

niki77

Non sarebbe male infatti sfruttare il 485.
Sennò una rete CAN...
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Janos


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-mbrt

E 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.

ratto93

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...
Se corri veloce come un fulmine, ti schianterai come un tuono.

Testato

scusa ma piu' che una libreria tu vorresti creare proprio un nuovo protocollo ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ratto93


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...
Se corri veloce come un fulmine, ti schianterai come un tuono.

Janos

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.

superlol

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
Code: [Select]

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?
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

luk156

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?
Matteo Lucchesi - Luccalug President

leo72

@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'è?  XD

superlol


@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'è?  XD

rimane che domani provo a mettermi dietro e creare la libreria, nonostante non abbia tempo per provarla  XD (e poi mi si è pure bruciato un arduino quindi non ho un convertitore usb-rs232  =( )
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

luk156

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.
Matteo Lucchesi - Luccalug President

Go Up