Schnittstelle zwischen mehreren Arduinos

Hi,

für mein Roboter-Projekt habe ich die Idee, mehere Arduinos modular miteinander zu betreiben. Z.B. einen für den Antrieb, einen zur Messung der Sensoren und einen (BT) als Steuerungseinheit und zur Kommunikation mit dem PC. Das Problem ist jetzt, wie die einzelnen Arduionos miteinanmder Daten austauschen könnten.

Jetzt stellt sich mir die Frage, ob es dafür schon eine fertige Bibliothek gibt, denn man könnte sich ja theoretisch eine Schnittstelle über die digitalen Ein- und Ausgänge selber programmieren?! Kennt jemand von Euch eine solche Schnittstelle?

Über eine Antwort würde ich mich sehr freuen, :slight_smile:
intercat

das einfachste duerfte wohl eine vernetzung mt I2C sein. dafuer gibt es schon einen bibliothek und beispielcode.

1 master board koordiniert und fragt werte ab, die slave boards warten auf befehle und fuehren diese aus.

falls du das "gehirn" des ganzen sehr schnell ueber irgendwelche aenderungen informieren musst, dann wird wohl noch eine interrupt leitung vom slave zum master noetig sein, so dass der master bei signalisierung die entsprechenden daten abrufen kann.

d.h. du benoetigst mindestens 2 leitungen fuer strom, 2 fuer den BUS (SDA/SCL) und dann noch bei bedarf die irq leitungen.

das einfachste duerfte wohl eine vernetzung mt I2C sein. dafuer gibt es schon einen bibliothek und beispielcode.

Die Bibliothek zu I2C hab ich gefunden. Danke.

Ist das I2C ein Bussystem, d.h. kann ich mehere Slaves anschließen?

falls du das "gehirn" des ganzen sehr schnell ueber irgendwelche aenderungen informieren musst, dann wird wohl noch eine interrupt leitung vom slave zum master noetig sein, so dass der master bei signalisierung die entsprechenden daten abrufen kann.

Für die "interrupt leitung" nehme ich dann auf dem Master einen digitalen Input und auf dem Slave einen digitalen Output? Habe ich Dich da richtig verstanden? Wenn es wichtige Mitteilungen gibt, schaltet der Slave Spannung auf den digitalen Output. Der digitalen Input auf dem Master überwacht mit hoher Priorität den didgitalen Input und ließt bei Spannung sofort per I2C die Daten aus...?

Ist das I2C ein Bussystem, d.h. kann ich mehere Slaves anschließen?

ja. ich weiss nicht ob die lib 7bit oder 8bit addressen verwendet, aber du kannst fuer den master und die slaves die addressen frei vergeben.
mit 127 devices duerfte der roboter doch laufen oder ?

Für die "interrupt leitung" nehme ich dann auf dem Master einen digitalen Input und auf dem Slave einen digitalen Output? Habe ich Dich da richtig verstanden? Wenn es wichtige Mitteilungen gibt, schaltet der Slave Spannung auf den digitalen Output. Der digitalen Input auf dem Master überwacht mit hoher Priorität den didgitalen Input und ließt bei Spannung sofort per I2C die Daten aus...?

das hatte ich mir so gedacht.

127 devices duerfte der roboter doch laufen oder ?

jepp, das dürfte für's erste ausreichen :wink:

das hatte ich mir so gedacht.

ok, dann hab ich's ja auch verstanden :slight_smile:

Du kannst auch über UART Arduinos miteinander verbinden - allerdings immer nur einen mit einem anderen.

Den Mega kann man mit 4 anderen verbinden.

Aber:

I2C ist sinnvoller.

Ich hab 'nen Mega. Warum ist I2C sinnvoller? Wo ist der Unterschied, bzw. wie funktioniert UART?

UART ist eine serielle Schnittstelle - im Prinzip die Gleiche die auch über USB/serielle Schnittstellenstecker den Arduino mit einem PC verbindet.

Es wird mit dem serial Befehlen genutzt.

Vorteil:
-einfach (?)
Nachteil:
-man muss vor dem Verbinden mit dem PC evtl die Verbindungen entfernen
-man kann nur 1 Device mit einem anderen (Ausnahme Mega, der hat 4 davon) verbinden

Insbesondere falls du ein paar Arduinos verwendest brauchst du einen Mega als "Vermittelungsstelle" oder als "Cheff".

ah so, danke für die Infos :slight_smile:

Hallo

falls Dir I2C zu langsam sein sollte (ich meine I2C hat 400kBit/s) könntest Du auch SPI mit verschiedenen SS# Pins probieren, dass wäre dann locker Faktor 10 fixer...

LG
Peter

Hi,

ich muß mal gucken, welche Sensoren ich nehme und auf welcher Schnittstelle die Sensordaten verschickt werden. Ich hatte da sowohl was von I2C alsauch von SPI gelesen. Aber danke für den Hinweis!

Grüße,
intercat