Come collegare due Arduino senza schermi?


14

Sto progettando un sistema Arduino composto da diverse schede Arduino. La distanza massima tra le schede è di circa 50 metri. Voglio inviare dati di base tra questi, come stringhe brevi o numeri interi. So che potrei inviare dati tramite cavi Ethernet ma ciò richiede uno schermo Ethernet o la scheda Arduino Ethernet che raddoppia i costi. Esiste un modo economico per collegare le schede usando solo le schede di base (come Uno) e alcuni altri componenti ma non una protezione completa?


Se il budget non è stato un problema, puoi utilizzare i chip bluetooth o xbee. Non sono poi così male, ma avranno un totale di ~ $ 60 di cui avrai bisogno 2.
Steven10172,

@ Steven10172 I dispositivi Bluetooth sono utili, ma sembra che l'OP voglia una soluzione economica senza scudi (forse di basso profilo?)
Anonimo Penguin

3
Fare Assicurarsi di collegare i motivi se il mezzo di trasferimento è l'elettricità !!!
Pinguino anonimo il

Risposte:


9

Per comunicazioni cablate a lunga distanza, guarda RS-485 .

Poiché utilizza una linea bilanciata differenziale su doppino (come RS-422), può coprire distanze relativamente grandi (fino a 4.000 piedi (1.200 m)). Una regola empirica è che la velocità in bit / s moltiplicata per la lunghezza in metri non deve superare 108. Pertanto un cavo da 50 metri non deve segnalare una velocità superiore a 2 Mbit / s

È possibile utilizzare il chip MAX485. È abbastanza facile lavorare con ma c'è anche una buona biblioteca:

https://github.com/Protoneer/RS485-Arduino-Library


Non potrebbe semplicemente spellare i fili in RS-485 o simili e semplicemente usarlo per seriale per risparmiare denaro? 9600 baud non funzionano quasi alla velocità di 2 MBPS. C'è qualcosa di speciale nel protocollo / voltaggi / ecc. che lo rende adatto a lunghe distanze? Potrebbe risparmiare qualche soldo ...
Anonimo Penguin,

È un segnale differenziale inviato su una coppia intrecciata. Riduce il rumore en.wikipedia.org/wiki/Differential_signaling
sachleen,

Questa pagina è un'ottima risorsa su RS485 con Arduino gammon.com.au/forum/?id=11428
DaveP

7

Ci sono due categorie a cui riesco a pensare per classificare le funzionalità di comminucation delle schede Arduino:

Tra 2 dispositivi:

  • Seriale: facile da usare e richiede solo 2 righe di dati.
  • OneWire: più difficile da usare e lento, ma utilizza solo una linea di dati

Tra più di 2 dispositivi

  • I2C: è possibile avere fino a 128 dispositivi su una rete, indirizzabili individualmente, ma richiede un dispositivo master, utilizza 2 linee dati. questo è noto anche come filo.
  • SPI: selezione del dispositivo difficile da usare, ma molto veloce e facile. utilizza molte righe di dati (3 + numero di dispositivi)
  • OneWire: l'utilizzo di oneWire indirizzato è persino più lento del normale oneWire, ma solo una riga di dati
  • Software seriale: è possibile avere diversi dispositivi collegati da diverse linee seriali, ma è più lento.
  • CAN: disponibile solo su Due e indirizzabile

Sono disponibili altri metodi, ma questi elencati richiedono solo un minimo di hardware esterno.

Per le valutazioni della distanza, consultare http://forum.arduino.cc/index.php?topic=82937.0 e http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/serial-distance.html

Queste velocità di dati sono controllate direttamente in seriale e possono essere modificate in molte altre.


5

Freakduino realizza alcune schede Arduino con wireless integrato. Il loro wireless a lungo raggio è di 900 MHz e il raggio più corto di 2,4 GHz. Penso che siano in realtà radio XBee e per la programmazione useresti una libreria chiamata chibiArduino, che è disponibile (e documentata) sul sito web di Freakduino. Quando si comunica in modalità wireless con un'altra radio, è possibile utilizzare Broadcast o specificare una radio tramite ID, valore che è necessario impostare nella EEPROM di Freakduino.

Tratto direttamente dal sito Freakduino:

L'aggiunta di una radio wireless integrata basata sul protocollo IEEE 802.15.4 (stesso protocollo radio dell'XBee) consente il controllo wireless dei dispositivi o la raccolta dei dati dei sensori wireless. È stato aggiunto un circuito batteria opzionale in modo che potesse funzionare come un vero nodo wireless senza cavi di alimentazione esterni. La scheda è inoltre progettata per adattarsi a un involucro rinforzato in modo che il design possa essere trasportato in sicurezza o implementato in uno scenario di utilizzo reale senza preoccuparsi di danneggiare i circuiti.

Questa radio a 900 MHz è una delle mie preferite personali. Lo uso sempre perché 900 MHz offre una gamma molto migliore rispetto a 2,4 GHz. La radio può emettere fino a 10 mW di potenza di trasmissione che può ottenere una quantità sorprendente di portata. Con una linea di mira diretta, poche centinaia di metri non sarebbero sorprendenti. Se è necessario un intervallo aggiuntivo, la modalità di modulazione può anche essere cambiata da OQPSK a BPSK. Ciò si traduce in un ulteriore intervallo a scapito della velocità dei dati, con il massimo che va da 250 kbps a 40 kbps in modalità standard.


0

Come hai detto, gli schermi Ethernet sono costosi, ma non è necessario utilizzare lo schermo. Dai un'occhiata all'enc28j60 per le reti cablate o all'ESP8266 se preferisci il wireless. Entrambi sono circa $ 4 USD. Sto usando ESP8266 ora e ho circa 8 dispositivi che parlano tra loro e un Raspberry Pi. È un chip davvero fantastico! Non posso parlare personalmente con ENC28j60, poiché sono ancora seduti nel pacchetto sulla mia scrivania.


0

È possibile utilizzare una scheda breakout Ethernet ($ 2 su Sparkfun). Ciò consente di utilizzare i cavi Ethernet ma non è necessario utilizzare un protocollo TCP / IP completo, ma è sufficiente collegare i pin di dati alla scheda breakout, utilizzare Ethernet per collegarli e quindi farli parlare tramite seriale. Lo uso un po 'per posizionare i sensori a un filo più lontano dall'Arduino per una connessione forte ma economica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.