Reverse Engineering eines Heimautomatisierungs-HF-315-MHz-Transimtters


Ich habe diese Fernbedienung und diesen Sender und möchte die 2 vom Sender gesendeten HF-Signale zurückentwickeln. Das ist der Vorstand .
Auf dem Board steht "ak-rk01se". Ich kann auch den Sender öffnen und sehen, dass er einen PT2264 -Chip hat.

Zu meiner Verfügung steht auch ein DVB-T gehacktes Amateurfunkgerät. So kann ich alle Daten sehen, die von 315 MHz kommen.
Hier ist eine Beispielaufnahme vom großen Knopf mit AM-Demodulation.
Weiß jemand, wie man das angeht?

Update, so sieht es aus, wenn ich es importiere und in Audacity ein Normalisierungssignal ausführe. Die gleiche Rechteckwelle wird immer wieder wiederholt.Aucacity zeigt ein vernünftiges Signal

Bleibt die Frage: Wie verwende ich einen HF-Signalgeber, um dieses Signal nachzuahmen? Ich habe einen Himbeer-Pi und kann einen HF-Sender bekommen.

Was genau möchten Sie tun? Sender emulieren oder etwas anderes? Was meinst du in diesem Zusammenhang mit CW-Decodierung? Hast du die Frequenz ins Basisband runtergewandelt? Wie auch immer, der Chip liefert nur das Basisbandsignal, das später mit dem Träger multipliziert werden muss, was die Analyse erleichtert.
Ich möchte herausfinden, welches Signal übertragen wird, dann so etwas verwenden und das aktuelle Signal mit einem Raspberry Pi imitieren. Ich habe die CW (Trägerwelle) entfernt. Seit ich es geschafft habe, das Signal zu decodieren, das auf AM basiert.
Ich habe jetzt keine Zeit für eine gründliche Antwort, aber für mich sieht es so aus, als wäre der beste Weg, das PT2264-Datenblatt zu lesen, zu verstehen, wie es Ausgaben erzeugt, und dann anhand der erfassten Daten und durch Inspektion die Einstellungen für Ihr spezielles Gerät herauszufinden die Stiftverbindungen direkt. Generieren Sie als Nächstes diese Daten auf R-Pi und erhalten Sie einen Sender, der die erforderliche Datenrate aufrechterhalten kann und ASK verwendet. Zum Schluss die Daten in den Sender einspeisen und das Beste hoffen.
@AndrejaKo lies die Antwort unten und meine Kommentare, es scheint, als wäre es nicht ASK, seine digitalen Rechteckwellen über AM.
@GuySoft - was Sie beschrieben haben, könnte leicht ASK sein, dh digitale Rechteckwellen über AM. Ich vermute, es ist ASK.
@GuySoft Es sieht für mich genauso aus wie 2-ASK, aber ich bin offen dafür, mich als falsch zu erweisen. Was ist Ihre Definition von ASK und warum sollte dies NICHT ASK sein?
@AndrejaKo Wenn ASK Rechteckwellen über AM sind, dann habe ich ASK nicht verstanden.
@GuySoft Well ASK ist eine Modulationsart, bei der Sie eine feste Anzahl von Amplitudenpegeln haben und sich die Trägeramplitude zwischen ihnen ändert. Wenn Sie den Träger herausfiltern, erhalten Sie Zucker auf verschiedenen Ebenen. Was Sie verlinkt haben, sieht für mich nicht nach einfachem ASK aus. Es sieht so aus, als würden sie zusätzlich zur Verwendung von ASK auch die Zeilencodierung verwenden. Sie können sehen, dass es am Ende jeder Null einen kurzen Abschnitt gibt, in dem die Amplitude eins ist, und am Anfang jeder Null einen kurzen Abschnitt, in dem die Amplitude null ist. Ich kann mich im Moment nicht an den Namen dieses bestimmten Codes erinnern ...
@AndrejaKo Bist du sicher, dass extra 'one' kein Fehler ist? Denn im Schaltplan von PT2264 wird es nicht erwähnt. Würde so ein Sender funktionieren ?
@GuySoft Wenn Sie sich auf extra oneden von Ihnen verlinkten Artikel beziehen, denke ich nicht, dass es sich um einen Fehler handelt. Soweit ich sehen kann, erwähnt der Artikel nicht, dass PT2264 vom Sender verwendet wird, daher bin ich davon ausgegangen, dass er eine andere integrierte Schaltung verwendet. Angesichts des Preises des von Ihnen verlinkten Moduls würde ich es an Ihrer Stelle kaufen und experimentieren. Es gibt nicht viele Informationen über das Modul, das Sie im Kommentar verlinkt haben, und das Modul, das Sie in Frage verlinkt haben, daher sehe ich keine einfache Möglichkeit zu entscheiden, ob sie gut zusammenarbeiten, bis Sie es versuchen.

Antworten (3)

