Arduino e collegamento a lunga distanza con sensori e periferiche

Buongiorno a tutti,
avrei la necessità di controllare tramite Arduino diversi sensori o periferiche sparse per la casa, faccio alcuni esempi:

RFID reader
Sensore di temperatura
Rilevatore di Gas Metano
Rilevatore di fiamma
Display LCD
Tastiera

Attaccando questi sensori o periferiche direttamente sulla board arduino o comunque a poca distanza come qualche centimetro non dovrebbero esserci problemi di alcun tipo (il condizionale al momento è d'obbligo perchè non li ho ancora comprati), quello che invece mi preme sapere è fino a che distanza dalla board potrei arrivare?

Coprire 30/40 metri è una cosa fattibile, oppure vicino ad ogni sensore devo mettere un arduino e farlo comunicare ad esempio su bus rs485 o can bus, piuttosto che tramite ethernet?

Perdonate la mia ignoranza , ma ho provato a cercare qualche informazione in internet o su questo forum (magari utilizzando termini errati) senza trovare nulla a riguardo.

Grazie a tutti per l'attenzione

Rieccomi qui, ho continuato a fare ricerche ma tutto continua ad essere un po' fumoso poichè probabilmente mi mancando delle basi (magari attaccando direttamente un sensore o una periferica con un cavo da 30m ad arduino questo funziona senza problemi e mi sto creando problemi per nulla)..

Comunque sia da quello che ho capito il protocollo I2C è da utilizzare su tratte brevi < 1m poichè soggetto a molte interferenze e quindi sono costretto a scartarlo.

Ho trovato informazioni relative al protocollo 1 Wire e da quanto ho capito può coprire tranquillamente le distanze che mi interessano, tuttavia essendo appunto una tecnologia con 1 cavo come posso utilizzarla su sensori o periferiche che ne utilizzano magari 3 o 4?

Ho visto che esiste anche un altro prodotto CATkit utilizzando un cavo di rete di categoria 5 o 6 permette di estendere la "portata" di arduino fino a 100 metri, qualcuno l'ha già provato e conosce qualche rivenditore in Europa/Italia?

Nell'attesa di trovare risposte da persone decisamente più competenti di me, continuo le mie ricerche postando di volta in volta quello che troverò.

shake84:
Rieccomi qui, ho continuato a fare ricerche ma tutto continua ad essere un po' fumoso poichè probabilmente mi mancando delle basi

Tipicamente i vari sensori si possono collegare ad Arduino con cavi corti, molto corti se sono SPI, solo quelli One Wire, o RS485, possono collegati a molti metri di distanza, la soluzione è utilizzare dei sistemi locali di interfaccia con i sensori per poi trasmettere verso Arduino con un bus compatibile con le lunghe distanze e il multidrop (più device sullo stesso bus), la soluzione migliore è la RS485.

Ho visto che esiste anche un altro prodotto CATkit utilizzando un cavo di rete di categoria 5 o 6 permette di estendere la "portata" di arduino fino a 100 metri, qualcuno l'ha già provato e conosce qualche rivenditore in Europa/Italia?

E' la prima volta che lo vedo, se vai alla voce distributors hanno un rivenditore in UK.

astrobeed:
Tipicamente i vari sensori si possono collegare ad Arduino con cavi corti, molto corti se sono SPI, solo quelli One Wire, o RS485, possono collegati a molti metri di distanza, la soluzione è utilizzare dei sistemi locali di interfaccia con i sensori per poi trasmettere verso Arduino con un bus compatibile con le lunghe distanze e il multidrop (più device sullo stesso bus), la soluzione migliore è la RS485.

Ti ringrazio per la risposta, se possibile mi sapresti indicare un esempio di "sistemi locali di interfaccia"?
Si tratta di altre board Arduino che andranno programmate ad hoc, oppure esiste qualcosa di più "semplice" che non fa altro che raccogliere i segnali e rimandarli in qualche modo su un bus RS485 per far gestire tutto ad un Arduino remoto?

Per intenderci la mia idea sarebbe quella di monitorare ad esempio la temperatura di N stanze utilizzando appunto N sonde, ma un unico arduino.

Oppure avere un RFID reader installato fuori dall'appartamento mentre l'arduino è posizionato all'interno, come solitamente avviene con un antifurto e il relativo inseritore.

shake84:
Si tratta di altre board Arduino che andranno programmate ad hoc, oppure esiste qualcosa di più "semplice" che non fa altro che raccogliere i segnali e rimandarli in qualche modo su un bus RS485 per far gestire tutto ad un Arduino remoto?

Puoi usare sia altri Arduino, magari le versioni nano/micro, oppure piccole board con degli ATtiny (da valutare il modello adatto), tutte dotate di transceiver RS485 per poter dialogare con l'Arduino che fa da master.

Oppure avere un RFID reader installato fuori dall'appartamento mentre l'arduino è posizionato all'interno, come solitamente avviene con un antifurto e il relativo inseritore.

RFID copre piccolissime distanze, pochi cm, puoi usare dei moduli radio, però sempre un Arduino locale ti serve, elimini solo i fili.

ciao,
mi permetto di inserirmi nella discussione, visto che l'argomento mi interessa. Non devo coprire, però, distanze come le tue; devo arrivare al massimo a 5/6 metri.

shake84:
Ho visto che esiste anche un altro prodotto CATkit utilizzando un cavo di rete di categoria 5 o 6 permette di estendere la "portata" di arduino fino a 100 metri, qualcuno l'ha già provato e conosce qualche rivenditore in Europa/Italia?

Non lo avevo mai visto neanche io, pare interessante... quindi mi sorge spontanea la domanda:
volendo collegare alcuni sensori (prevalentemente degli RHT03 Humidity and Temperature Sensor - DHT20 - SEN-18364 - SparkFun Electronics per umidità e temperatura), alla distanza - come dicevo - di massimo 5/6 metri, potrei utilizzare dei cavi cat 5/6 che collegano l'arduino a una o più millefori fai da te, e poi a questa/queste connettere i sensori? Ovvio che non replicherei la shield "principale", ma creerei soltanto piccole schede con gli RJ45 per fare da "ponte" tra i sensori e l'arduino... avrebbe senso un collegamento del genere oppure ho detto una cavolata?

Grazie in anticipo.
Piero

astrobeed:
Puoi usare sia altri Arduino, magari le versioni nano/micro, oppure piccole board con degli ATtiny (da valutare il modello adatto), tutte dotate di transceiver RS485 per poter dialogare con l'Arduino che fa da master.

Facendo un paio di conti (perchè anche il lato economico conta :P) un Arduino Mini originale costa circa 14€, volendo monitorare almeno 5 sensori sparsi per casa sono circa 70€.
Ripiegando invece su una soluzione Arduino compatibile andrei a spendere circa 1/5.

Ripiegando invece su piccole board ATtiny con transceiver RS485 (il piccole mi piace parecchio perchè mi interessa qualcosa di poco invasivo), quali potrebbero essere i costi? Esiste già qualcosa di pronto o le istruzioni di montaggio?

Per quanto riguarda le ATtiny board ho trovato questa che monta a bordo un TINY85 e posso usare fino a 6 I/O

A tuo avviso potrebbe essere una soluzione fattibile usarlo come device slave su RS485 con protocollo Modbus?

Nel caso basta quello oppure andrebbero aggiunti altri componenti? (perdona la mia ignoranza)

Ciao!

Io ho collegato un sensore di temperatura DS18B20 (OneWire) tramite un cavo telefonico (che non è il massimo) lungo circa 10 metri e funziona senza problemi.
Per far comunicare 2 arduino tra di loro ho utilizzato la seriale (sono a circa 10/15 metri e il cavo passa nella canalina assieme a quelli della corrente non avendo altre opportunità).

Fino a queste distanze, fino ad oggi, non ho avuto nessun problema e non servono "compenenti aggiuntivi o altro" ma basta la semplice scheda Arduino :slight_smile: ... oltre non saprei perchè non ho provato :blush:

Alla MK14 presentavano questa: http://www.titino.eu/
Credo sia per la programmazione a distanza di Arduino ma forse è possibile utilizzarlo anche per la sensoristica.

PaoloP:
Alla MK14 presentavano questa: http://www.titino.eu/
Credo sia per la programmazione a distanza di Arduino ma forse è possibile utilizzarlo anche per la sensoristica.

Mi ero già imbattuto in quel progetto qualche settimana fa durante le mie ricerche, ma non gli avevo dato molto peso, perchè da quello che avevo letto serve come hai detto tu per riprogrammare i vari arduino da remoto, è sicuramente una funzionalità utile e da quanto ho letto verrà avviata la commercializzazione a breve, ma per il momento non mi interessava.

Guardando le caratteristiche ATtiny85 + Driver RS485 però effettivamente potrebbe essere riprogrammato per gestire sensori in remoto, tuttavia data la mia ancora scarsa conoscenza sull'argomento anche le mie non sono altro che ipotesi.

shake84:
Per quanto riguarda le ATtiny board ho trovato questa che monta a bordo un TINY85 e posso usare fino a 6 I/O

A tuo avviso potrebbe essere una soluzione fattibile usarlo come device slave su RS485 con protocollo Modbus?

Nel caso basta quello oppure andrebbero aggiunti altri componenti? (perdona la mia ignoranza)

Dopo varie ricerche e letture mi rispondo da solo, si servono altri componenti (lo aveva già scritto anche astrobeed quando aveva parlato di transceiver RS485 ma non avevo ben capito).
Per "dialogare" su lunghe distanze è meglio utilizzare un integrato come MAX485 oppure SN75176

Quindi dopo aver capito come far comunicare il mio arduino con un sensore remoto:

Arduino->MAX485----------------->MAX485->ATTINY85->SENSORE/PERIFERICA

Mi sono messo a cercare qualcosa di già pronto (MAX485 +ATTINY85 su un unica "piccola" scheda) ma tutto quello che ho trovato è:

  • Tiny25 Proto Board: dove la parte relativa all'ATtiny85 è già pronta e mi offre inoltre tutto lo spazio necessario per collegare il cip MAX485 più eventuali sensori, ma ahimè lo store ufficiale sembra chiuso e non riesco a trovarlo da altre parti.
  • Titino: nato e progettato per altri scopi, se riprogrammato (non so se sia fattibile), potrebbe essere riconvertito per quello che serve a me, ma tralasciando tutti i potrebbe non sembra ancora in vendita e non ne conosco il prezzo.

L'unica opzione che mi rimarrebbe è "costruirmi" questa schedina da solo :cold_sweat: prima provando su una breadboard e poi eventualmente facendomi stampare il tutto su una scheda..

Per quanto riguarda la parte dell'ATtiny85 posso provare a prendere spunto (leggasi guarda e copia) dalla Tiny25 Proto Board che ho appena menzionato, per la parte del MAX485 ho qualche problema in più..

Ho trovato diversi esempi dove viene collegato questo cip viene collegato ad un Arduino, talvolta usando delle resistenze, altre no.. Questa configurazione può essere corretta?
Per collegarlo ad un ATtiny85 quali pin del microcontrollore dovrei usare?

Cercando in internet ho trovato solo questo, incollo qui l'estratto:
MAX485 connection:
1 RO receiver output - data received by the chip over 485 is output on this pin
2 ~RE receive enable (active low)
3 DE driver enable
4 DI driver input - input on this pin is driven onto RS485 output
5 GND
6 A - noninverting receiver input and noninverting driver output
7 B - inverting receiver input and inverting driver output
8 Vcc - 4.75V-5.25V

ATtiny connections (digital pins):

0 RX - RS485 connected to MAX485 pin 1
1 TX - RS485 connected to MAX485 pin 4
2 MAX485 driver enable
3-
4 } coils 0-2 outputs to LEDs
5 -

Lo prendo per buono? Non vanno aggiunte resistenze o altro?