[semi OT] Varianti evolute di RS485 per lunghe distanze su Arduino?

Ciao NG,

morente se non defunto...

Vorrei capire qualcosa su come far comunicare due arduini. Per la prima volta mi sta funzionando un piccolo "set" con cui ne faccio parlare due via I2C e noto con piacere che le funzioni di comunicazione non sono bloccanti, il che mi rende possibile farci qualcosa.

Ipotizzo che arduino possieda qualche sottosistema indipendente dalla CPU, con relativi buffers, dato che vedo che la funzione di callback della libreria Wire viene chiamata indipendentemente dal flusso del programma principale.

possibile la comunicazione via cavo su distanze maggiori. Lo standard RS485 sarebbe perfetto (va anche su centinaia di metri, a quanto pare) ma probabilmente per i limiti dello standard non trovo librerie convincenti. E

master + N * slaves.

Orbene: esiste qualche scheda hardware a poco prezzo che supporti la comunicazione bidirezionale, relativi buffers e quant'altro? In rete trovo solo schedine RS485 con solo due fili oppure costosissime schede stile NI ovviamente fuori budget.

Insomma, vorrei far comunicare i dispositivi come se usassi I2C ma senza le grane di dover scrivere un protocollo (per giunta con le complicazioni di dover coordinare tramissione e ricezione). Vorrei che ciascun dispositivo possa porsi in ricezione o trasmissione senza compromettere niente, poi a gestire eventuali perdite di

Anche solo i giusti termini per la ricerca in rete mi saranno sicuramente utilissimi.

Grazie!

Apx

--
"Pompieri? Presto, venite, la mia casa sta bruciando" 
"OK, quando ha avuto origine il fuoco?"
Reply to
Archaeopteryx
Loading thread data ...

critto:

con la seriale saresti a cavallo. I2C lascialo alle periferiche che lo usan o.

eato sulle basi di microcontrollori atmel, ora microchip. quindi se il fw compilato dall'ambiente di arduino lo usa, i microcontrollo ri hanno l'hw che permette alle periferiche di funzionare autonomamente per invio e ricezione (si parla comunque di buffer di 1 o 2 byte), che devono essere gestiti per forza nell'immediato sotto interrupt. diversamente la pe riferica va in overrun e si blocca.

el micro sia per forza bloccante. se scritto bene, non si blocca proprio nu lla.

consona. se devi fare tra 5 e 10-15 mt va bene traslare i livelli della seriale su R S232.

ione.

SI. su ebay trovi anche schedine a basso costo con sopra driver RS485 autog estiti. significa che in assenza di input, lasciano il bus 485 svincolato, e appena trasmetti, lo occupano. diversamente, se le distanze che devi fare non sono di centinaia di mt e qu

giocare, che ti frega di usare due o 4 fili?

in caso contrario non saprai mai se i dati che ti arrivano sono veri o caus ati da interferenza.

RS485, RS232, USART, UART.... ma proprio prima di tutti, studierei il funzionamento dei microcontrollori e delle loro periferiche hw interne. sapere le basi, aiuta.

Reply to
Matteo

critto:

pardon, vedo anche una castroneria: non ti servono librerie per trasmettere

gliere disturbi che falsificherebbero il segnale al termine della linea.

essa collegati, siano regolamentati in modo da non trasmettere tutti assiem e o rispondere tutti assieme.

rve una regolamentazione e puoi procedere con un collegamento punto-punto c ome ti ho consigliato.

o muoversi diversamente.

Reply to
Matteo

Il 09/11/2017 04:50, blisca ha scritto:

Probabilmente intende dire che non vorrebbe occuparsi esplicitamente di indirizzamento, sincronizzazione, acknowledge, ma solo vedersi attivare una callback "ricevuto" senza mettersi a fare polling sulla ricezione.

Non so se con la seriale si puo`. Sicuramente la ricezione e la trasmissione dei byte avvengono in modo non bloccante, ma per sapere se c'e` qualcosa nel buffer bisogna chiamare Serial.available()

Inoltre non capisco cosa intende con RS485 che obbliga a master/slave, quando l'I2C e` per sua natura master/slave.

Comunque per lunghe distanze si va in seriale, appoggiandosi ai livelli elettrici piu`adatti in base a distanza / velocita` / disturbi.

Il vecchio caro current loop e` morto?

L'ho provato su mezzo chilometro a 9600 bps e va una meraviglia.

formatting link

Reply to
Claudio_F

In data novembre 2017 alle ore 08:49:30, Claudio_F ha scritto:

non ci pensavo,buona idea nel caso grazie

--

http://www.avg.com
Reply to
blisca

coassiale con terminatori. Esistono IC della microchip per ethernet interfacciati con SPI, tipo ENC28J

  1. Piccio.

Reply to
Piccio

Il 11/11/2017 15:57, Piccio ha scritto:

Mica, il current loop puo`essere anche un anello con N nodi in serie (la corrente va imposta all'inizio dell'anello, la tensione deve essere almeno pari alla somma delle cadute su ogni nodo e la segnalazione avviene per aperture).

Oppure puo` essere di tipo parallelo (la corrente deve essere almeno pari alla somma delle correnti assorbite da ogni nodo e limitata in partenza, e la segnalazione avviene per cortocircuito)

Un esempio di questo secondo tipo e` il bus dali. Non so quanto lontano puo` andare il dali, ma ne sto provando una versione breadbordizzata che su 250m non fa una piega (57mA limitati in corto, 9600bps, cinque nodi

10mA ciascuno).

Arghhh... e` finalmente finito quell'incubo e lo vuoi resuscitare?

Reply to
Claudio_F

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.