Für mein Hausautomatisierungsprojekt suche ich nach einer Möglichkeit, mehrere Ein- und Ausgänge per Funk zu schalten. Das Ganze sollte bidirektional funktionieren, damit ich eine Rückmeldung erhalte, ob das Signal auch angekommen ist. Ich habe jetzt die letzten Tage relativ viel zu Thema gelesen und tendiere im Moment zu folgender Lösung: Raspberry <=> RFM12B <=> RFMB12B <=> AtTiny Die Kommunikation würde zwischen den Geräten würde jeweils über SPI erfolgen. Mit SPI habe ich in Bezug auf den RPI schon Erfahrung sammeln können. Bevor ich jetzt undendlich viel Zeit und eventuell Geld in eine Sackgasse investiere stellt sich mir die Frage, ob das eine gangbare Lösung wäre. Hat jemand eventuell Erfahrung mit diesen Komponenten und kann das zumindest grob einschätzen? Ich wäre auch für jeden Tipp dankbar. Gruß Jan
Also ich bin von den rfm12 nicht mehr sonderlich begeistert. Die bringen mir einfach zu wenig eigenintelligenz mit. Du musst dich selbst komplett um die absicherung kümmern, wenn du eine sichere übertragung willst, das abholen und nachschieben der einzelnen bytes ist relativ zeitkritisch, gerade, wenn du unter linux arbeitest oder andere zeitkritische sachen laufen. meine verbindung hat mich einige nerven gekostet. Wenns wirklich auf den preis ankommt würd ich mir wennschon das rfm70 anschaun, das hat wenigstens puffer für 32 byte packete und ein paar andere nette features. Wesentlich angenehmer ist vermutlich zigbee o.Ä.
was mir beim ersten Googlen auffällt ist, dass überall betont wird, wie einfach das RFM70 zu programmieren ist. Das las sich beim RFM12 schon anders. Natürlich kommt es auch auf den Preis an. Aber wenn ich mir Ärger sparen kann, ist mir das ein paar Euro wert. Danke schonmal für den Tipp. Ich werde mir mal die Datenblätter vornehmen...
Kennst du den hier schon: http://www.mikrocontroller.net/articles/NRF24L01_Tutorial Fand ich ganz interessant. Markus
Nein, den kann ich noch nicht. Genau sowas habe ich gesucht. Danke!
Sei bei den 2.4Ghz Teilen (NRF24L01 und RFM70) aber vorsichtig mit der Reichweite. Ich habe einige RFM70 in Betrieb, wenn die zu nah an einer Wand stehen oder in ein halb geschlossenes Alugehäuse eingebaut sind, ist im Nachbarraum schluss. Wenn du eine einfache, zuverlässige Lösung mit höherer Reichweite suchst, würde ich Xbee(PRO) nehmen - kostet natürlich auch ne Stange Geld. Zu der Reichweite von 433/868Mhz Modulen kann ich leider nichts sagen, evtl. kann jemand anderes von seinen Erfahrungen berichten?
Ich habe gerade noch das hier gefunden: Beitrag "Nachbaubares Funkmodul auf Basis des RFM12" Leider gibt es die Seite nicht mehr. Das hörte sich eigentlich ganz interessant an. Hat jemand eventuell noch die Doku und den Code von dem Teil? Die Reichweite könnte schon ein Problem werden. So ca. 15 Meter durch zwei Wände bräuchte ich schon. Ich habe schon mit 433 Mhz Sendern gearbeitet. Ich steuere damit Funkteckdosen, die auf dem HX2262 basieren. Da ist die Reichweite mit einer einfachen Drahtantenne kein Problem. Die Xbees lesen sich zwar toll, sprengen aber preislich leider den Rahmen. Ich denke für das, was ich vorhabe, sind sie auch leicht überdimensioniert. Ich will keine großen Datenmengen übertragen. Es geht immer nur um ein paar Bytes.
Fang an zu lesen ! oder überflieg mal den von dir gelinkten Thread ! Faulheit ! Beitrag "Re: Nachbaubares Funkmodul auf Basis des RFM12"
Ok, ich hab ja eigentlich auch genug zu lesen und so oder so eine steile Lernkurve vor mir. Hab mir erst mal einen AtTiny2313 und einen AtMega8 bestellt, um in das Thema reinzukommen. Danke schon mal für die vielen Anregungen, selten so ein super Forum gesehen. Gruß Jan
Es gäbe da noch, wenn auch nicht ganz billig, die TRM-868 Module (die hießen bis vor kurzem Wi.232EUR-R). Funken mit guter Reichweite auf 868MHz und sehr einfach zu handlen. Es sind seriell-wireless-Bridges und sie verhalten sich wie ein serielles Kabel. Also einfach mit seriellen Daten füttern. Um alles andere wie z.B. Fehlerkorrektur usw. kümmern sich die Module selbst.
XRF. Bestes Preisleistungsverhältnis überhaupt. http://shop.ciseco.co.uk/xrf-wireless-rf-radio-uart-rs232-serial-data-module-xbee-shape-arduino-pic-etc/
Ich habe mich jetzt eingearbeitet. Meine Wahl ist erstmal auf den NRF24L01 gefallen. Die Module sind extrem preiswert und haben eigentlich alles, was ich brauche. Aktuell bin ich soweit, dass ich von einen ATTiny2313A aus einen String an einen anderen übertagen und von dort aus per UART an den RPi weiterleiten kann. Die direkte Kommunikation des RPI mit dem NRF24L01 über SPI habe ich aufgegeben, weil ich mich dann in zwei verschiedene Plattformen einarbeiten und den Code doppelt pflegen müsste. Ich überlege mir jetzt, wie ich weiter vorgehe. Grundsätzlich stelle ich mir mehrere baugleiche Stationen vor, die über mehrere Sensoren und Aktoren verfügen. (Temeratursensoren, Relais...) Wenn ich das Datenblatt des NRF24L01 richtig verstanden habe, kann ich bis zu 6 Geräte adressieren, wenn ich Enhanced Shockburst / Auto Ack. verwende. Es sollte doch möglich sein, beliebig viele Stationen zu adressieren, wenn ich diese Features deaktiviere und die Adressierung usw. selbst in Software abbilde, oder? Grundsätzlich sollen alle Stationen nur nach Aufforderung durch den Master senden und ansonsten dauerhaft lauschen. Für den Datenaustausch würde ich entsprechend ein eigenes Protokoll implementieren. (Quelladresse, Zieladresse, Aktor/Sensor,Befehl, Prüfsumme) Kann bzw. sollte man das so machen, oder gibt es bessere Ansätze? Ich wäre für jeden Denkansatz dankbar. Bei meiner ersten Anfrage ist ja schon eine Menge Lesestoff zusammengekommen. :)
Noch eine Kleinigkeit: Ich habe versucht, dass NRF24L01 Modul mittels einen 3,3V Festspannungsreglers zu versorgen, damit ich nicht jedes Mal das Modul abklemmen muss, bevor ich den Chip programmiere. (Mein Prgramer arbeitet mit 5V). Am Modul liegen auch 3,3 Volt an. Laut Datenblatt sind 5 Volt an den Signaleingängen kein Problem. Woran kann das liegen? Edit: Ein kleiner Kondensator hinter dem Spannungsregler hat das Problem gelöst.
Ich bin momentan auch dran so etwas zu Basteln. Ich habe auf meinem Raspberry Apache+Mysql+PHP+PHPadmin+FTP Programm am laufen. Im Webinterface eine Lampe angeklickt gehts über RS232->RFM12<--->RFM12->relais und dann wieder zurück und es wird in die mysqlDB etwas reingeschrieben, damit es im Webinterface angezeigt wird.(So der PLAN) meine Module Funken durchs ganze Gebäude. 3 Stockwerke..
Welches Protokoll hast du benutzt? Was eigenes oder Modbus oder so? Ich muss nochmal nerven. Da die Reichweite der nRF24L01 Module nicht zufriedenstellend war (aber nur knapp), habe ich mir einige nRF24L01+ Module bestelltl. Zu meiner Überraschung musste ich feststellen, dass die neuen Module exakt genau so aussahen wie meine bereits vorhanden nRF24L01 Module (ohne das +). Bei näherer Betrachtung stellte sich heraus, dass auch auf den alten Modulen der verbaute IC mit nRF24L01+ beschriftet ist. (zumindest vermute ich das, wirklich 100% sicher lesen kann ich es wegen der extrem kleinen Schrift nicht, könnte statt + auch * oder so sein). Wie sehen die ICs ohne das + aus? Ist da hinter dem nRF24L01 noch ein Zeichen? Habe ich jetzt nur nRF24L01+ Module? Ich bin da jetzt doch etwas verunsichert! Ich habe versucht eine Kommunikation mit 250 kbit/s herzustellen. Leider funktioniert das nicht sauber. Ich sende die Daten und warte dann mit einem Loop darauf, dass ein Interrupt gefeuert wird. Entweder wurden die Daten erfolgreich übertragen, oder die maximale Anzahl von erfolglosen Versuchen wurde erreicht. Leider ist bei 250 kbit/s beides nicht der Fall. Der Loop wird dadurch zur Endlosschleife. Ich initialisiere die Module so:
1 | //Datenrate auf 250 KBit festlegen |
2 | mirf_write_register(RF_SETUP, RF_DR_LOW, 1); |
3 | mirf_write_register(RF_SETUP, RF_DR_HIGH, 0); |
4 | |
5 | //Auto Retry Delay auf 1 MS festlegen |
6 | mirf_write_register(SETUP_RETR, ARD, 1); |
7 | mirf_write_register(SETUP_RETR, ARD+1, 1); |
8 | |
9 | //Auto Retry Count auf 15 festlegen |
10 | mirf_write_register(SETUP_RETR, ARC, 1); |
11 | mirf_write_register(SETUP_RETR, ARC+1, 1); |
12 | mirf_write_register(SETUP_RETR, ARC+2, 1); |
13 | mirf_write_register(SETUP_RETR, ARC+3, 1); |
Das ist natürlich nur ein Auszug. ;) Kann mir jemand weiterhelfen?
Jan Gatzke schrieb: > Ich habe versucht eine Kommunikation mit 250 kbit/s herzustellen. Je höher du die Bandbreite wählst, umso geringer wird die Reichweite. Wenn du dir einen Gefallen tun willst, reduzier die Datenrate auf z.B. 19200 baud und füge Prüfbytes mit ein. Mit 9600 baud und den 868Mhz Varianten der RFM01/02 Module habe ich schon locker 300m sicher überbrückt. Die verwendeten Antennen stammten von alten CT1 Schnurlostelefonen. Hierbei stellte sich auch heraus, das eine sorgfältig gefilterte Betriebsspannung der HF-Module zur Reichweite und Datensicherheit enorm beitrug. Drosseln und Abklatsch-C können also auf keinen Fall schaden.
WLAN wäre ungleich aufwendiger und teurer, würde mehr Strom verbrauchen und wäre fehleranfälliger. Das macht für Endpunkte, die hinterher nur wenige Bytes übertragen sollen, einfach keinen Sinn. Die nRF24L01 Module beherrschen nur 2 bzw. 3 verschiedene Geschwindkeiten. 250 kbit, 1 Mbit und 2 Mbit. Die Module beherrschen von Haus aus CRC, Auto Retry usw.. An dieser Stelle kann ich also nicht ansetzen.
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.