Hallo, ich beschäftige mich derzeit mit dem Thema Hausautomatisierung im Zusammenhang mit Raspberry und Arduino. Der Raspberry übernimmt die Rolle der Zentralen Steuereinheit, der Arduino (in jedem Stock einer?) die Rolle des Schaltens der Lampen usw. Außerdem sind am Arduino auch die Sensoren angeschlossen. Ich überlege nun, wie ich die Kommunikation zwischen Raspberry und Arduino bewerkstellige. Ich könnte per USB kommunizieren, habe hier aber das Problem, dass ich nur einen Arduino (max. 2) an den Raspberry anhängen kann. Bessere Lösung wäre meiner Meinung I2C, somit kann ich einige Arduinos ansteuern. Aber hier gibt es ein anderes Problem. In einigen Beiträgen hier steht, dass es Relaiskarten mit SPI oder eben I2C Anschluss gibt, und man diese eher verwenden sollte, als 1:1 Ports des Arduinos mit denen der Relaiskarte zu verbinden. Anderer Vorteil ist natürlich, dass man auch nur einen "kleineren" Arduino braucht und vielleicht keinen MEGA verwenden muss. Nur belegt meine Kommunikation mit dem Raspberry ja schon den I2C Port... Hier habe ich also das Problem, dass mein I2C Port schon anderwertig belegt ist. Außerdem haben vielleicht auch Sensoren einen I2C Port. Wie kann ich das lösen? Lg Dominik
Sowohl I²C als auch USB sind schwierig für Kommunikation über derart lange Wege. USB ist aufwändig, aber differentiell hat Vorteile, schau mal unter Hausbus, da wären z.B. CAN, EIB, RS-485.
USB ist auf 5 Meter beschränkt. Und auch bei i2C würde ich nicht mehr als 2 Meter nehmen. Fällt im Prinzip alles flach, was onboard ist. Am einfachsten wäre wohl noch WLAN. Adapter und Shields gibt es ja zu kaufen.
Dominik Mimler schrieb: > Nur belegt meine Kommunikation mit dem Raspberry ja schon den I2C > Port... Hier habe ich also das Problem, dass mein I2C Port schon > anderwertig belegt ist. I2C ist ein Bus. Wenn du den schon mit einem Kommunikationspartner so zustopfst, dass da nix mehr geht, solltest du die auszutauschenden Dateninhalte etwas reduzieren.
Ich würde RS-485 verwenden. Der RPi ist der Master, die Arduinos sind die Slaves. Der Master fragt alle Slaves nacheinander ab, um Messwerte einzulesen, und sendet eventuelle Befehle. Ich würde in jeder gesendeten Nachricht des Masters das erste Byte ein Startbyte und das zweite die Adresse des Slaves sein lassen. Dann kommt der Befehlz zum Senden de Messwerte oder ein Licht einzuschalten... Wenn der Slave dann seine Adresse und die Aufforderung zum Sender erhält sendet er die Werte an den RPi
:
Bearbeitet durch User
Hallo Dominick, ich habe eine Schaltung mit ATMega328 per UART am Raspberry Pi, die über RFM12 Funkbefehle an Satellitenschaltungen mit ATMega8 oder ATMega328 schickt und die Antworten der Module wieder an den Raspberry Pi. Sind keine Arduinos, sondern selbst gemacht, aber das liesse sich genauso mit Arduino lösen - es gibt sicher ein Shield für Arduino mit RFM12. Mal kurz gesucht: http://jeelabs.org/2011/02/02/meet-the-rfm12b-board/ http://arduino-praxis.ch/2012/10/experimente-mit-rfm12b-shield/ http://openenergymonitor.org/emon/node/271 Versorge eine ganze Etage mit Funkbefehlen, sogar vom 2. OG ans andere Ende des Gartens (40 Meter?) reicht es - mit den richtigen Antennen. Vg, Conny
M. H. schrieb: > Ich würde jeder in gesendeten Nachricht des Masters das erste Byte ein > Startbyte und das zweite die Adresse des Slaves sein lassen und dann > kommt der Befehlz zum Senden de Messwerte oder ein Licht > einzuschalten... > Wenn der Slave dann seine Adresse und die Aufforderung zum Sender erhält > sendet er die Werte an den RPi Ein CAN-Controller macht das alles quasi automatisch, was die Implementierung stark vereinfacht...
Dr. Sommer schrieb: > Ein CAN-Controller macht das alles quasi automatisch, was die > Implementierung stark vereinfacht... Wenn man UART schon kann, muss man nur ein bisschen Programmieren und sich nicht in den CAN-Bus einarbeiten.
M. H. schrieb: > Wenn man UART schon kann, muss man nur ein bisschen Programmieren und > sich nicht in den CAN-Bus einarbeiten. Ist die große Frage, ob das Programmieren und Testen mehr Aufwand ist als den Wikipedia-Artikel zu CAN durchzulesen...
Dr. Sommer schrieb: > Ist die große Frage, ob das Programmieren und Testen mehr Aufwand ist > als den Wikipedia-Artikel zu CAN durchzulesen... Und CAN muss man auch Programmieren und Testen...
M. H. schrieb: > Und CAN muss man auch Programmieren und Testen... Ja, da aber die Message-ID-Filterung, Arbitrierung (inkl. Vermeidung von gleichzeitigem Senden von mehreren Seiten), Checksum-Berechnung macht alles die Hardware, daher fällt das wesentlich einfacher aus. Im Endeffekt packt man die Nutzdaten (Kommando ala "Licht an" oder Messwerte) in ein Register und der Rest geht automatisch, man braucht kein Protokoll zu implementieren.
Also, wenn ich das hier so zusammenfasse: I²C und USB sind unbrauchbar für meine Zwecke, aufgrund der Leitungslänge. Möglichkeiten sind RFM12, CAN und RS-485. RFM12: Ich möchte derzeit noch kein Funkmodul nutzen (In der späteren Ausbaustufe schon, um auch Funksteckdosen steuern zu können). RS-485: Hier muss ich das Protokoll selber programmieren -> Mehr Aufwand CAN: Protokoll und Shields vorhanden -> Mehr Kosten Ich kann es mir also aussuchen :) Wie lange dauert es erfahrungsgemäß ein funktionierendes Protokoll in RS-485 auf die Beine zu stellen? CAN wird sicher eine geringere Einarbeitungszeit haben, da durch die Controller schonmal vieles wegfällt. Danke!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.