Wie wäre es mit der einfachen Sache: Schließen Sie einfach einen PT2264 an den Raspberry PI an! Es macht keinen Sinn, das Rad neu zu erfinden.

Es sieht aus wie ein relativ billiger Chip und führt alle gewünschten Modulationen durch. Alles, was Sie tun müssen, ist, genau herauszufinden, was die Trägerfrequenz ist, und die Dinge entsprechend anzuschließen.

Weil ich es bedeutet, Logikschalter hinzuzufügen, können sie nicht sprechen, weil der PT2264 12 V verwendet. Es würde bedeuten, eine viel komplexere Schaltung zu bauen. Ich verwende lieber ein HF-Modul und lasse die Fernbedienung intakt.
@GuySoft Nun, es hängt davon ab, wo Ihre Stärken liegen und wie viel Zeit Sie dafür aufwenden möchten. Für viele Menschen ist es einfacher, das Umschalten vorzunehmen, als ein HF-Kommunikationsschema herauszufinden. Die Schnittstellen sind auch nicht allzu schwer. Nur einige Widerstände und Transistoren. Ich sage nicht, dass das Hacken eines HF-Moduls schlecht ist, nur dass es nicht die einzig gültige Lösung ist.
Ich habe das Signal bereits, ich muss nur noch herausfinden, wie ich es rekonstruieren kann. Wir kennen sogar aus einer der Antworten seine Codierung. Mit einem billigen HF-Modul wäre das zumindest für mich viel einfacher.
Am Ende funktionierte es mit diesem TB217-Encoder-Sender: cgi.ebay.com/ws/… Es ist im Grunde ein PT2264 mit fertiger Platine

