Zurück zur Übersicht
433Mhz Signaldekodierung
Vorwort
Wenn ich die Tasten auf einer Funkfernbedienung (433Mhz) drücke, kann ich mit etwas Glück eine Funktion an einem Empfangsgerät auslösen. Wenn es Sie wie mich interessiert was da so für "Signale" durch die Luft schweben, dann lesen Sie weiter.
Vorbereitung
Signalsender
Signalsender
In meiner Bastelkiste habe ich eine verwaiste Funkfernbedeinung mit 4 Tasten, perfekt für das Senden dieser "Funksignale". Als nächstes brauche ich
Signalempfänger
Damit ich mir das Signal anschauen kann, benötige ich noch eine Möglichkeit dieses "unverfälscht" (d.h. nicht z.B. schon durch eine Software dekodiert) zu empfangen. Dafür verwende ich ein sogenanntes Software defined Radio, d.h. ich kann das Empfangsspektrum auf 433 Mhz konfigurieren und die Signale damit aufzeichnen.
Darstellung
Zur Darstellung der Signale habe ich die Open Source Software Extern: Audacity verwendet.
Gegenprüfung
Um meine Analyse zu prüfen habe ich noch einen 433Mhz-Empfänger an ein Arduino Board angeschlossen und mittels der RCSwitch.h-Bibliothek Signale entgegengenommen und aufgezeichnet.
Durchführung
Die Funkfernbedeinung hat die Tasten A, B, C und D. In diesem Versuch habe zuerst die Tasten nacheinander gedrückt und jeweils mit dem Arduino kontrolliert, welche Ergebnisse mit durch die Bibliothek angezeigt werden.
Taste | Wert |
---|---|
A | 5592368 |
B | 5592332 |
C | 5592512 |
D | 5592323 |
Im zweiten Schritt habe ich zuerst die Tasten A und B nacheinander und abwechselnd jeweils mit ca. 1-2 Sekunden pause betätigt und den Funkverkehr aufgezeichnet. Das gleiche habe ich mit den Tasten C und D wiederholt.
Analyse
Erläuterungen
Das Analysebild war nie für die Öffentlichkeit bestimmt, sodass Sie mit meiner unleserlichen Schrift, der chaotischen Aufbereitung sowie meinen Irrwegen leben müssen ;) Trotzdem will ich Ihnen hier ein paar Informationen dazu mit an die Hand geben:
- Die beiden Signalaufnahmen in der Mitte stellen die Aufzeichnungen für die Tasten C + D (oben) und A + B (unten) dar. Ich konzentriere mich hier am Beispiel der Taste A.
- In dem Bereich "A-Zoom" ist das aufgenommene Signal für "A" vergrößert dargestellt. Sie sehen hier dass das gleiche Signal mehrfach hintereinander (hier 25x) mit kleinen Pausen dazwischen wiederholt wird. Die Wiederholungen sind einfach dazu da, dass die Chance für einen korrekten Empfang am Endgerät möglichst hoch ist.
- Im Bereich "Packet-(Signal)-Zoom" dadrunter sehen Sie die Vergrößerung eines der Signale. Bei dieser Vergrößerung haben wir nun die Möglichkeit eine "Kodierung" zu erkennen.
- Bei genauer Betrachtung sieht man, dass hier das gleiche Muster sich immer wieder in einer Variation wiederholt. Das Muster besteht aus zwei Teilen, wobei ich den ersten Teil mit "X" und den zweiten mit "Y" gekennzeichnet habe. Mit der Annahme, dass es sich hier um eine "Pulse Width Modulation" handeln müsse, habe ich die Signale wie folgt markiert: SX = Kurzer X-Signalbereich (short x), LX = Langer X-Signalbereich (long x). Das gleiche auch für Y.
- Nun konnte ich die Signale, von denen es nur zwei Variationen gab, in Typen aufteilen (E1 und E2). Da es sich um digitale Signale handeln sollte, fehlte mir noch die Zuordnung welcher Signaltyp nun für eine 0 und welcher für eine 1 steht. Zusätzlich habe ich auch nochmal ein Oszilloskop am Arduino-Empfänger angelegt und die Signalübertragung in digitaler Form geprüft. (Oszilloskop-Bild in der Mitte links)
- Zusätzlich zu den beiden Binär-Code-Möglichkeiten musste ich noch prüfen ob die Bits nun mit dem höchstwertigen oder niedrigstwertigen beginnen.
- Nachdem ich nun die möglichen Signalkodierungen vorliegen hatte, konnte ich sie mit den Werten die ich über Arduino aus der RC_Switch.h-Bibliothek erhalten habe, vergleichen. Mit der Kombination Big-Endian (höchstwertiges Bit zuerst) und E1 = 0 sowie E2 = 1 konnte ich dann alle Signale dekodieren.
Zurück zur Übersicht