Forum: Mikrocontroller und Digitale Elektronik Kommunikation zwischen 2 Mikrocontroller


von Thomas (Gast)


Lesenswert?

Hallo,

ich habe 2 Arduino Mega 2560 und einen Raspberry.

Der Raspberry soll zu beiden Arduinos Steuerbefehle senden können bzw. 
aktuellen Status empfangen können.

Arduinos untereinander kommunizieren nicht miteinander.

1 Arduino ist vom Raspberry etwa 50cm entfernt, der andere etwa 10Meter.

Es werden in der Sekunde maximal 30-40 Bytes übertragen.

Eine Möglichkeit wäre nun, ich hänge an beide Arduinos ein enj28j60 und 
verkabel diese über das Netzwerkkabel. Zusätzlich benötige ich aber auch 
noch einen Switch, um im Falle eines Stromausfalles benötige ich durch 
die Netzwerkverkabelung wesentlich mehr Strom, um den Ausfall 
überbrücken zu können.

Gibt es alternative kostengünstige Möglichkeiten, eine Kommunikation 
zwischen Arduino und Raspberry herzustellen.
Direkt über das RX/TX Interface? Stelle ich mir bei der Reichweite 
problematisch vor? Vorallem, müsste ich sicherstellen, dass alle Daten 
auch im Ziel ankommen.

Gibt es Vorschläge?

Danke!

von Captain Obvious (Gast)


Lesenswert?

der nahe Arduino über I2C, der andere über RS485 an den R-PI 
anschliessen.
Hat den Vorteil, du kannst sowohl über I2C und RS485 später noch viel 
mehr Arduinos anschliessen, wenn du auf einmal Lust dazu bekommst.
Für I2C brauchst du nur ein bisschen Draht, für RS485 gibts fertige 
Shields

von 6a66 (Gast)


Lesenswert?

Captain Obvious schrieb:
> der nahe Arduino über I2C, der andere über RS485 an den R-PI
> anschliessen.

Warum nicht beide über RS-485? Oder gar beide über RS-232. Bei 300Baud 
ist auch RS232 durchaus machbar.

Thomas schrieb:
> senden können bzw.
> aktuellen Status empfangen können.

Das mit dem Status lässt isch mit mit Aufforderung Status 
bewerkstelligen, gibt dann keine Kollision.

rgds

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Thomas schrieb:
> Vorallem, müsste ich sicherstellen, dass alle Daten
> auch im Ziel ankommen.

dazu kannst du dir ja ein geeignetes Kommunikations-Protokoll ausdenken, 
z.B. die einzelnen Datenpakete mit einer Sequenz-Nummer auszustatten 
(braucht ja vermutlich bei der lahmen Übertragung und Datenmenge nur 1 
Byte groß sein). Sofern ein Paket fehlt, wird das ja dann dem Empfänger 
sofort auffallen.

: Bearbeitet durch User
von Harald A. (embedded)


Lesenswert?

Wenn überall RX/TX verfügbar ist, dann könnte man durchgängig RS485 
nutzen. Lästig ist bei RS485 nur die Steuerung der 
Sende/Empfangsrichtung über zusätzliche Signale. Im einfachsten Fall 
könnte man da aber ein Modul mit Auto Direction verwenden. Suche mal 
nach "rs485 auto direction module", da gibt es was zu finden. Bei diesen 
wenigen Bytes kann man sich im Protokoll ohne explizite Kontrolle der 
Richtung einig werden.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Die Arduinos durch ESP ersetzen.

Oder die Megas jeweils zum I2C Slave eines ESP-01 machen.

von Frank K. (fchk)


Lesenswert?

Thomas schrieb:
> Hallo,
>
> ich habe 2 Arduino Mega 2560 und einen Raspberry.
>
> Der Raspberry soll zu beiden Arduinos Steuerbefehle senden können bzw.
> aktuellen Status empfangen können.
>
> Arduinos untereinander kommunizieren nicht miteinander.
>
> 1 Arduino ist vom Raspberry etwa 50cm entfernt, der andere etwa 10Meter.
>
> Es werden in der Sekunde maximal 30-40 Bytes übertragen.

RS232 ist am einfachsten.

Steck das hier in Deinen Pi:

https://www.reichelt.de/USB-Konverter/DIGITUS-DA-70158/3/index.html?ACTION=3&GROUPID=6105&ARTICLE=136304&OFFSET=16&;

und Du hast zwei RS232. An die Arduinos kommen Pegelumsetzer mit MAX232 
oder MAX3232.

Damit sind 10m überhaupt kein Problem.

fchk

von Piter K. (kurczaq)


Lesenswert?

Wieso nicht mal kabellos versuchen? 3 x NRF24L01 kosten nicht die Welt. 
Man spart sich die Kabel (die kosten ja auch Geld). Ein Cat5 Kabel 
kostet dich vielleicht zwischen 20 und 30 cent / m (als Meterware). Wenn 
Du noch RS232 Stecker haben willst, summiert sich das dann doch.

Ein NRF24l01 kostet dich aus China vielleicht 1 Euro, aus D vielleicht 
2-3 Euro.

Für beide RPi und Arduino gibt's fertige Libraries dafür.

von Joachim B. (jar)


Lesenswert?

steck den Arduino in die USB Buchse vom PI

dann kannst du seriell Daten tauschen und sogar den Ardu umprogrammieren 
auch aus der Ferne über Netzwerk

die IDE 1.8.2 & 1.8.3 gibts auch für PI Arm

hier läuft gerade mein DHT22 am Ardu am PI

Mo 10.Jul 2017
19:26:00 Uhr R
 DTH H= 56.0%
 DHT T= 24.2*C
 RTC T= 24,0*C

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.