Ich versuche herauszufinden, welche Art von Modulation und Codierung von meiner Fensterabdeckungsfernbedienung verwendet wird, um dasselbe auf einem Raspberry Pi zu implementieren und ein bisschen Heimautomation hinzuzufügen.
Ein Kollege half mir, das Signal mit einem USRP abzutasten und gab mir die Datendateien. Ich habe sie mit Inspectrum untersucht .
Ich fürchte, die Samples wurden sehr nahe an der Frequenz des Signals aufgenommen. Ich habe später gelesen, dass dies möglicherweise keine gute Idee ist, und ich denke, dies ist der Grund für das permanente Rauschen, das Sie auf den Bildern sehen können. Sollte ich die Abtastung in Zukunft einige kHz darunter zentrieren?
Einmaliges Drücken des Signals "Fenster öffnen"
Die Symbolrate, oder besser gesagt, die Symbolrate, scheint auf dieser Ebene konsistent zu sein (ungefähr 42 Baud).
Dies zeigt Frequenzenergie. Die X-Achse ist die Zeit, die Y-Achse ist die Frequenz (Basisband). Die Farben wurden so abgestimmt, dass sie nur die interessante Kraft zeigen.
Detail eines der "Blöcke"
Hier zeigt das letzte Bild von unten nach unten: Frequenz, IQ (rot / blau) und Phase. Ich weiß nicht genau, was das Frequenzdiagramm hier darstellt.
Vergrößern Sie den Übergang zwischen dünn und dicht
Die "Symbolrate" scheint hier nicht konstant zu sein.
Ich habe keine Ahnung, welche Art von Modulation, Codierung, Bitrate oder Protokoll diese Fernbedienung verwendet, und im Moment wäre meine einzige Option, alle Demod-Blöcke in Gnuradio blind auszuprobieren.
Es wäre besonders hilfreich, wenn die Antwort eine Anleitung zur Demodulation dieses Signals in Gnuradio enthalten könnte, um Bits herauszuholen. Ich denke, ich kann es von dort nehmen.
Der Controller ist für eine Velux-Fensterabdeckung vorgesehen, aber ich habe im Internet keine Informationen gefunden. Ich muss letztendlich herausfinden, welchen Chip ich für das Arduino / rPi kaufen soll.
Ich kann sagen, dass auf dem Chip Text geschrieben ist, aber ich kann ihn nicht lesen, er scheint abgenutzt zu sein, aber ich habe keine Lupe ...: /
Rohdaten hochgeladen auf: https://www.dropbox.com/s/rh2k7ho68dvoxhd/data_mando3.dat?dl=0 . Die Abtastrate beträgt 3 MHz. Das Datenformat ist der Standardwert von GNU Radio Companion (IQ). Jede Komponente wird als 32-Bit-Float ausgedrückt.
Aktualisieren
Nach einigen weiteren Untersuchungen scheint dies ein io-homecontrol- Protokoll zu sein. Es scheint, dass es nicht rückentwickelt wurde, verschlüsselt ist und keine Informationen verfügbar sind. Da es sich um ein Zwei-Wege-Protokoll handelt, muss ich Proben aus vollständigen Gesprächen abrufen (die aktuellen Proben werden nur mit der verfügbaren Fernbedienung entnommen).
Dieser Chip kann theoretisch mit diesem Protokoll arbeiten: http://www.analog.com/media/en/technical-documentation/data-sheets/ADF7022_2page.pdf
Das Konsortium wird keine Spezifikationen bereitstellen. Ich bin immer noch daran interessiert, ein paar Gespräche mit GNURadio zu führen und zu sehen, ob ich von ihnen aus arbeiten kann. Vor diesem Hintergrund kann ich nur gegen io-homecontrol und Velux Produkte empfehlen.
Vielen Dank!
quelle
Antworten:
Ok, ich habe eine Signalforensik für die Datenerfassung durchgeführt und glaube, dass die Modulation eine Form von FSK ist.
Die FSK-Modulation betrug +/- 20 kHz bei einer Datenrate von 38 kHz.
UPDATE: Die OP-Entdeckung, dass dies "io-homecontrol" ist, und das von ihm gefundene Datenblatt von ADI haben bestätigt, dass dies tatsächlich FSK mit einer Abweichung von 20 kHz und einer Datenrate von 38,4 Kbit / s ist. Weiter gibt dieser Link weitere Details zum Modulationsformat:
https://cansecwest.com/slides/2015/From_Baseband_to_bitstream_Andy_Davis.pdf
Es sieht so aus, als wäre es tatsächlich Gauß-FSK mit Signalisierung mit voller Antwort (BT = 1), was bedeutet, dass die Antwort für jedes Bit abgeschlossen ist, bevor das nächste Bit beginnt. Dies kann leicht mit einem Gaußschen Filter implementiert werden (siehe Gaußscher FIR-Filter ohne Multiplikatoren?) gefolgt von einem Unteroffizier. In diesem Fall wird jedes Datenbit als Impulse dargestellt, gefolgt von Nullen für die gesamte Länge des Filters, und der Ausgang des Filters steuert das Frequenzsteuerwort in den NCO (einen digitalen VCO). (Für Teilantwortsignale, die einen komplizierteren Empfänger erfordern und nicht das, was sie hier tun, sind die Nullen kürzer als die Länge des Filters, aber das würde auch funktionieren). Die Frequenzabweichung kann mit einer Multiplikatorverstärkungskonstante zwischen dem Filterausgang und dem NCO-Eingang eingestellt werden. Die Wahl zwischen Gaußschem FSK und einfachem FSK dient einer besseren spektralen Eindämmung der übertragenen Wellenform (und ist der Grund für die abgerundeten Übergänge, die wir sehen).
Ich werde die Handlungen einschließen, falls jemand weitere Einsichten hat:
Zuerst eine Makroansicht in der Nähe des ersten Bursts, die um 0,93 Sekunden auftritt. Um dieses Diagramm zu erhalten, hatte ich nach dem Dezimieren um 10 Abtastwerte einen Frequenzversatz entfernt, der 0,2688 Radian / Abtastwert entsprach, wobei angenommen wurde, dass die ursprüngliche Abtastrate 3 MHz betrug, was einem Versatz von 12,834 kHz entspricht.
Dieses Diagramm zeigt die unverpackte Phase gegen die Zeit (vertikale Achse ist Bogenmaß) und die entsprechende Größe gegen die Zeit. Ich gehe davon aus, dass wir bei geringer Größe das Rauschen betrachten und das interessierende Signal nur dann auftritt, wenn die Größe höher ist.
Wenn Sie den ersten Teil des Bursts vergrößern, beginnt der Impuls bei ungefähr 0,9265 Sekunden, und zu Beginn des Bursts ist die Phase für ungefähr 3 ms "flach". Ich glaube, dass dies einem unmodulierten Träger entspricht, wenn man es mit den Details vergleicht, die wir später sehen.
Nach den 3 ms des Abschnitts "flache Phase" gibt es ein sehr langes Muster von 1 0 1 0 1 0 mit einer Datenrate von 37,5 KS / s. Die Modulation bewegt sich zwischen 0 und 180 Grad, aber später werden wir klare Phasenrampen sehen, die mich FSK anstelle von BPSK vermuten lassen. (Wenn es MSK wäre, hätte ich erwartet, dass sich 90 Grad drehen, aber die minimale Drehung, die ich fand, war 180 Grad). Beachten Sie, dass wir ganz am Anfang des Musters (unter der Annahme von +180 = 1 und -180 = 0) 1 1 0 1 0 1 0 1 ... sehen, das dann mit dem 1 0 1 0-Muster noch einmal ca. 90 ms dauert Einfügen einer "1 1" in der Nähe der 1,02-Sekunden-Marke und anschließendes Fortsetzen als 0 1 0 1 0 1 ... bis zur 1,414-Sekunden-Marke. (ca. 0,4 Sekunden Dauer mit einem 1 0 1 0 Muster). Beachten Sie den "Buckel" in der gesamten Flugbahn.
Bei 1,414 Sekunden beginnen die realen Daten. (Das erste war wahrscheinlich ein Synchronisations- / Erfassungsmuster). Wenn wir zuerst eine Makroansicht betrachten, sehen wir ein Muster, das sich in dieser Ansicht dreimal zu wiederholen scheint, bevor der Burst endet.
Wenn Sie in den ersten Bereich hineinzoomen, sehen Sie eine konsistente positive und negative Phase, die auf FSK hinweist. Am Ende des Datenbursts gibt es eine lange Dauer von 1 für 4 ms, gefolgt vom 101010-Muster für etwa 14 ms.
Der nächste Burst, der ungefähr 1,51 Sekunden beginnt, kurz nach dem ersten, hat wieder das gleiche Startmuster eines unmodulierten Trägers, gefolgt vom langen 101010-Modulationsmuster. (Obwohl der Start geringfügig anders war, betrug er 1 1 1 1 0 1 0 1 0 1 0 1, aber die Dauer des 1010-Musters vor der Datenmodulation betrug erneut 14 ms)
quelle