Daten-Bus zum sammeln von mehreren Daten von Arduinos

Hallo Community.

Ich bin gerade dabei mir eine kleine Hausautomation mit dem Arduino zu bauen/planen.

Dazu hat jeder Raum einen "Raumcontroller" dieser besteht aus einem Arduino UNO mit einem kleinen 4 Zoll Nextion HMI. Das Programm auf dem Arduino hat folgende Funktionen:

  • Schaltet von 1 bis 2 Lichtstellen im Raum (über Bistabile Relais)
  • Temperaturmessung über einen NTC-Widerstand
  • Visualisierung über das Nextion, Anzeige der Temperatur sowie Zustand der 1 bis 2 Relais.

Bis jetzt ist jeder Raumcontroller für sich alleine zuständig und die Daten bleiben nur im Raumcontroller.
Für mich wäre jetzt eine ultimative Lösung die ich suche. Wenn ich die Daten der Arduinos zusammenfassen könnte zu einer Zentrale.

Die Zentrale würde eine Visualisung z.b. das Nextion in 7 Zoll der Wohnung durchführen, woher ich auch alle Funktionen der Räume (Licht AN/AUS ggf. Temperatur einstellen) steuern könnte. Vielleicht auch mit einem Ethernet Board auf mein Smartphone und Tablet eine Übersicht/Steuerung durchführen könnte.

Das wären 6 Raumcontroller und ein 7ter Arduino der die Daten der Waschmaschine im Keller aufnehmen würde.

Für mein Projekt suche ich einen Daten Bus. Dieser über ein paar Meter (50 m) Problemlos funktionieren kann und auch die Spannungsversorgung über eine Leitung (ein TP wie CAT6 oder LIYCY) verschicken kann.

Ich hab schon viel mit CAN-Bus gelesen aber bin mit dem Arduino noch nicht schlau daraus geworden. CAN wäre auch ein Echtzeitbus was in meinem Projekt unkritisch ist. Aber wie verhält es sich mit dem Programmieraufwand??

Eine RS485 Bus wäre von der Geschwindigkeit ausreichend aber wie verhält sich ein Arduino UNO wenn er zwei Software Serial verabeiten muss? mit dem fehlenden UART-Buffer? Oder kann ich für den BUS vielleicht auf den Hardware RS232 vom Arduino zurückgreifen?

Der I2C ist nur ein Short-Distance BUS, oder gibt es möglichkeiten über Repeater die Signalreichweite zu erhöhen?

Oder über Ethernet die Arduinos verbinden? Hat das schon jemand gemacht?

Also ich brauche etwas Hilfe vielleicht auch nur ein Denkanstoß/Starthilfe vielleicht kommt dann das meiste von alleine.

Zur meiner Person ich bin gelernter Elektroniker für Energie und Gebäudetechnik und Meister. Seit bald 5 Jahren arbeite ich im Maschinenbau und bin SPS-Programmierer (Siemens und WAGO) von da kenne ich sehr viele BUS-System. Ein Arduino zu Programmieren fällt mir nach 1 - 2 Stunden auch nicht schwer aber eine vernetzung mit Arduinos vorzunehmen ist für mich etwas Neuland und erweißt sich als harter brocken.

mit freundlichen Grüßen

Artur

Ein RS485-Bus wäre wohl für dein Projekt die bessere Alternative.
Leider habe ich damit keine Erfahrung, aber es gibt hier zahlreiche User die diesen Bus dafür bevorzugen würden und auch sicher Tipps haben.
Und du kannst auch mit 2 mal SoftwareSerial am Uno arbeiten. Das setze ich auch mit dem Nextion in verschiedenen Projekten ein.

Mit dem I2C-BUS geht es auch, wenn du entsprechende Extender-ICs einsetzt. P82B715

Ich würde die Knoten über die Steckdosen verbinden, Powerline oder ein sonstiges Home-Automation System.

Hallo,

Powerline und Netzwerk wäre auch eine Lösung. Könnte auch mal jemand probieren. :slight_smile:

