Raspberry Pi - RFM12b

Begonnen von Preacher666, 09 April 2013, 07:35:06

Vorheriges Thema - Nächstes Thema

Preacher666

Hallo,
als absoluter Neuling hier erstmal ein "Hallo" :)

Wie schon im Titel ersichtlich habe ich grad die Frage, ob es möglich ist, ein RFM12b Funkmodul direkt mittels der GPIOs an den Pi anzuschliessen (müsste mittels SPI möglich sein) und dieses dann
durch FHEM zu nutzen ?

Soweit ich bisher sehen kann, kann man es sehr wohl am Pi anschliessen und partiell ansprechen aber wie könnte ich das Ganze dann für FHEM erreichbar machen ? Gibt es da eine Möglichkeit bzw. eine praktische Umsetzung ?

Ziel des Ganzen wäre eine drahtlose Anbindung der MAX-Fensterkontakte...einfachste Möglichkeit wäre derzeit das CSM-Modul über UART an den Pi anzuschliessen und dann FHEM zu installieren. Aber da ich grad ein RFM12b-Modul da habe, vorab die Frage ob das nicht auch direkt ginge ? So wie ich das sehe, müsste dann der Pi anstatt eines Mikrokontrollers die Übersetzung der Daten des RFMs übernehmen ?

Vielen Dank im Voraus
Alexander

m.o.d

Hallo,
Sag, hast du was in der Richtung erreicht?
 Ich würde gerne mit der gleichen Konstellation fs20 steuern!
Mfg

schlauby

Hallo zusammen,

ich hab jetzt das RFM12b mit 868Mhz an meinen Raspi R2 angeschlossen.
Leider kann ich keine Daten empfangen.

Ich hab die folgende Anleitung verwendet:

http://www.susa.net/wordpress/2012/08/raspberry-pi-reading-wh1081-weather-sensors-using-an-rfm01-and-rfm12b/

und hier die Änderungen für den Raspi Revision 2
http://tickett.wordpress.com/tag/rfm12b/

Der Code kompiliert bei mir und kann ihn auch starten. Initialisierung geht auch. Leider empfange ich keine Daten von meinem 868 Mhz noname Außen-Temperatur-Sensor.

Hat jemand sonst noch eine Anleitung oder ein paar Tipps?

herrmannj

Hi,

Ohne die verlinkten Artikel gelesen zu haben: das rfm12b ist ein fm Empfänger, alle am (aka ook) Kommunikation geht an dem Modul vorbei. Das gilt für fast alle noname Sensoren. Es gibt zwar Modifikationen um das rssi Signal abzugreifen, bedeutet aber smd Bauteile zu tauschen und zusätzliche Signalleitungen.

Zum fs20 senden kann man das Modul per Software Hack nehmen, im Kern muss der Trx per spi mit dem richtigen Timing ein und ausgeschaltet werden. Ist ebenfalls nicht trivial.

Vg
Jörg

schlauby

hi,

super, Dank für die schnelle Antwort.
Im 433 Mhz bereich habe ich es schon geschafft, meine noname Funksteckdose zu schalten. Da gab es aber auch wieder viele Anleitungen und über eine Schleife, hab ich alle Code-Möglichkeiten ausprobiert, bis der Schalter anging :-)

Da ist dann der 868 Mhz Funkbereich etwas komplexer. Werde mir mal ein FS20 Modul kaufen. Würde ich dann da wenigstens irgendetwas empfangen?

Gruß schlauby

schlauby

Hab inzwischen herausgefunden, das der RFM12b auf "OOK" umkonfiguriert werden kann. FIFO muss dabei deaktiviert werden.

static void rf12_init_OOK ()
{
    rf12_control(0x8027); // 8027    868 Mhz;disabel tx register; disable RX
                          //         fifo buffer; xtal cap 12pf, same as xmitter
    rf12_control(0x82c0); // 82C0    enable receiver; enable basebandblock
    rf12_control(0xA68a); // A68A    868.2500 MHz
    rf12_control(0xc691); // C691    c691 datarate 2395 kbps 0xc647 = 4.8kbps
    rf12_control(0x9489); // 9489    VDI; FAST;200khz;GAIn -6db; DRSSI 97dbm
    rf12_control(0xC220); // C220    datafiltercommand; ** not documented cmd
    rf12_control(0xCA00); // CA00    FiFo and resetmode cmd; FIFO fill disabeld
    rf12_control(0xC473); // C473    AFC run only once; enable AFC; enable
                          //         frequency offset register; +3 -4
    rf12_control(0xCC67); // CC67    pll settings command
    rf12_control(0xB800); // TX register write command not used
    rf12_control(0xC800); // disable low dutycycle
    rf12_control(0xC040); // 1.66MHz,2.2V not used see 82c0  
}

Funktionieren tut es leider noch nicht. Finde auch keine richtige Spezifikation für meinen Funk-Thermostat.
Steht leider nur 868 Mhz drauf.
Gibt es für ein FS20 Thermostat eine Spezi? Hab da leider auch nichts gefunden. Nur die normalen FS20 Bedienungsanleitung, da steht auch nichts über die genaue Frequence, AM, FM, OOK,...

betateilchen

Zitat von: schlauby schrieb am Do, 01 August 2013 10:10Gibt es für ein FS20 Thermostat eine Spezi? Hab da leider auch nichts gefunden. Nur die normalen FS20 Bedienungsanleitung, da steht auch nichts über die genaue Frequence, AM, FM, OOK,...

naja, nicht explizit für einen Thermostaten, aber einige Grundlagen gibts hier:

