Comunicazione lunga distanza

Ciao a tutti,
avrei bisogno di far comuncare 6 arduino nano a lunga distanza (50mt via cavo e circa 30mt via aria).
Attualmente faccio funzionare la comunicazione con protocollo I2C, e finchè si tratta di brevi distanze tutto perfetto. Il problema nasce dal fatto che nell'impianto è già installato un cavo 2*1,5mm in rame e mi piacerebbe usare quello per non aprire il tutto. Ho fatto delle prove e con un cavo uguale ma lungo circa 10mt il segnale non riesce ad essere trasmesso.
Leggendo un po in vari forum ho visto progetti che andavano a modificare la frequenza del SCL per aumentare la distanza di trasmissione; altri che variavano le resistenze di pull-up e altri ancora che utilizzavano altri protocolli tipo LoRa o altre tecnologie wireless.
Voi quali suggerimenti avreste da darmi?
Grazie a tutti in anticipo.

Buongiorno,

prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...

... essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero cancellate), quindi ti consiglio di farla al più presto. :wink:

Già usi I2C e penso tu stia usando un master e più slave sul bus. Per fare la stessa cosa via cavo penso a RS485, in commercio trovi convertitore RS232 TTL to RS485 con cui realizzare la rete.

Mentre via radio puoi documentarti qui

Ciao.

Esattamente, ho un master e 5 slave.
Ho provato a dare un'occhiata ai convertitori RS232TTL-RS485, ma parlano tutti di canali RX e TX e non di canali SDA ed SCL, funzionano comunque?

Se vuoi rimanere con i2c cerca con google "i2c bus extender", però non ho mai indagato tanto sul funzionamento per cui non posso dire nulla di più.

Mentre se sei disposto ad abbandonare i2C mantenendo la comunicazione master-multislave il bus RS485 è il meglio che conosca in termini di affidabilità, velocità. In questo caso per ogni nodo servono due pin RX TX che possono essere quelli della seriale hardware di arduino o altri pin con la libreria softserial ma occhio che è lentina.

Sia con RS485 che con i2c extender il cavo attuale non lo puoi usare, addirittura con I2c extender servono 8 conduttori almeno così ho capito da qui.

Ciao.

i2c è nato per brevissime distanze, come suggerito da maurotec, metti un chip vicino al sensore, e usa il bus seriale (Serial tx e rx arduino dovrebbero andare bene per qualche decina di metri, specialmente con cavo schermato)

Ciao lesto bentornato.
Stavo leggendo PJON e a quanto ho capito dovrebbe lavorare a bassa velocità sul suo filo senza grandi difficoltà.

Ciao.

Ciao Maurotec, vorrei subito ringraziarti per tutto l'aiuto che mi stai dando.
Il problema della velocità di comunicazione non mi interessa perché ho un solo bit da dover inviare e se anche arriva con un paio di secondi di ritardo non mi crea problemi, infatti stavo andando a spulciare qualche particolare metodo che ho trovato qui sul sito ma non penso che andare a toccare i tempi di clock del processore sia cosa buona e giusta.
Il mio problema sarebbe, inoltre, quello ti tenere i costi il più basso possibile, quindi non andare a comprare chiassà cosa ma cercare di usare il più possibile le potenzialità di Arduino.
Che voi sappiate esiste qualche sistema di comunicazione il cui segnale possa eventualmente essere amplificato tramite BJT visto che riesco ad avere anche una tensione a 24v?
Grazie ancora di tutto

Hi from France,
Sorry I don't speak Italian, but I was reading with Google translate..

Look into 20mA current loop communication:

Old technology used in the industry for very long communication over two wires..

All the best with your project,
Ciao

... modalità SoftwareBitBang che, appunto, utilizza UN solo filo con discrete velocità :slight_smile:

Guglielmo

di far comuncare 6 arduino nano a lunga distanza (50mt via cavo

50m totali o 50 da uno all'altro?

è già installato un cavo 2*1,5mm in rame

quindi normale cavo non per dati, non schermato, non twistato, e magari anche passante in modo promiscuo assieme ad altre fonti di disturbo...

un solo bit da dover inviare e se anche arriva con un paio di secondi di ritardo non mi crea problemi

Si, ma quel bit deve essere contenuto in un pacchetto dati che ha delle temporizzazioni da rispettare

tenere i costi il più basso possibile, quindi non andare a comprare chiassà cosa ma cercare di usare il più possibile le potenzialità di Arduino

Il che però può significare trovarsi di fronte ad una marea di disturbi elettrici ingestibili (dipende anche dalle cose non note dette prima). Il "costo più basso possibile" rema sempre dall'altra parte del "funziona bene senza problemi e senza guastarsi".

esiste qualche sistema di comunicazione il cui segnale possa eventualmente essere amplificato tramite BJT visto che riesco ad avere anche una tensione a 24v?

Il suggerimento del current loop di @frenchydude08 è molto sensato, però nel tuo caso parliamo di sei unità "in rete" su "lunga" distanza e potenzialmente disturbabili. Per fare un loop di corrente con tutte le unità in serie servirebbero più di 24V. Potrebbe essere interessante il principio del bus dali optoisolato (usato in domotica)