Forum: Mikrocontroller und Digitale Elektronik OOK Decoder (Methode)


von Georg M. (g_m)


Angehängte Dateien:

Lesenswert?

Hallo,
hat jemand Ahnung, welches Verfahren mit dem auf dem µC laufenden 
Programm realisiert wird?
Es müsste etwas sehr einfaches sein, etwas ganz billiges.

https://www.lidl.de/de/silvercrest-funk-tuerklingel/p245233

von Christopher J. (christopher_j23)


Angehängte Dateien:

Lesenswert?

Eine direkte Antwort habe ich nicht aber hier gibt es das Datenblatt zu 
dem Chip: 
http://www.dzsc.com/uploadfile/company/307703/201246135150265.pdf

Aus dem Block-Diagramm geht ja hervor, das an Pin 11 der Datenausgang 
ist, d.h. hier könntest du mit einem Logic-Analyzer oder mit einem Oszi 
schonmal die dekodierten Bits abgreifen.

Das OOK-Timing ist wahrscheinlich so etwas wie

0: 500µs "high", 1500µs "low"
1: 1500µs "high", 500µs "low"

Siehe auch https://forum.pilight.org/Thread-SilverCrest-Doorbell?page=2 
.
Die Anzahl der gesendeten Bits variiert aber scheinbar zwischen 
verschiedenen Modellen und natürlich ist nicht auszuschließen, dass auch 
das OOK-Timing variiert, so gibt es z.B. einige die sagen sie hätten 
eine Silvercrest Funkklingel mit dem Elro/Home Easy HE800 Protokoll zum 
laufen gebracht. Da ist das Timing eher 320µs/960µs. Kann aber auch 
sein, das der Empfänger da sehr "tolerant" ist.

Am einfachsten ist soetwas natürlich mit einem entsprechenden Empfänger 
nachzumessen, z.B. mit RTL433 oder mit einem Nano-CUL oder Maple-CUL. 
Selbst ein billiger OOK-Receiver von Ebay mit einem uC dürfte schon 
etwas Licht ins Dunkel bringen.

von Wolfgang (Gast)


Lesenswert?

Christopher J. schrieb:
> Eine direkte Antwort habe ich nicht aber hier gibt es das Datenblatt zu
> dem Chip:
> http://www.dzsc.com/uploadfile/company/307703/201246135150265.pdf

Das ist der HF-Teil vom Empfänger. Mit der Kodierung der Daten hat der 
so ziemlich gar nichts am Hut.

Georg M. schrieb:
> Verfahren

Was meinst du mit "Verfahren"?
Modulationsart, Übertragungsart, Kodierung?

von Georg M. (g_m)


Lesenswert?

Wolfgang schrieb:
> Was meinst du mit "Verfahren"?

Der Mikrocontroller erkennt die nur für ihn bestimmte Impulsfolge. Also 
liegt dem Programm ein Verfahren, ein Prinzip, eine Methode zugrunde.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wolfgang schrieb:
> Das ist der HF-Teil vom Empfänger. Mit der Kodierung der Daten hat der
> so ziemlich gar nichts am Hut.

Doch klar. Am DO Pin liegt der vom Sender gesendete Datenstrom wieder 
demoduliert vor. Das ist also der Punkt, an dem man messen sollte, um 
das verwendete 'Verfahren' zu dekodieren. Allerdings ist ja nicht klar, 
wofür der TE das gewonnene Wissen verwenden möchte. Neuen Dekoder 
programmieren? Zweckentfremdung? Um bessere Hinweise zu geben, müsste da 
also noch etwas Info kommen.

: Bearbeitet durch User
von Christopher J. (christopher_j23)


Lesenswert?

Wolfgang schrieb:
> Christopher J. schrieb:
>> Eine direkte Antwort habe ich nicht aber hier gibt es das Datenblatt zu
>> dem Chip:
>> http://www.dzsc.com/uploadfile/company/307703/201246135150265.pdf
>
> Das ist der HF-Teil vom Empfänger. Mit der Kodierung der Daten hat der
> so ziemlich gar nichts am Hut.

Habe mich vielleicht ein bisschen missverständlich ausgedrückt. Das es 
der HF-Teil ist war mir schon klar aber trotzdem kann man dort am DO-Pin 
die Daten abgreifen, die dann an irgendeinen anderen IC/uC 
weitergeleitet werden, wie ich ja auch schon vorher geschrieben hatte:

Christopher J. schrieb:
> Aus dem Block-Diagramm geht ja hervor, das an Pin 11 der Datenausgang
> ist, d.h. hier könntest du mit einem Logic-Analyzer oder mit einem Oszi
> schonmal die dekodierten Bits abgreifen.

Wobei ich besser hätte schreiben sollen "demodulierte Bits abgreifen" 
anstatt "dekodierte Bits".


Georg M. schrieb:
> Der Mikrocontroller erkennt die nur für ihn bestimmte Impulsfolge. Also
> liegt dem Programm ein Verfahren, ein Prinzip, eine Methode zugrunde.

