Ich versuche mit einem RFM69 (Adafruit Featherwing) 433 MHz
Funksteckdosen zu steuern und auch die Signale der original
Fernsteuerung empfangen zu können. Ich verwende dazu aktuell die
RadioHead Library die ich noch etwas modifizieren musste da die Library
nicht für diese Art Kommunikation ausgelegt ist. Ich verwende aktuell
den das "Unlimited Length Packet Format" um die Daten zu senden und zu
empfangen.
Ich habe auch bereis die korrekte Bitrate herausgefunden und auch das
eine 0 als 1000 und eine 1 als 1110 geschickt wird. Mit diesen
Informationen habe ich es auch bereits geschafft die Funksteckdose zu
schalten. Beim Empfang habe ich aber noch Probleme. Aus irgendeinem
Grund erhalte ich nicht die gleichen Bit's von der original
Fernbedienung.
Ich habe die Signale von der original Fernbedienung und vom RFM69 mit
einem HackRF One analysiert und habe im Anhang zwei Screenshots abgelegt
wo die Signale zu sehen sind. Seltsamerweise ist das erste Bit des RFM69
immer 1100 statt 1000, aber die Funksteckdose akzeptiert das Signal
trotzdem. Ausserdem ist der Delay zwischen den Signalen etwas grösser.
Das liegt wohl auch noch an der RadioHead library die zu lange wartet.
Aber auch das schein kein Problem für die Funksteckdose zu sein. Hier
ist mein aktueller Code um das Funksignal zu schicken:
Hallo,
ich möchte mal hier aus meinem virtuellen Elfenbeinturm heraus kund tun,
was mir einfällt:
Wir haben es wie öfter mal mit einer Frage zu einem gängigen Funkmodul
zu tun, die auf wenig/gar keine Resonanz stößt. Die Frage ist bereits
ziemlich ausführlich formuliert und mit Codebeispiel angereichert.
Zusätzlich wird der Datenstrom gezeigt. Trotzdem hat niemand eine Idee
dazu.
Ich selbst kann mit dem Arduino-Code nicht viel anfangen, da ich die
Arduino-Welt nicht kenne. Leider fehlen Kommentare hinter den
Codezeilen, die anderen verdeutlichen können, was die einzelnen Zeilen
bewirken sollen. Nützlich wäre vielleicht auch, die eingestellten
Registerwerte separat binär oder als hex anzugeben, am besten gleich mit
verbaler Erklärung, was eingestellt wurde. Hilfreich wäre noch eine
kurze Beschreibung der Funktionsweise, also hier unbegrenzte Paketlänge
zusammen mit Fifo-Benutzung.
MfG
Bei diesen Funkasics die auch OOK können und per Registereinstellungen
konfiguriert werden hat das bei mir auch nie hingehauen. Schaut man sich
genauer an was die senden ist es ein Pulsetrain, lauter kleine Pulse,
die ein HIGH "nachbilden". Manche Empfänger kommen damit nicht zurecht.
Ich glaube in einem Datenblatt von einem Silabs, TI oder Hope steht das
auch drinn, dieser OOK Modus in diesen Funkasics ist eher mit Vorsicht
zu geniesen. Manche haben einen RAW-Modus, der der sich dann wie die
Primitivmodule verhält, da gab es glaube ich aber auch Einschränkungen,
dient nur zum Testen nicht zur Datenübertragung.
Mit den Primitivmodulen die nur einen TX-Pin haben den man HIGH und LOW
schaltet ging es immer auf Anhieb. Die schalten einfach die
Trägerfreuquenz ein solange der Pin HIGH ist, Pulsetrains gibts dort
nicht.
Vielleicht hast du das Modul auch nicht sauber konfiguriert, ich bin
jetzt zu faul nachzuschauen aber manchen haben noch Datawhitening,
kleben nen CRC automatisch ran, machen Manchester,... Das meiste davon
ist im OOK-Modus sowieso nicht verfügbar aber schau trtzdem mal ins
Datenblatt.
Wenn am Anfang das Bit nicht ankommt stimmt evt. was mit dem timing
nicht oder off-by-one Fehler, hatte ich auch schon.
Ich habe sowohl mit RFM12 als auch RFM69 FS20 Code gesendet und
empfangen, das geht. Beim RFM69 habe ich das über einen Datenpin des
Moduls gemacht, für nur über SW hatte ich keine Möglichkeit gesehen.
Bzw. nur wie vom Vorredner genannt diese ähnliche Modulation.
Code für MBed, müsste ich nochmal raussuchen.
Hallo David,
ich habe mich mit genau diesem Thema vor einiger Zeit recht intensiv
befasst; der Empfang solcher Signale klappt gut mit dem RFM69, wenn man
einige Gegebenheiten beachtet:
- Man muss "oversamplen", d. h. mit deutlich größerer Bitrate abtasten
so dass die kürzesten Impulse mindestens 4 Bit lang sind. Ich verwende
20 kbit/s.
- Die Bandbreite sollte relativ groß gewählt werden weil die
Fernbedienungen in der Frequenz stark schwanken. Ich verwende 300 kHz.
- Der OOK Decoder muss passend parametriert werden. Ich verwende
Threshtype peak, Threashstep 0,5 dB, und ThreashDec once every 8 chips
Ich empfange durchgehend und suche in den empfangenen Daten nach einer
ausreichend langen Folge von 0en die den Syncpulse darstellen.
P. S. Das dargestellte Protokoll scheint zu den Logilight oder emylo
Systemen zu gehören, also Bit0 = 1000, Bit1 = 1110. 24 Bit und ein
Syncpulse ergeben ein ganzes Frame.
Schöne Grüße
Stefan
Danke für die vielen Rückmeldungen. Den CRC check, Datawhitening und
Machchester habe ich bereits deaktiviert. Daran kann es eigentlich nicht
liegen. Ich habe nun noch die Bandbreite auf 255 khz erhöht (Scheint das
maximum zu sein bei OOK) und habe die Threshold decay time auf once
every 8 chips gestellt. Leider erhalte ich aber immer noch nicht die
korrekten bytes. Ich habe auch versucht die Bitrate 4 mal höher
einzustellen, aber leider gibt auch das keine brauchbaren Resultate.
Hier sind meine aktuellen Registereinstellungen:
1
00 00
2
01 04
3
02 08
4
03 28
5
04 EB
6
05 00
7
06 52
8
07 6C
9
08 76
10
09 66
11
0A 41
12
0B 40
13
0C 02
14
0D 92
15
0E F5
16
0F 20
17
10 24
18
11 7F
19
12 09
20
13 1A
21
14 40
22
15 B0
23
16 7B
24
17 9B
25
18 08
26
19 81
27
1A 8B
28
1B 43
29
1C 80
30
1D 06
31
1E 10
32
1F 00
33
20 00
34
21 00
35
22 00
36
23 02
37
24 FF
38
25 00
39
26 05
40
27 80
41
28 00
42
29 FF
43
2A 00
44
2B 00
45
2C 00
46
2D 00
47
2E 40
48
2F 2D
49
30 D4
50
31 00
51
32 00
52
33 00
53
34 00
54
35 00
55
36 00
56
37 00
57
38 00
58
39 00
59
3A 00
60
3B 00
61
3C 8F
62
3D 02
63
3E 00
64
3F 00
65
40 00
66
41 00
67
42 00
68
43 00
69
44 00
70
45 00
71
46 00
72
47 00
73
48 00
74
49 00
75
4A 00
76
4B 00
77
4C 00
78
4D 00
79
4E 01
80
4F 00
81
58 1B
82
6F 30
83
71 00
Die Registereinstellungen können auf dieser Seite übersetzt und geändert
werden: https://dimhoff.github.io/sx1231_calculator.html
Die Werte können einfach unten in das Textfeld eingegeben werden und
dann importiert werden. Was könnte ich hier noch anpassen um den Empfang
zu verbessern?
Christian S. schrieb:> Leider fehlen Kommentare hinter den Codezeilen, die anderen verdeutlichen> können, was die einzelnen Zeilen bewirken sollen.
Sehe ich auch so. (für mich vorzugsweise auf deutsch)
Da ich gerade angefangen habe, mich mit RFM69 zu beschäftigen und zu
programmieren, bin ich besonders scharf auf Beispiele. RFM69 soll mit µC
MSP430Fxxxx angesteuert werden.
Vielleicht fällt auch noch für mich etwas ab, falls jemand ein
funktionstüchtiges Beispiel übrig hat.
Hallo Wolle
Bist du mittlerweile fündig geworden auf der Suche nach einem
brauchbaren Beispiel?
Ich versuche mich auch bisher erfolglos.
Gruß und Danke Bernd
Hallo,
bin ebenfalls wieder auf der Suche nach einer Lösung (FHT 868Mhz)
mittels RFM12 oder besser RFM69. Leider bin ich unwissend in Sachen
Hochfrequenztechnik.
Finde nur Programme die nicht erklärend sind, selbst RFM12 Programme,
die nicht funktionieren.
Während die ELV Platine wie RX868- funktioniert und die ganze Etage
protokolliert, aber sind einfach zu teuer.
Scheinbar haben alle Probleme in "rauer Umgebung" wie Handys usw.... im
Raum sehr große Probleme.
Währe vielleicht schön, das die Leute bei denen es geklappt hat
konkreter werden was Sie gemacht haben.
Hallo,
etwas zu spät gesehen, das Du geantwortet hast.
Ich habe eine scheinbar funktionierende Decodierung des ELV OOK Signals.
Will diese Ventileinstellwerte abfangen um evtl. daraus eine
Bedarfsregelung der Heizung zu erstellen.
Dies wollte ich jetzt auf RFM12 bzw. evtl. auf RFM69 umsetzen. Dies
funktioniert nun überhaupt nicht (RFM12).
Ich habe einige Programme gefunden allerdings schon älter, ohne Erfolg.
Ich weis nicht ob es zwingend notwendig ist, das der Kondensator 4,7n
auf 150pF geändert werden muss (OOK).
Das empfange Signal hat nichts mit dem erwarteten Signal zutun. Bin da
ratlos.
Danke