Forum: Mikrocontroller und Digitale Elektronik Bidirektionaler Funk-IO-Expander für Raspberry Pi


von Jan G. (jan80)


Lesenswert?

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

von Alexander V. (avogra)


Lesenswert?

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.Ä.

von Jan G. (jan80)


Lesenswert?

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...

von Markus _. (markush)


Lesenswert?

Kennst du den hier schon: 
http://www.mikrocontroller.net/articles/NRF24L01_Tutorial


Fand ich ganz interessant.


Markus

von Jan G. (jan80)


Lesenswert?

Nein, den kann ich noch nicht. Genau sowas habe ich gesucht. Danke!

von Markus R. (maggus)


Lesenswert?

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?

von Jan G. (jan80)


Lesenswert?

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.

von reverse (Gast)


Lesenswert?

Fang an zu lesen ! oder überflieg mal den von dir gelinkten Thread ! 
Faulheit !

Beitrag "Re: Nachbaubares Funkmodul auf Basis des RFM12"

von Jan G. (jan80)


Lesenswert?

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

von Torsten S. (Gast)


Lesenswert?

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.

von Biggus Dickus (Gast)


Lesenswert?


von Jan G. (jan80)


Lesenswert?

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. :)

von Jan G. (jan80)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

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..

von Jan G. (jan80)


Lesenswert?

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?

von zolle (Gast)


Lesenswert?

Warum kein WLAN ?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Jan G. (jan80)


Lesenswert?

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
Noch kein Account? Hier anmelden.