Da der PT4303 ja die Demodulation übernimmt muss der Mikrocontroller 
(der höchstwahrscheinlich als COB unter dem Epoxy sitzt) lediglich die 
empfangene Bitreihenfolge mit der (im Flash/EEPROM/etc.) abgespeicherten 
Reihenfolge Vergleichen. Das Verfahren ist ziemlich trivial aber ich 
denke aber nicht das du das gemeint hast.

Wenn du wissen willst wie das Signal moduliert ist, was der Titel "OOK 
Decoder" nahelegt, dann kann ich nur nochmals auf SDRs verweisen. Ein 
einfacher USB-Dongle für nichtmal 15€, z.B. 
http://www.ebay.de/itm/USB-2-0-Digital-DVB-T-SDR-DAB-FM-HDTV-TV-Tuner-Receiver-Stick-RTL2832U-R820T2-DE-/222023742800?hash=item33b1a57550:g:VPUAAOSwG-1WysjH 
und du kannst z.B. mit https://github.com/merbanan/rtl_433 sehr einfach 
schauen was da vor sich geht. Prinzipiell hast du damit aber die ganze 
SDR-Welt von GNU-Radio, SDR# oder Pothos offen. Radio oder Flugfunk 
hören kannst du damit natürlich auch ;) Weitere Infos findest du z.B. 
auf http://www.rtl-sdr.com/ .

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Matthias S. schrieb:
> Das ist also der Punkt, an dem man messen sollte, um
> das verwendete 'Verfahren' zu dekodieren.

Evtl. lohnt es sich mal in den Sender zu gucken, welcher Chip dort die 
Daten kodiert. Dann würde ein Blick ins Datenblatt reichen, um mehr über 
das 'Verfahren' zu erfahren.

von Jakob (Gast)


Lesenswert?

Püh, OOK heißt On-Off-Keying.

So eine Lidl-Türklingel wird einen (hoffentlich) individuellen
Code haben. Oder eine begrenzte Anzahl von Codes, die dann
hoffentlich schön verteilt in den verschiedenen Filialen verkauft
wird.

Verfahren:
Der µC an der Klingeltaste sendet seine einprogrammierte
"individuelle" Folge von ON-OFFs mit verschiedenen ON/OFF-Zeiten
ab - und der zugehörige Empfänger-µC reagiert nur, wenn genau
diese Folge kommt.

Was hat das mit billig/teuer zu tun? Gibts nur billig:
In China wird das für ein paar Cent gebaut und programmiert.

von Jakob (Gast)


Lesenswert?

Methode?

Denk dir eine Zufallszahl von 0 bis 65535 aus.
Wandel die in eine Biärzahl mit Bit 0...15 um.

Von Bit 0 bis Bit 15 tastest du den Sender für 1 ms ON,
wenn das aktuelle Bit = 0 ist, machst du eine Pause von
1 ms, wenn das aktuelle Bit = 1 ist, machst du eine Pause
von 2 ms. Zum Schluss sendest du nochmal 1 ms ON. FERTIG.

Wie das die Lidl-Klingel macht? Keine Ahnung - aber vielleicht
nach einem ähnlichen Verfahren.

Beitrag #5010794 wurde vom Autor gelöscht.
von Wolfgang (Gast)


Lesenswert?

Jakob schrieb:
> FERTIG.

Glaubst du. So bringst du hast keine Funkdatenübertragung zusammen. 
Mindestens eine Präambel ist erforderlich, damit sich der Empfänger 
einpegeln kann.

von Georg M. (g_m)


Lesenswert?

Christopher J. schrieb:
> Da der PT4303 ja die Demodulation übernimmt muss der Mikrocontroller
> (der höchstwahrscheinlich als COB unter dem Epoxy sitzt) lediglich die
> empfangene Bitreihenfolge mit der (im Flash/EEPROM/etc.) abgespeicherten
> Reihenfolge Vergleichen. Das Verfahren ist ziemlich trivial aber ich
> denke aber nicht das du das gemeint hast.

Doch, genau das habe ich gemeint. Ich möchte dieses triviale Verfahren 
ausführlich erklärt bekommen, um nicht das Rad neu erfinden zu müssen.

(Als COB unter dem Epoxy sitzen die Klingelmelodien. Der Mikrocontroller 
ist im SO-8.)

von Christopher J. (christopher_j23)


Lesenswert?

Also entweder wir reden aneinander vorbei oder du meinst das nicht 
ernst. Nochmal:

Am DO-Pin kommt der demodulierte Datenstrom als  Signal ähnlich einem 
UART raus und wird vom Mikrocontroller eingelesen und im RAM 
zwischengespeichert. Dann vergleicht er die eingelesenen Daten mit denen 
die er in irgendeinem nichtflüchtigen Speicher drin stehen hat. Wie ein 
Mikrocontroller zwei Bytes miteinander vergleicht brauche ich dir sicher 
nicht zu erklären.

