Forum: Mikrocontroller und Digitale Elektronik Systemaufbau mit mehreren mControllern


von Marvin G. (d3v3lop3rde)


Lesenswert?

Hallöchen!

Für ein Softwareprojekt in meinem (dualen) Studium soll ich ein System 
entwerfen. Es handelt sich dabei um ein Unternehmen, dass Escaperooms 
betreut.

Der Aktuelle Systemaufbau sieht wie folgt aus:

Im Escaperoom gibt es zwei Schaltpaneele, welches mit einem Arduino Mega 
2560 betrieben wird. Auf jedem Mega sitzt ein Ethernet Shield. Die Kabel 
laufen zu einem Switch.

Die Megas haben einen Webserver der die Pins ausliest und als JSON 
String (ReST Like) per GET zur Verfügung stellt. Einer der Megas steuert 
zusätzlich noch 9 LED's per 0.0.0.0/?[pinNr]

Der folgende Systemaufbau soll wie folgt aussehen:

Der Raum soll um 2*3 Oled Displays erweitert werden, die mit jeweils 
einem Rotary Encoder angesteurt werden. Ich plane pro Arduino (Nano?) 2 
Oleds anzusteuern (Da auf diesen Displays scheinbar nur zwei Adressen 
gesetzt werden können)

Es muss ein Spannungssensor ausgelesen werden.

Ich möchte mich aufgrund des Aufwands davon trennen jedem Arduino 
potentielle 1 Gigabit Leitungen hinzulegen und zu switchen. Der weiteste 
Arduino Mega ist Luftlinie 7 Meter entfernt und über Kabelkanal knappe 
15 Meter.

Aufgrund der einfachen Störbarkeit und Sicherheitsbedenken möchte ich 
auf Drahtlos Lösungen verzichten.

Ich habe mir bisher I2C, CAN und Serielle Kommunikation angeschaut.

Am meisten schmeichelt mir eigentlich I2C, weil ich damit nicht nur N 
Arduinos untereinander schalten kann sondern auch direkt Displays (0,97" 
OLED) ansteuern und Sensoren auslesen kann.

Serielle Kommunikation ist raus, da ich für jeden Arduino eine 
Schnittstelle zum Lesen bräuchte.

CAN scheint mir die für den Feldeinsatz besser geeignete I2C Alternative 
sein

Was meint ihr dazu?

Das Unternehmen hat mir für Material kein Budgetlimit gesetzt, ich 
schätze aber, dass mehr als 500€ nicht drin sind.

Der Dozent hätte Ende des Monats gerne einen Zwischenstand, die Lösung 
muss Ende des ersten Quartals in die Praxis umgesetzt sein.

Kurz zu meiner Person:

Ich entwickle eigentlich in Java aber für kleinere Arduino Projekte habe 
ich mich bereits mit der Arduino Syntax beschäftigt.

Vielen Dank im Voraus :)

von Frank K. (fchk)


Lesenswert?

Marvin G. schrieb:
> Ich habe mir bisher I2C, CAN und Serielle Kommunikation angeschaut.
>
> Am meisten schmeichelt mir eigentlich I2C, weil ich damit nicht nur N
> Arduinos untereinander schalten kann sondern auch direkt Displays (0,97"
> OLED) ansteuern und Sensoren auslesen kann.

I2C ist nur für die Kommunikation innerhalb einer Baugruppe oder eines 
Gerätes gedacht und geeignet. Mehr wie 50cm empfehle ich Dir nicht.

Grund 1: Störempfindlichkeit: Die Knoten können die Leitungen aktiv nur 
nach GND ziehen, nicht nach VCC.

Grund 2: Der I2C-Standard schreibt eine gewisse maximale Buskapazität 
vor. Stelle Dir die Busleitungen plus GND als langgezogene 
Kondensatorplatten vor. Ein Kondensator braucht Zeit zum Aufladen und 
zum Entladen, und das Aufladen kann nur über den jeweiligen Pullup 
geschehen. Irgendwann ist Feierabend.

I2C als Kommunikationsbus zwischen Geräten ist eine dumme Idee.

> Serielle Kommunikation ist raus, da ich für jeden Arduino eine
> Schnittstelle zum Lesen bräuchte.

Nö. Schau Dir RS-485 an. Da hängen n Geräte an einem Zweidraht-Bus. Je 
nach Bitrate sind mehrere 100m drin.

> CAN scheint mir die für den Feldeinsatz besser geeignete I2C Alternative
> sein

Ja. Leider hast Du Dir mit AVR die dümmstmögliche Architektur dafür 
ausgewählt. Sowas wie Teensy 3.6 oder neuer (ARM, NXP) oder auch Chipkit 
(Microchip PIC32) wäre technisch besser geeignet - und auch mit dem 
Arduino Framework programmierbar.

fchk

von Stefan F. (Gast)


Lesenswert?

Billig mit CAN und Arduino Kompatibel wären auch die BluePill Modul .
http://stefanfrings.de/stm32/stm32f1.html#bluepill

von Gerd E. (robberknight)


Lesenswert?

Marvin G. schrieb:
> Ich möchte mich aufgrund des Aufwands davon trennen jedem Arduino
> potentielle 1 Gigabit Leitungen hinzulegen und zu switchen.

Warum? Netzwerkkabel und Netzwerkswitche sind billig und sehr gängig, 
die Ethernet-Shields für Arduino wohl nicht perfekt, aber etabliert, 
verbreitet und verstanden.

Was ich mir vor allem überlegen würde ist das Gesamtkonzept: Du hast 
bisher schon 2 Schaltpaneele die per Ethernet angebunden sind. Du fügst 
jetzt noch ein paar OLED-Displays meinetwegen per CAN hinzu. In nem 
halben Jahr kommt der nächste Student, der soll nen paar neue Sensoren 
dazu bauen und der nimmt dafür Funk mit nrf24L01. Der nächste nimmt für 
seinen Kram dann RS-485 - und so weiter.

Schon bald hast Du ein Gestrüpp von verschiedensten, inkompatiblen 
Verbindungen. Das dann zu durchblicken und sinnvoll zu erweitern oder 
anzupassen wird immer schwerer. Man muss sich dafür dann in jede der 
verwendeten Technologien einarbeiten.

Ich würde daher bei einer Verbindungstechnologie bleiben solange die 
Anforderungen dem nicht komplett entgegenstehen. Darüber kann dann jede 
Komponente direkt mit jeder anderen reden, ohne daß Du irgendwelche 
Adapter bauen oder entwickeln müsstest.

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.