http://fhz4linux.info/tiki-index.php?page=FS20%20Protocol
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

schlauby

Bin wieder etwas weiter gekommen...

Hab im Internet nach der richtigen Konfig für das Funkmodul gesucht und bin auf folgenden Link gestoßen:

http://tools.jeelabs.org/rfm12b.html

Hier kann ich alles einstellen, was das Modul machen soll. Ich hab den "RX FIFO Buffer" deaktiviert und den angezeigten Hex-Code in meinem Code angepasst. Und siehe da, ich kann etwas empfangen :-)
Die Idee mit der Modulation war also richtig!!! Vielen Dank hierfür nochmal.

Jetzt geht es mir der Analyse der empfangenen Daten weiter...
Ich werde dann wieder berichten :-)

locutus

Hallo,
schau mal bitte hier rein:
http://jeelabs.net/projects/cafe/wiki/Receiving_OOKASK_with_a_modified_RFM12B

Die JeeLib RF12 Bibliothek für den Arduino kann nicht nur FS20 senden sondern auch FS20, S300 und EM10 empfangen/dekodieren.
https://github.com/jcw/jeelib

Eine mit JeeLib kompatible Bibliothek für den Raspberry Pi findest du hier:
https://github.com/gkaindl/rfm12b-linux

Aus eigener Erfahrung mit dem RFM12B und dem Arduino kann ich dir nur empfehlen den C_arssi Kondensator auszutauschen. Ich verwende einen 220pF SMD Kondensator und empfange damit FS20, S300TH und ein weiteres mir nicht bekanntes Gerät.

schlauby

Vielen Dank für die Links.
Leider lösst es nicht so ganz mein Problem.

Ich kann jetzt bereits die Daten, die von meinem Funk-Thermostat geschickt werden, auslesen. Leider kenn ich den Gerätecode nicht, um die Stelle zu finden, an dem die Temperatur steht.
Hab auch schon versucht nach der Temperatur zu suchen um eventuell den Gerätecode davor zu erkennen. Leider ohne Erfolg :-(

Was mich auch wundert, dass nicht immer die gleiche Anzahl an Bytes geschickt werden. Diese variiert stark.

Auf dieser Seite
http://www.susa.net/wordpress/2012/08/raspberry-pi-reading-wh1081-weather-sensors-using-an-rfm01-and-rfm12b/
Werden die Daten für die Wetterstation WH1081 erklärt (hab ich leider nicht). Bei der Temperatur werden immer 400 abgezogen, um die Temperatur zu erhalten.
Dies verstehe ich nicht...

schlauby

Hab wieder mehr Infos gefunden...

Ich benutzte das TX 29-IT Temperatur-Außenfühler. Folgende Werte habe ich rausgefunden:

    Mittenfrequenz 868,3 MHz
    Modulation: FSK
    Frequenzhub: +/- 90 kHz
    Datenrate: 17.241 kbit/s

Wo ich die Daten einstelle weis ich, aber wie kann ich die Modulation auf FSK stellen? Mein Code steht auf OOK.

schlauby

Hallo @ll,

ich kann einfach nicht aufgeben ;-)

Leider find ich im Internet nix, wie man den RFM12B mit dem Raspberry in FSK betreibt.

Hab von der Hochschule Coburg (http://www.hs-coburg.de/20775.3) einen Artikel gefunden, wie zwei Raspberrys über RFM12B Daten austauschen. Der Anschluss hier ist aber anders, als in den oben genannten Artikeln.
Kann es sein dass ich für FSK Modulation den RFM12B anders anschließen muss?


 * RFM12b --- Raspberry Pi (version B):
 * GND              ---     GND               (Pin 25)
 * VDD              ---     3.3V              (Pin 17)
 * FSK/DAA/nFFS     ---     über 10k auf 3.3V (Pin 1)
 * SDO              ---     MISO              (Pin 21)
 * SDI              ---     MOSI              (Pin 19)
 * nIRQ             ---     GPIO 22           (Pin 15)
 * nSEL             ---     CS1               (Pin 26)

Ich hoffe ihr könnt mir weiter helfen :-)
(Die Hochschule Coburg hat leider nur den Code veröffentlicht)

betateilchen

Das RFM12B macht doch von Haus aus (nur) FSK?

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

schlauby

ja, stimmt schon. Der RFM12B ist ein FM Empfänger. Es gibt aber eine undokummentierte Funktion, bei der man auf AM umschalten kann.
Die ganzen Anleitungen im Netz verwenden das Modul als AM Empfänger,
daher weiß ich leider nicht, wie ich die "Standard-FM-Funktion" verwenden kann.

betateilchen

Zitat von: schlauby schrieb am Do, 15 August 2013 13:20Der RFM12B ist ein FM Empfänger.

Nein. RFM12B ist ein Transceiver, also bestehend aus einem Empfangs- UND einem Sendeteil.

Zitat von: schlaubyLeider find ich im Internet nix, wie man den RFM12B mit dem Raspberry in FSK betreibt.
Zitat von: schlaubyDie ganzen Anleitungen im Netz verwenden das Modul als AM Empfänger,
Zitat von: schlaubydaher weiß ich leider nicht, wie ich die "Standard-FM-Funktion" verwenden kann.

Was willst Du eigentlich wirklich? AM? FM? FSK? Irgendwie werde ich aus Deinen Fragen nicht schlau - in jeder kommt eine andere Modulationsart ins Spiel.

Hast Du schonmal ins Datenblatt geschaut?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!