Wenn es dir darum geht wie diese Bitfolge (für dein Gerät) aussieht dann 
häng halt mal ein Oszi oder Logic-Analyzer an den DO-Pin. Da gibt es 
nämlich - wie ich oben schon geschrieben hatte - verschiedene 
Möglichkeiten und  eine Glaskugel habe ich nicht.

Wenn es dir um das OOK-Timing geht, dann nimm halt einen passenden 
RF-Empfänger oder miss an passender Stelle mit Oszi oder LA am Sender.

von Georg M. (g_m)


Lesenswert?

Christopher J. schrieb:
> Am DO-Pin kommt der demodulierte Datenstrom als  Signal ähnlich einem
> UART raus und wird vom Mikrocontroller eingelesen und im RAM
> zwischengespeichert.

So weit sind wir noch nicht.
Obwohl der Hersteller bei "DO" vom "Data Output" spricht, vermute ich, 
dass es sich in Wirklichkeit lediglich um den "Digitalausgang" handelt 
(Komparator: entweder HIGH oder LOW). Und z.B. 200µs HIGH ist nicht 
dasselbe wie 300µs HIGH.
Die Daten werden erst im Mikrocontroller aus den Impulsen gewonnen.

Außerdem bezweifle ich, dass die empfangenen Daten zuerst gespeichert 
werden und anschließend verglichen. Alles müsste in Echtzeit ablaufen.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Georg M. schrieb:
> Doch, genau das habe ich gemeint. Ich möchte dieses triviale Verfahren
> ausführlich erklärt bekommen, um nicht das Rad neu erfinden zu müssen.

Schau dir einfach mal die Datenblätter des PT2262/HX2262 (Sender) und 
die des PT2272/HX2272 (Empfänger) an. Das dort benutzte Verfahren ist 
häufig und wird in den Datnblättern erklärt.
http://www.princeton.com.tw/en-us/products/encoderdecoderic/fixedcodedecoderic.aspx
http://www.princeton.com.tw/en-us/products/encoderdecoderic/fixedcodeencoderic.aspx
Da deine Schaltung anscheinend noch einen EEPROM hat, könnte auch der 
HS1527 als Sender dienen:
http://www.picaxeforum.co.uk/showthread.php?28531-Decoding-HS1527-OTP-Encoder-data-signals-%28with-learning-mode%29

: Bearbeitet durch User
von Christopher J. (christopher_j23)


Lesenswert?

Georg M. schrieb:
> Außerdem bezweifle ich, dass die empfangenen Daten zuerst gespeichert
> werden und anschließend verglichen. Alles müsste in Echtzeit ablaufen.

Gut möglich das direkt verglichen wird, da gebe ich dir Recht.


Georg M. schrieb:
> So weit sind wir noch nicht.
> Obwohl der Hersteller bei "DO" vom "Data Output" spricht, vermute ich,
> dass es sich in Wirklichkeit lediglich um den "Digitalausgang" handelt
> (Komparator: entweder HIGH oder LOW). Und z.B. 200µs HIGH ist nicht
> dasselbe wie 300µs HIGH.
> Die Daten werden erst im Mikrocontroller aus den Impulsen gewonnen.

Naja, und ich vermute, dass es eben nicht so ist aber wenn du es 
wissen willst, dann miss halt mal was an dem DO-Pin rauskommt und 
vergleiche es ggf. mit dem was am MIXOUT-Pin rauskommt.

von Georg M. (g_m)


Lesenswert?

Wie ich vermutet habe, demoduliert die Superheterodyn-Empfänger-IC das 
empfangene OOK-Signal und gibt es aus. Und wenn ich statt des 
Funkklingelsenders eine andere Funkfernbedienung (auch 433,92MHz) 
benutze, dann sehe ich am DO-Ausgang (Pin 11) ganz andere Impulse. Z.B. 
von der Funksteckdosen-Fernbedienung sind Impulse wesentlich breiter.

Das heißt, die Dekodierung wird vom Mikrocontroller durchgeführt. Und 
wie er das macht – das war von Anfang an meine Frage.

von S. R. (svenska)


Lesenswert?

Georg M. schrieb:
> Das heißt, die Dekodierung wird vom Mikrocontroller durchgeführt. Und
> wie er das macht – das war von Anfang an meine Frage.

Das hängt von dem verwendeten Protokoll ab. Impulslängen kann man z.B. 
mit einem Timer messen, den man auf die Flanken triggern lässt. Was man 
aus den Längen dann für Informationen gewinnt, ist wieder 
protokollspezifisch.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ein gutes Beispiel für solche Dekoder ist das IRMP Projekt von Frank und 
mittlerweile vielen anderen Kontributoren:
https://www.mikrocontroller.net/articles/IRMP

Der MC wartet hier, wie auch bei Funkempfängern, auf eine Präambel 
(sozusagen das Vorwort) und dann auf eine für das Protokoll gültige 
Datenfolge. IRMP ist mittlerweile sehr vielseitig und natürlich 
prinzipiell auch für Funksignale geeignet.

Beitrag #5018885 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.