Wie verbinde ich zwei Arduino ohne Abschirmungen?

14

Ich plane ein Arduino-System, das aus mehreren Arduino-Boards besteht. Der maximale Abstand zwischen den Brettern beträgt ca. 50 Meter. Ich möchte grundlegende Daten wie kurze Zeichenfolgen oder Ganzzahlen zwischen diesen senden. Ich weiß, dass ich Daten über Ethernet-Kabel senden kann, aber dazu ist ein Ethernet-Shield oder die Arduino-Ethernet-Karte erforderlich, mit der sich die Kosten verdoppeln. Gibt es eine kostengünstige Möglichkeit, die Platinen nur mit den grundlegendsten Platinen (wie Uno) und einigen anderen Komponenten zu verbinden, aber nicht mit einer vollständigen Abschirmung?

totymedli
quelle
Wenn das Budget kein Problem war, können Sie Bluetooth- oder Xbee-Chips verwenden. Sie sind nicht so schlimm, werden aber insgesamt ~ 60 $
kosten,
@ Steven10172 Bluetooth-Geräte sind praktisch, aber es scheint, als wolle das OP eine billige Lösung ohne Schutzschilde (Low Profile vielleicht?)
Anonymous Penguin
3
Stellen Sie sicher , dass die Erdung angeschlossen ist, wenn Ihr Übertragungsmedium Strom ist !!!
Anonymous Penguin

Antworten:

9

Informationen zur drahtgebundenen Fernkommunikation finden Sie in RS-485 .

Da eine differentielle symmetrische Leitung über Twisted Pair (wie RS-422) verwendet wird, können relativ große Entfernungen (bis zu 1.200 m) überbrückt werden. Als Faustregel gilt, dass die Geschwindigkeit in Bit / s multipliziert mit der Länge in Metern 108 nicht überschreiten sollte. Ein 50-Meter-Kabel sollte daher nicht schneller als 2 Mbit / s signalisieren

Sie können den MAX485-Chip verwenden. Es ist ziemlich einfach, damit zu arbeiten, aber es gibt auch eine gute Bibliothek:

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

Sachleen
quelle
Könnte er nicht einfach die Drähte in RS-485 oder ähnlichem abisolieren und das für serielle Verbindungen verwenden, um Geld zu sparen? 9600 Baud sind nicht annähernd so schnell wie 2 MBPS. Hat das Protokoll / die Spannungen / usw. Etwas Besonderes? das macht es für weite entfernungen geeignet? Es könnte etwas Geld sparen ...
Anonym Penguin
Es ist ein Differenzsignal, das über ein Twisted Pair gesendet wird. Reduziert das Rauschen. en.wikipedia.org/wiki/Differential_signaling
sachleen
Diese Seite ist eine hervorragende Ressource für RS485 mit Arduino gammon.com.au/forum/?id=11428
DaveP
7

Es gibt zwei Kategorien, die mir einfallen, um die Kommunikationsmerkmale der Arduino-Boards zu klassifizieren:

Zwischen 2 Geräten:

  • Seriell: Einfach zu bedienen und benötigt nur 2 Datenleitungen.
  • OneWire: Schwieriger und langsamer, verwendet jedoch nur eine Datenleitung

Zwischen mehr als 2 Geräten

  • I2C: Sie können bis zu 128 Geräte in einem Netzwerk haben, die einzeln adressierbar sind, für die jedoch ein Master-Gerät erforderlich ist, das zwei Datenleitungen verwendet. Dies ist auch als Draht bekannt.
  • SPI: Schwierig zu bedienen, aber sehr schnelle und einfache Geräteauswahl. verwendet viele Datenleitungen (3 + Anzahl Geräte)
  • OneWire: Die Verwendung von adressiertem OneWire ist sogar langsamer als bei normalem OneWire, es ist nur eine Datenleitung vorhanden
  • SoftwareSerial: Sie können mehrere Geräte über verschiedene serielle Leitungen verbinden, dies ist jedoch langsamer.
  • CAN: nur am Fälligkeitstag verfügbar und adressierbar