Ich habe genau das mit einem ähnlichen Gerät gemacht. Ich arbeite gerade an einem Blogbeitrag zum Thema Reverse Engineering, aber leider steht es ganz unten auf meiner Prioritätenliste und die Liste ist lang. :-(

Diese sind alle Teil einer sehr einfachen Gruppe von Funksendern und -empfängern. Sie haben keine Intelligenz in sich, sodass Sie nicht einfach einen UART-Sende-Pin oder -Empfangs-Pin anschließen und erwarten können, dass die Dinge funktionieren. Es liegt an Ihnen, einen gut formatierten Datenstrom zu senden, der es dem Empfänger ermöglicht, die Sperre aufrechtzuerhalten. Gängige Verfahren umfassen das Codieren der Bits in Manchester- Form oder das Verwenden einer lauflängenbeschränkenden Codierung wie 8b10b.

Es sieht so aus, als würde Ihr spezielles System ähnlich wie meins übertragen; eine konstante Bitzeit und entweder ein langer '1'- oder ein kurzer '1'-Impuls, um die zwei logischen Pegel anzuzeigen. Dies ist eine sehr einfache Ein-Aus-Keying- Implementierung, die mit jedem Mikrocontroller ziemlich einfach zu erstellen und zu decodieren ist. Es ist einfacher als Manchester-Codierung oder Expanding-Codes wie 8b10b, aber Sie zahlen dafür mit einer reduzierten verfügbaren Bandbreite. Dies ist normalerweise kein Problem für diese Art von Systemen, da Sie nicht versuchen, die Datenübertragung über den Kanal zu maximieren.

Meine spezielle Empfängerimplementierung verwendet das Timer1-Peripheriegerät eines AT90CAN128, das im Erfassungsmodus konfiguriert ist. Ich habe einen freilaufenden 64-us-Timer eingerichtet, und wenn die Empfangsleitung den Status ändert, erfasst das Timer-Peripheriegerät den Timer-Wert und signalisiert einen Interrupt. Von dort aus schaue ich nur, um zu sehen, wie lange die "hohe" Zeit ist, indem ich das Delta in Timerwerten berechne, und wenn es über einem Schwellenwert liegt, ist es eine 1, andernfalls ist es eine Null (und wenn es zu kurz ist, betrachte ich es als Rauschen und ignoriere es) . Ich sammle diese Bits, indem ich sie in eine Variable verschiebe, und wenn ich genug davon gesammelt habe, sende ich den 32-Bit-Wert in einen kleinen Software-FIFO und signalisiere meiner Hauptroutine, dass Daten zu verarbeiten sind.

Für die Übertragung können Sie etwas Ähnliches tun. Richten Sie einen Timer mit einer Tickrate ein, die für Ihre spezielle Anwendung "schön" ist. (Aus dem Bild sieht es nach ungefähr 500 us gut aus, da die Bitzeit ungefähr 2 ms zu betragen scheint und die Breite des "kurzen Impulses" ungefähr 500 us beträgt). Sie möchten eine konstante Bitzeit, also müssen Sie einen von zwei Zuständen übertragen: High für 1,5 ms/Low für 0,5 ms oder High für 0,5 ms/Low für 1,5 ms. Sie können dies mit Timer-Überläufen tun oder etwas schicker vorgehen und den Timer so einstellen, dass er den Pin basierend auf dem Wert automatisch setzt / löscht, wenn das Peripheriegerät dies zulässt. Sie können wahrscheinlich auch damit durchkommen, indem Sie die PWM-Funktion missbrauchen. Der Einfachheit halber würde ich sicherstellen, dass Sie ungefähr 500 us genau schlafen können und es einfach ein bisschen knallen. Bring es zum Laufen, dann werde schick.

Jedenfalls jetzt, um es zurückzuentwickeln. Denken Sie daran, dass ich gesagt habe, dass diese Radios spottbillig und kinderleicht sind. Sie können aus dem Diagramm sehen, dass es eine konstante Folge von 16 Bits gibt: 0101010101010101; Dies dient dazu, dem Empfänger zu ermöglichen, sich auf das Signal zu synchronisieren. Danach sieht es so aus, als würde der tatsächliche Tastendruck wahrscheinlich den 8-Bit-Wert 00001101 senden. Es ist noch ein 0-Bit übrig, das möglicherweise Parität ist oder nur als Stoppbit verwendet wird. Sie können sehen, was vor sich geht, wenn Sie andere Tasten drücken. In meinem besonderen Reverse-Engineering-Abenteuer für diese Sender habe ich das Protokoll zurückentwickelt, das zur Übertragung von Temperatur und Feuchtigkeit verwendet wird. Ich habe den Zustand 1 und 0 richtig erraten (es hätte umgekehrt sein können) und ich habe die Bitreihenfolge falsch erraten (es war LSB, ich habe MSB vermutet). Es gab auch eine "Batterie schwach"

Um die Übertragung neu zu erstellen, müssen Sie nur die Werte, die Sie zurückentwickelt haben, mit einer der oben beschriebenen Methoden an das "rohe" Funkmodul senden. Sie speisen diese Werte in das Sendermodul und voilà!

Es sieht tatsächlich nach Manchester-Code aus. Gut! Jetzt wissen wir also, was die Übertragung ist. Aber ich zähle 24 Bits, nicht 16. Frage - was kann verwendet werden, um dieses Signal zu erzeugen? Tx und Rx brauche ich nicht. Nur Tx, das heißt, genau dieselbe Bitfolge zu übertragen, damit der Empfänger seine Arbeit erledigt. Ich möchte nur die Fernbedienung imitieren.
Ich sehe 25 Bits – 8 "10"-Paare, gefolgt von 8 Bits, gefolgt von dem, was ich ein Paritätsbit nennen werde. Und zum Übertragen habe ich in der Antwort drei mögliche Methoden erwähnt, mit dem Vorschlag, es einfach in einer Schleife zu schlagen. Um eine 1 zu übertragen, stellen Sie den Ausgang hoch, schlafen Sie 1,5 ms, setzen Sie ihn niedrig, schlafen Sie 0,5 ms. Um eine 0 zu übertragen, hoch einstellen, 0,5 ms schlafen, niedrig einstellen, 1,5 ms schlafen.

Okay, lass uns das richtig machen. Sie haben Ihre digitalen Daten erfolgreich demoduliert und möchten nun diese Daten mit einem Raspberry Pi präzise rekonstruieren und diesen digitalen Datenstrom an einen AM 315MHz-Sender koppeln?

Richtig so weit?

Damit dies funktioniert, müssen Sie sich der im Originalsender verwendeten Übertragungsmodulation sicher sein - wenn es sich um eine einfache ASK (Amplitude Shift Keying) handelt, haben Sie eine gute Chance, sie zum Laufen zu bringen, aber Sie müssen mit Ihrer Trägerübertragungsfrequenz oder genau sein Ihr Empfänger nimmt möglicherweise überhaupt nichts auf. Sie sollten die Verwendung eines Spektrumanalysators in Anspruch nehmen, um die genaue Frequenz zu überprüfen, auf der er sendet. Hey, Sie können Glück haben, aber meiner Erfahrung nach wahrscheinlich nicht.

Wenn es sich um eine komplexere Form der AM-Übertragung wie einen unterdrückten Träger handelt, haben Sie kaum eine Chance, einen handelsüblichen Sender zu finden, der die Aufgabe erfüllt.

Wenn ich mit AM demoduliere, bekomme ich dieses digitale Signal . Es ist ziemlich klar, man kann sogar die Sinusmodulation der Rechteckwelle sehen! Es ist nicht AFK, oder? Es sendet nur digitale Rechteckwellen über AM.
Auch hier ist ein zweites Signal (die andere Taste). Sieht sehr ähnlich aus, außer dass sich zwei "Bits" geändert haben.
Eine Sache, die Sie nicht sehen werden, ist die Sinuswelle des Trägers - das ist viel zu hoch und es ist unwahrscheinlich, dass Ihre Bildschirmaufnahme mit über 630 Millionen Abtastungen pro Sekunde abgetastet wird, um Aliasing zu verhindern. Es ist machbar, aber die Trägerfrequenz richtig einstellen.