ich saniere gerade mein Haus und baue einige Sensoren, z. B. Temperatursensoren ein. Meine Idee ist, immer eine Gruppe von Sensoren, die nahe beieinander sind, auf einem Arduino-Board zusammenzufassen und dann die Daten über einen Bus zu einem zentralen Rechner zu übertragen.
Momentan mache ich mir Gedanken darüber, welchen Bus ich dazu verwenden soll. Ich suche eine Lösung, die wenig Aufwand sowohl auf der Hardware- wie auch auf der Softwareseite mit sich bringt. RS232 scheidet aus, weil es nur eine Punkt-zu-Punkt-Verbindung ist und ein Bus weniger Aufwand hat. Ethernet hat das gleiche Problem und ist auch zu aufwändig. Momentan tendiere ich zu CAN-Bus, habe aber damit Null Erfahrung.
Die Randbedingungen: Leitungslänge 10 bis max. 20m; Master-Slave-Struktur oder Multi-Master; soll im wesentlichen als Sensor-Netzwerk im Haus dienen, also geringe Datenraten; geringer Aufwand, aber natürlich funktionssicher.
Elektrix:
Ethernet hat das gleiche Problem und ist auch zu aufwändig.
Du solltest die großzügige Verlegung von Ethernet für Computer und Mediageräte im Haus ins Auge fassen. Es ist immer noch mit weitem Abstand das Beste für schnelle und störungsfreie Verbindungen zwischen Geräten. Wenn du schon Ethernet liegen hast, kannst du gleich auch die Arduinos darüber vernetzen.
Du könntest paarweise verdrillte, abgeschirmte Kabel für Differenzsignale verlegen. Ob Du dann Ethernet, CAN oder RS485 drüberschickst, wird die Zeit zeigen.
das ist die richtige vorgehensweise. ob Du dann ethernet, CAN oder RS485 nimmst, kannst Du später entscheiden oder sogar noch ändern. leg' überall CAT6-kabel rein und teste.
eine alternative wären auch ESP8266. haben WLAN und einen programmierbaren controller drauf (stk. ca. 5 euro).
danke für den umfassenden Input. RS485 steht bei mir gerade hoch im Kurs, ist adressierbar und ein Bus. Ethernet verlege ich sowieso fürs LAN. Ich möchte aber die Haustechnik hardwaremäßig vom Netzwerk trennen, sie soll auch nicht von außen erreichbar sein. Dann muss ich mich nicht mit immer neuen Sicherheitslücken beschäftigen.
WLAN oder andere Funkschnittstellen will ich nicht verwenden, um den Elektrosmog niedrig zu halten.
Ich sehe den Vorteil eines Busses wie RS485 oder CAN darin, daß ich nur eine Leitung durchschleife, d. h. geringerer Aufwand in der Hardware. Als Kabel würde ich Telefonleitung 2x2x0.8 verwenden.
Gibt es eigentlich für solche Anwendungen feste Protokolle, d. h. Standardbefehle um die einzelnen Busteilnehmer anzusprechen und die Daten abzurufen? Welche Standards sind üblich für die Datenübertragung? Ich dachte an sowas wie CSV, dann kann ich die Daten auf dem Server einfach in Tabellen schreiben.
Elektrix:
Vielleicht hat jemand dazu noch eine gute Idee.
Ich bin mit allem rund um Bussysteme ziemlich fremd. Was mir aber in letzter Zeit nach anfänglichen Schwierigkeiten gefällt, ist der I¹C-Bus. Der ist hardwaremäßig IMO nicht so irre anspruchsvoll, kann aber für vieles eingesetzt werden.
Sorge auf jeden Fall für ein bisschen Reserve (verlege mindestens einen Draht/Leiter, der erstmal frei bleibt). Man kann auch mit nur einem freien Draht vieles machen, wenn man sich nur ordentlich anstrengt (und wenn’s nötig ist). Ich bin hinsichtlich solcher (Reserve-) Dinge ziemlich konservativ.
I2C ist für die Kommunikation zwischen ICs innerhalb von Geräten entwickelt worden (daher auch der Name. Inter IC). Für längere Strecken braucht man da spezielle Transceiver ICs. Die sind auch bei RS485 nötig, aber wesentlich billiger und einfacher.
Elektrix:
... RS485 steht bei mir gerade hoch im Kurs, ist adressierbar und ein Bus. Ethernet verlege ich sowieso fürs LAN. Ich möchte aber die Haustechnik hardwaremäßig vom Netzwerk trennen, sie soll auch nicht von außen erreichbar sein. Dann muss ich mich nicht mit immer neuen Sicherheitslücken beschäftigen.
....
RS485 ist nicht adressierbar. Die Norm spezifiziert nur die elektrischen Teil der Schnittstelle nicht aber das SW Protokoll für die Datenübertragung und den Master-Slave-Betrieb.
Du kannst ja 2 getrennte Ethernetnetze verlegen. Das für die Hausinstallation muß ja nicht ins Internet.
Serenifly:
I2C ist für die Kommunikation zwischen ICs innerhalb von Geräten entwickelt worden (daher auch der Name. Inter IC). Für längere Strecken braucht man da spezielle Transceiver ICs. Die sind auch bei RS485 nötig, aber wesentlich billiger und einfacher.
Stimmt. Als ich den Wikipedia-Artikel zum I¹C-Bus gerade noch einmal auf dem Schirm hatte, fiel mir der Abschnitt zur Stabilität auf. Also doch besser etwas Anderes.
CAN hat da ein definiertes Protokoll, RS485 hat viele Protokolle.
Ich habe mich für Modbus entschieden, dafür gibt es mehrere Libs für Arduino.
Als Hardware kannst du MAX485 nehmen, wenn du nicht mehr als 32 Slaves hast, sonst nimm die teurere Variante MAX488 mit 64 Slaves.
Vorteil bei der MAXxxx Hardware, die sind Stromsparender als SNxxxx.
Wie es aussieht hast du nicht viel gegoogelt, die Fragen und die noch kommen werden hättest du dir schon selbst beantworten können. Da gibt es von Volvodani, von mir und von einigen anderen bereits Threads darüber.
Auf mikrocontroller gibt es ne Liste wo "alle" Bus'se aufgelistet sind und auch Vor-/Nachteile erklärt.