Es stehen andere Methoden zur Verfügung, für die jedoch nur ein Minimum an externer Hardware erforderlich ist.

Entfernungsbewertungen finden Sie unter http://forum.arduino.cc/index.php?topic=82937.0 und http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/serial-distance.html

Diese Datenraten werden direkt in Serial gesteuert und können in vielen anderen geändert werden.

Der Doktor
quelle
5

Freakduino stellt einige Arduino-Boards mit eingebautem WLAN her. Ihre Funkreichweite beträgt 900 MHz und ihre kürzere Reichweite 2,4 GHz. Ich denke, es handelt sich tatsächlich um XBee-Radios. Zum Programmieren würden Sie eine Bibliothek namens chibiArduino verwenden, die auf der Freakduino-Website verfügbar (und dokumentiert) ist. Wenn Sie drahtlos mit einem anderen Radio kommunizieren, können Sie Broadcast verwenden oder ein Radio anhand seiner ID angeben. Dies ist ein Wert, den Sie im EEPROM des Freakduino einstellen müssen.

Direkt von der Freakduino-Site entnommen:

Das Hinzufügen eines integrierten drahtlosen Funkgeräts basierend auf dem IEEE 802.15.4-Protokoll (dasselbe Funkprotokoll wie das XBee) ermöglicht die drahtlose Steuerung von Geräten oder die drahtlose Erfassung von Sensordaten. Optionale Batterie-Schaltkreise wurden hinzugefügt, um als echter Funkknoten ohne externe Stromkabel zu fungieren. Die Platine ist auch für den Einbau in ein robustes Gehäuse ausgelegt, sodass das Design sicher transportiert oder in einem tatsächlichen Nutzungsszenario eingesetzt werden kann, ohne dass die Schaltkreise beschädigt werden müssen.

Dieses 900-MHz-Radio ist ein persönlicher Favorit von mir. Ich benutze es die ganze Zeit, weil 900 MHz eine viel bessere Reichweite bieten als 2,4 GHz. Das Radio kann eine Sendeleistung von bis zu 10 mW abgeben, was eine überraschende Reichweite zur Folge hat. Bei direkter Sicht wären einige hundert Meter nicht überraschend. Wenn ein zusätzlicher Bereich benötigt wird, kann der Modulationsmodus auch von OQPSK auf BPSK geändert werden. Dies führt zu einer zusätzlichen Reichweite auf Kosten der Datenrate, wobei die maximale Bandbreite im Standardmodus von 250 kbit / s bis 40 kbit / s reicht.

HK1
quelle
0

Wie Sie sagten, sind Ethernet-Abschirmungen teuer, aber Sie müssen die Abschirmung nicht verwenden. Schauen Sie sich den enc28j60 für kabelgebundene Netzwerke oder den ESP8266 an, wenn Sie eine drahtlose Verbindung bevorzugen. Beide kosten ungefähr 4 USD. Ich benutze jetzt den ESP8266 und habe ungefähr 8 Geräte, die miteinander und mit einem Himbeer-Pi sprechen. Es ist ein wirklich toller kleiner Chip! Ich kann nicht persönlich mit der ENC28j60 sprechen, da sie immer noch im Paket auf meinem Schreibtisch sitzt.

Butters
quelle
0

Sie könnten ein Ethernet-Breakout-Board verwenden (2 US-Dollar bei Sparkfun). Auf diese Weise können Sie die Ethernet-Kabel verwenden, müssen jedoch kein vollständiges TCP / IP-Protokoll verwenden. Stattdessen können Sie einfach Daten-Pins an das Breakout-Board anschließen, diese über das Ethernet anschließen und dann über serielle Verbindungen miteinander kommunizieren. Ich benutze dies ziemlich oft, um einen Draht Sensoren weiter vom Arduino für eine starke und dennoch billige Verbindung zu platzieren.

Nathan
quelle