Hallo Zusammen! Ich bin gerade damit angefangen mich mit der Thematik Hausautomatisierung zu beschäftigen und auf diesem Gebiet noch sehr "planfrei". Ich würde gerne damit anfangen, mein Haus (befindet sich in einer "schleichenden und permantenten Renovoerungsphase") nach und nach mit einem Hausbus auszustatten. Meine Wahl viel jetzt (vielleicht voreilig??) auf den I2C-Bus. Die Steuerung würde ich gerne über mein NSLU2 (Debian -lenny) realisieren. Ich hab mir auch gleich ein USB-I2C Inteface beim ELV bestellt um vielleicht schon ein wenig experemtieren zu können. Da ich relativ viel Erfahrung in der Softwareentwicklung unter Unix habe (ich entwickle größere SW-Systeme beruflich) sehe ich dort auch keine Probleme. Ich habe aber leider keine richtige Vorstellung davon, wie ich jetzt zum Beispiel das betätigen eines Lichtschalters als Signal auf den Bus bringen kann damit ich üner das NSLU2 bestimmte Steckdosen oder das Licht schalten kann. Kann mir jemand einen Link nennen wo diese Informationen auch "Frischlingsmäßig" erklärt werden? Vielen Dank und viele Grüße, Hans
NXP i2c manual. Aber so nebenbei: i2c ist nicht für größere Buslängen geeignet. Weder hat er hohe Treiberleistung, noch Überspannungsschutz, noch ist er galvanisch isoliert. i2c ist ideal für erweiterbare Kommunikation auf ein paar Steckkarten in einem Gerät. Dafür wurde er auch ausgelegt. Das nächstbeste wäre RS485 mit Manchestercode aka Übertragern. Da kann ich dann nicht ganz so viel meckern... Mach dir erstmal Gedanken darüber, wieviel Eigenintelligenz die einzelnen Blätter haben sollen. Gruß - Abdul
Ich habe meine Hausautomation via CAN Bus realisiert. Der große Vorteil des Einsatzes von CAN Controllern ist, dass man sich nicht um den Bus, mögliche Kollisionen, korrekte Übertragung usw. kümmern muss. Daten senden, fertig! Meine Universalmodule für die UP-Dose haben 13 frei konfigurierbare I/O Pins. Über eine Huckepackplatine kann ich bei Bedarf zwei 230V Triac-Schaltstufen anfügen. Die Zentrale bildet bei mir ein normales Centrino Notebook (<20W Verbrauch), welches über ein RS232/CAN Gateway an den Bus angeschlossen ist. Bei meiner Steuerung wird also der Lichtschalter an ein Universalmodul angeschlossen. Das Modul sendet eine Nachricht an die Zentrale, sobald der Schalter betätigt wird. Die Zentrale entscheidet aufgrund ihrer Programmierung was nun zu tun ist und sendet dann den Schaltbefehl an das Universlamodul mit 230V Schaltstufe an welchem die zugehörige Glühbirne angeschlossen ist (oder mehrere Befehle an mehrere Module, z.B. Treppenhausbeleuchtung). Wenn Du noch Fragen hast, melde Dich ruhig per PN.
Hallo! Vielen Dank für eure Antworten. Wenn ich euch richtig verstehe, ist der i2c nicht unbedingt eine gute Wahl, oder? @Abdul: Eigenintillegenz müssen die einzelnen Knoten ja eigentlich nicht haben, das die Steuerung über die NSLU2 erfolgen soll oder habe ich da jetzt etwas falsch verstanden? @Micha: Das hört sich sehr interessant an... Wie sieht ein solches Universalmodul von Dir denn aus? Viele Grüße, Hans
I2C ist gar keine Wahl bei den im Haus üblichen Leitungslängen. Nimm was RS485-basiertes.
@Hans Mein Universalmodul ist eine runde Platine mit 50mm Durchmesser. In der Mitte sitzt ein ATmega8, darüber die 5V Spannungsregelung mit 7805, darunter der CAN Controller MCP2515 und Transceiver PCA82C251. Rund herum am Rand der Platine sitzen Stiftleisten im RM 2mm auf welchen die IO Pins herausgeführt werden. Jedem IO Pin steht ein Masse Pin und ein 5V Pin zur Seite, um angeschlossene Sensoren/Aktoren zu versorgen. Eingangsspannung und CAN Bus werden über Schraubklemmen verbunden. Ich habe derzeit 12 dieser Module im Einsatz (drei weitere folgen noch). 10 davon haben 230V Schaltstufen an denen meine Rollläden hängen. Die Busleitung besteht aus geschirmter Fernmeldeleitung 0,6mm² in zwei Ästen zu je ca. 70m Länge.
MoinMoin, nun I2C ist ja nun nicht so schlecht. In Sachen Leitungslängen gibt es auch Repeater-ICs... Gerade in Hinsicht auf Linux hat I2C auch einen Vorteil, in aktuellen Kernel-Versionen sind bereits entsprechende Kernel-Module enthalten. Eine Anlaufstelle, um sich etwas zu belesen wäre hier: http://www.harbaum.org/till/i2c_tiny_usb/index.shtml und auch hier: http://bralug.de/wiki/BLIT2008-Board_mit_i2c-tiny-usb-Firmware Grüße Uwe
I2C ist als Hausbus völlig unangepasst! Alleine schon dadurch, dass die Übertragung nicht symetrisch erfolgt. Lege mal 5m I2C Bus neben eine 230V Leitung. Dann hat es sich schon ausge-i2c-t. Ich bin für CAN!
Jeder der hier genannten Busse hat seine Vor- und Nachteile und persönliche Vorlieben spielen auch eine große Rolle. I2C: Ist billig, gut unterstützt mit Freeware Compilern und geht im Standard Mode (100kHz) bis 10m problemlos. I2C wird z.B. als IPMI-BUS in hochverfügbaren Systemen der Telekomindustrie eingesetzt, da können die Leitungen über mehrere Racks gehen und erreichen schon mal die 10m. Wenn man die Clockspeed auf z.B. 10kHz reduziert, kommt man auch auf größere Längen und für ein paar Sensoren und Stellglieder ists allemal genug. RS485: Ist billig, läßt große Leitungslängen zu, hat aber das ärgerliche Limit der 32 Loads an einem Bus. Wenn man RS232 für die Protokollebene verwendet ist es noch dazu watscheneinfach und wirklich universell. CAN: Ist billiger als früher aber noch immer die teuerste Lösung. Allein das man bei jedem Element einen Controller und einen Treiber braucht, schlägt mit ca. 7 Euro zu Buche - und die Menge machts halt. Als Denkanregung beschreibe ich was ich realisiert habe, in einem Wohnhaus mit 100qm Grundfläche und 3 Stockwerken+Keller. In jedem Stockwerk ist ein I2C (10kHz, 20m) vorhanden mit bis zu 8 Temperaturmeßpunkten. I2C deshalb weil es die sowohl einfachste als auch billigste Realisierung darstellt - für den Sensor nimmt man MCP9801 (12 Bit Temp-Sensor mit I2C), die Außenbeschaltung besteht aus einem Kondensator und den Adressjumpern. In jedem Stockwerk sitzt ein ATTiny2313 als I2C Master. Alle "Stockwerkscontroller" sind über RS485 vernetzt, als Master an diesem RS485 fungiert ein ATMega128 der mit einer 512MB SD-Karte als Datalogger fungiert und Minutenwerte aller max. 48 Temperatursensoren aufzeichnet. Die Ressourcen im I2C reichen ganz locker für ein Vielfaches der benötigten Datenrate. In weiterer Folge sollen in der vorhandenen Topologie aktive Stellglieder für die Heizung (Fußboden + Radiator in jedem Raum) dazukommen.
@moro 20m bei I2C sind recht mau. Zudem muss man ständig pollen. Bei RS485 muss man sich -wenn man Multimaster haben will- selbst ums Protokoll kümmern (RS232 ist kein Protokoll). Geht zwar, kostet aber unnötig Nerven und Speicherplatz. Zudem die erwähnte Einschräkung auf 32 Teilnehmer. Die o.g. CAN Komponenten kosten aktuell 3,30 Euro. Dafür kriegt man dann Störsicherheit, Multimaster und 128 Busteilnehmer. Das komplette Material für eines meiner Universalmodule kostet 8 Euro. Dafür hab ich dann einige Freiheiten. Meine Modulsoftware untersützt z.B. den Anschluß eines HD44780 kompatiblen Displays sowie einer Tastaturmatrix. Damit wird das Modul im Handumdrehen zur Anzeige- bzw. Bedieneinheit. Zwei analoge Anschlüsse zur Messung von Helligkeit und Temperatur sind auch mit drauf.
Hallo Zusammen! Nochmals vielen Dank für die umfangreichen Antworten. Aktuell bin ich aber jetzt ein wenig verwirrt... Vom Gefühl her gefallen mir die Lösungen von moro und Micha B am besten. 8 Euro für ein solches Universalmodul sind zwar schon eine Hausnummer aber im Rahmen. Ein wenig im dunkeln liegt bei mir noch die Frage, wie ich jetzt die einzelnen Module mit meiner NSLU2 auslesen bzw. antriggern kann. Gibt es da schon vorgefertigte Interfaces wie z.B das I2C<->USB Inteface? Eine weitere Möglichkeit sehe ich in der Variante von moro. Ich steuere die einzelnen "I2C-Stockwerkscontroller" über meine NSLU2 an... Viele Grüße, Hans
> Gibt es da schon vorgefertigte Interfaces wie z.B das I2C<->USB > Inteface? > ja, auf dem Webseiten, deren Links ich oben gepostet habe findest du solche Interfaces, einmal mit einem ATmega8 und auf der Seite von Till Harbaum mit einem ATtiny45... Der Aufwand für den Bau eines solchen Interface ist nicht allzu hoch. Grüße Uwe
@Micha B.: Im Prinzip hast du natürlich recht, I2C über 20m ist kein Geschwindigkeitswunder. Nur will ich ja keinen Rekord aufstellen, sondern jede Minute 8 Messwerte von je 12 Bit übertragen - und dafür reicht schon fast die sprichwörtliche Brieftaube;-) Multimasterprotokoll auf RS485 ist übrigens aus ebendiesem Grund des wahnsinnig hohen Datenaufkommens auch nicht notwendig. Die 7 EUR sind übrigens Preisbasis von heute wobei als Einschränkung anzumerken ist das ich als Österreicher mir ein paar Bauteile nicht um 10 EUR Versandspesen aus Deutschland bestellen werde ... kann also durchaus sein dass das Zeug bei euch billiger ist. Was für mich nicht unerheblich war, ist dass ich kein ausgesprochener Embedded-Freak bin. Ich hatte gar nicht den Anspruch einer universell einsetzbaren Lösung für alles und jenes, sondern die klar definierte Anforderung der Temperaturmessung mit ein bisserl Reserve um später eventuell Stellkommandos für Heizungsventile zu übermitteln. Dafür habe eine einfache und billige Lösung gesucht und bin über den Bascom gestolpert der in der Demoversion bis zu 4k Code erlaubt - langt dicke. I2C Support ist vorhanden und sehr komfortabel, auch war es ziemlich einfach den UART für ein simples Eigenbauprotokoll zu verwenden. Sogar für CF bzw. SD ist bereits einiges vorgeleistet, auch wenn ich noch mit einigen Details kämpfe.
@moro: Den Artikel hatte ich auch schon gesehen und mir danach überlegt, dass der i2c Bus für mich ideal wäre... Jetzt bin ich allerdings wirklich etwas verunsichert, welches System ich denn jetzt verwenden werde. Wie schon geschrieben, gefällt mit das System von moro und Micha B. am besten. Ich versuche mich gerade ein wenig "einzulesen" um auch mal abzuschätzen in wie weit sich die VArianten mit meinen Fähigkeiten am Lötkolben vereinbaren lassen... Viele Grüße, Hans
Tu dir selbst einen gefallen und nimm den CAN bus. Ich habe anfangs auch mit I2C geliebaeugelt. Nach ein paar Versuchen bin ich aber schnell davon abgekommen. I2C verwendet, wie schon geschrieben, keine differenzielle Datenuebertagung. Liegt irgendwo eine 230V Leitung in der Naehe dann wird das Signal ziemlich versaut. Eine gewisse Verbesserung der Uebertragungsqualitaet laeest sich zwar mit dem P82B96 erreichen, aber ueberzeugen tut das auf Leitungslaengen > 50m nicht wirklich, Ganz zu schweigen von den Mehrkosten des P82B96. Und will man spaeter mal in Richtung Multimaster gehen, dann wirds richtig spassig mit dem I2C. Ich habs nicht bereut mich fuer CAN entschieden zu haben. Es ist am Anfang etwas Aufwand sich in die Materie einzuarbeiten, aber wenn man es mal kapiert hat, erleichtert es die Entwicklung ungemein. Can Nachricht in die Register laden und gut is. Den Rest macht der Can Controller. Um Kollisionen, Multimaster etc braucht man sich nicht zu kuemmern. Auch grosse Leitungslaengen stellen kein Problem dar. Momentan betreibe ich 23 Knoten auf ca. 150m Leitungslaenge, und das Signal sieht immer noch astrein aus.
@ Micha B. ... Bei RS485 muss man sich -wenn man Multimaster haben will- selbst ums Protokoll kümmern (RS232 ist kein Protokoll). Geht zwar, kostet aber unnötig Nerven und Speicherplatz. Zudem die erwähnte Einschräkung auf 32 Teilnehmer. .. Woher hast Du die Info mit den 32 Teilnehmern?? Das ist natürlich Quatsch, wir haben pro 400m RS485 Ast 100 Teilnehmer und das funktioniert problemlos. Ich wäre auf jeden Fall für RS485 weils günstig und ausreichend schnell ist.
@Daniel Held Das ist natürlich kein Quatsch sondern Bestandteil der EIA-485 Spezifikation, die von einer bestimmten Gerätelast (unit load) für einen Standard RS-485 Treiber ausgeht. Das es inzwischen Treiber gibt, die nur 1/8 dieser Last erzeugen und somit bis zu 256 Teilnehmer ermöglichen ist zwar richtig, kann aber nicht als allgemein gültig für den RS-485 Standard betrachtet werden. Siehe auch: http://focus.tij.co.jp/jp/lit/an/slyt086/slyt086.pdf PS: Nichtsdestotrotz läuft mein Hausbus mit CAN und das ist gut so!
die NSLU2 hat auch einen eingebauten I2C-Bus. siehe: http://www.nslu2-linux.org/wiki/Info/PinoutOfI2CPort Dann an den Bus einen Atmega und die entsprechenden anderen Teile, wie Treiber, etc. mfg Gerrit
Mit geeigneten Treibern (billiger als CAN) kann man mit RS-485 Problemlos 128 oder sogar 256 Teilnehmer verwalten. Der alte Standard ist für diese Tatsache völlig irrelevant. Die Kosten und die Einfachheit der Implementierung für eigene Entwicklungen sind mit CAN z.Z. nicht zu toppen.
Ben wrote: > Mit geeigneten Treibern (billiger als CAN) kann man mit RS-485 Die uCs moegen billiger sein, die Treiber aber mit Sicherheit nicht: LTC485 2,5E MAX485 1,6E PCA 82C251 0,73E > Die Kosten und die Einfachheit der Implementierung für eigene Einfachheit ok, aber nur solange EIN Master vorgesehen ist. Am 485 Multimaster haben sich schon einige versucht, meist mit eher geringem Erfolg. Ich finde es wesentlich praktischer wenn eine Node Ihre Daten auf den Bus legt, wenn sie was zu sagen hat, anstatt einen Master, der stur alle Nodes pollt ob irgendwer was zu melden hat. Ab einer bestimmten Anzahl von Nodes macht das keinen Sinn mehr. @ Micha B. > PS: Nichtsdestotrotz läuft mein Hausbus mit CAN und das ist gut so! Full ACK.
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.