Zur seriellen. Die Daten sind bei RS232, TTL 232 und RS485 genau gleich. Für dich als Programmierer macht das keinen Unterschied. Nur die Art der Übertragung ist mit RS485 robuster ab dem Punkt wo die Signale den zusätzlichen IC verlassen. Er arbeitet mit dem Differenzsignal und nicht mit dem absoluten Pegel eines Signals. Störungen heben sich auf. CAN arbeitet ähnlich.

Grundlegend ginge das auch mit dem I2C Busextender, laut Datenblatt ist jedoch nach 50m Schluss. Weiß nicht welche Erfahrung Hot System damit schon gemacht hat. Wäre mal interessant.

Jede Hardware Serielle hat einen 63 Byte Ringbuffer in ihrer Lib.

hier habe ich in #25 was fertiges als Basis ...
http://forum.arduino.cc/index.php?topic=542997.0

Netzwerkkabel könnte man nehmen. Nur das mit der Spannungsversorgung sollte überlegt sein. Der Spannungsverlust über der Leitung könnte zu groß werden. Wenn überhaupt musste mit höhere Spannung, zum Bsp. 24V einspeisen und jeder Controller macht sich daraus seine eigenen 5V. Wenn damit noch Lasten geschalten werden sollen vielleicht mit 48V speisen. Müsstest mal rechnen wie hoch die maximal benötigte Leistung wäre. Das wird die Herausforderung.

Wenn jeder Controller schon seine eigene Versorgung hat, möchtest du kein WLAN machen? Vielleicht wäre auch ein ESP/Wemos mit WLAN was für dich. Kenne ich nur vom hören und mitlesen. Müßtest du weniger drum herum bauen.

Zur seriellen. Die Daten sind bei RS232, TTL 232 und RS485 genau gleich. Für dich als Programmierer macht das keinen Unterschied. Nur die Art der Übertragung ist mit RS485 robuster ab dem Punkt wo die Signale den zusätzlichen IC verlassen. Er arbeitet mit dem Differenzsignal und nicht mit dem absoluten Pegel eines Signals. Störungen heben sich auf. CAN arbeitet ähnlich.

Einspruch
RS232, TTL und RS485 sind vieleicht im Bezug auf das codieren der Bits gleich und es wird immer die Serielle Schnittstelle das Arduino verwendet. Elektrisch und darum auch die Reichweite ist verschieden. Außerdem ist RS232 und TTL eine Punkt zu Punkt Verbindung während RS485 ein Bus ist. Beim Bus muß durch die Programmierung sichergestellt sein, daß immer nur ein Gerät sendet.
Grüße Uwe

Doc_Arduino:
.....
Grundlegend ginge das auch mit dem I2C Busextender, laut Datenblatt ist jedoch nach 50m Schluss. Weiß nicht welche Erfahrung Hot System damit schon gemacht hat. Wäre mal interessant.
.....

Bisher habe ich auch "nur" 35m überbrückt. Und das mit einfachem Telefonkabel 2x2x0,6.
Habe aber Beiträge im Web gelesen, die von 200m mit Kat6-Kabeln geschrieben haben.
Ich habe es nie ausprobiert.

Hallo,

@ Uwe:
einen wirklichen Einspruch/Widerspruch sehe ich nicht. Deshalb schrieb ich von den seriellen Daten aus Programmierersicht. Der Rest ist im verlinkten Thread hoffentlich lesbar. Die Ergänzung mit Punkt oder Busverbindung ist aber nicht falsch. Zugegeben.

@ Hot System:
aha, gut zu wissen. Danke.

Schaue mal hier von einem Arduino User aus dem Forum eine gute umsetztung eines Busses.
evtl kannst du hier die Hardware Serielll nutzen und Software für Nextion. Bootloader weghauen und Programmer nutzen ist hier natürlich Pflicht :grinning: .

Link

Gruß
DerDani

volvodani:
Link

Dein Link funktioniert nicht.

Jetzt ja...danke.

HotSystems:
Dein Link funktioniert nicht.

Link aus dem Quelltext :wink:

Immer die gleiche Sch.......
korrigiert.

Gruß
DerDani