Forum: Mikrocontroller und Digitale Elektronik Fernbedienung einmal anders


von Frank L. (franklink)


Lesenswert?

Hallo Zusammen,
bevor Ihr irgend etwas sagt ich möchte nicht irgendeine Frage zu RC5 
oder sonstiges stellen.

Meine Überlegungen gehen in eine andere Richtung.

Die Fragestellung die mich schon seit Tagen beschäftigt, ist wie kann 
man eine  x-beliebige Fernbedienung dazu bringen mit mir zu reden und 
die erwarteten Kommandos auszuführen.

Meine These dazu: Schau Dir das Signal an ohne es zu interpretieren!

Annahme: TSOP1736 an einen PIN x des Ports D

Vorgehensweise:
1. Starte einen Timer mit der ersten ansteigenden Flanke des Sginals an 
PIN x.
2. Messe das Signal über einen bestimmten Zeitraum in definierten 
Intervallen.
3. Zustand zum Messzeitpunkt wird als Bit gespeichert.

Auf diese Weise entsteht über das gemessene Intervall ein Bitmuster. 
Durch wiederholtes Messen kann das Signal verifiziert werden.

Messzeitraum: 50ms
Messintervall: 0,5ms

Als Ablage möchte ich in einem 2 Dimensionalen Array 10 Speicherwerte a 
14 Byte reservieren.

Kann das funktionieren? Oder bin vollkommen auf dem falschen Pfad.

In der Hoffnung auf eine gute Diskussion.

Gruß
Frank

von Otto (Gast)


Lesenswert?

Hallo Frank,

theoretisch und praktisch (jedoch mit anderen Aufzeichnungsparametern - 
länger und "feiner"):

ja

aber z. B. "Togglebit" u. ä. werden nicht berücksichtigt.....

Gruß Otto

von R. M. (rmax)


Lesenswert?

Ich würde eher die Zeit speichern, die zwischen zwei Zustandswechseln 
vergangen ist.

Das dürfte es etwas leichter machen, beim Wiedererkennen eine gewisse 
Toleranz zuzulassen, falls das Timing der Fernbedienung stark schwankt, 
z.B. in Abhänigkeit von Temperatur und/oder Versorgungsspannung. Manche 
FB-Codes erlauben ja eine relativ große Toleranz in der Bitrate, indem 
sie eine Präambel verwenden, mit der sich der Empfänger bei jedem 
Kommando neu auf das aktuelle Timing der FB einmessen kann, was das 
"blinde" Wiedererkennen aber um so schwerer macht.

von Düsentrieb (Gast)


Lesenswert?

versteh nicht ganz wozu du das nochmal machen willst...
lirc macht doch genau das :-)

+ du musst mind. 0,1ms genau messen, eher noch genauer

von antworter (Gast)


Lesenswert?

> Meine These dazu: Schau Dir das Signal an ohne es zu interpretieren!

Das entstammt dem pösen Brute-Force-Universum:

Probiere, ohne zu wissen, was es macht und warum - wenn es dann klappt, 
mach es immer genauso.

Das Problem dabei: Strategien werden durch Zufälle ersetzt, Effizienz 
durch Aufwand/Kraft und die Arbeitsweise stößt das Optimum prinzipiell 
ab.



Fazit: Kann man machen, ist von Erleuchtung aber so weit entfernt wie 
Stephen Hawking vom Sprint-Weltrekord.

War das jetzt politisch korrekt ? Ich bin mir da manchmal unsicher ;-)

von R. M. (rmax)


Lesenswert?

Düsentrieb wrote:
> versteh nicht ganz wozu du das nochmal machen willst...
> lirc macht doch genau das :-)

Frank hat es zwar nicht direkt gesagt, aber da dies ein 
Mikrocontroller-Forum ist, nehme ich mal an, daß er es nicht mit einem 
PC, sondern mit einem Mikrocontroller machen will. Außerdem 
interpretiert lirc die Fernbedienungs-Codes, was er ausdrücklich nicht 
will.

von Jörg (Gast)


Lesenswert?

Neulich habe ich einen Fernbedienungsempfänger gebaut, und ähnliche 
Gedanken gewälzt. Am liebsten hätte ich einen lernfähigen Empfänger 
gebaut, unabhängig vom Protokoll des Senders.

Ein lernfähiger Sender ist einfacher, der braucht "nur" das Signal der 
zu erlernenden Gebers aufzeichnen und möglichst getreu wiedergeben. 
Bleibt allerdings noch die Schwierigkeit, mit einem evtl. Toggle-Bit 
umzugehen und eine Periode im Signal zu erkennen, für gehaltene Taste. 
Evtl. wird die Präambel nicht mit wiederholt.

Ein lernfähiger Empfänger müßte zusätzlich zu Obigem noch ein 
Toleranzband für die eingehenden Flanken erlauben. Gibt es irgendwelche 
Beispiele für Universalempfänger, auf uC?

Letztendlich habe ich dann doch nur einen RC5-Empfänger gebaut. 
Allerdings trage ich mich mit dem Gedanken, die Software so aufzubauen, 
das ich im Lernbetrieb die Flankenzeiten in mehrere Dekoderroutinen 
einfüttere, eine pro Protokoll. Dann kann ich mir merken, welche 
anschlägt.

Eine andere Idee, die mehr in Richtung von Franks Vorstellungen geht: 
Vielleicht könnte man eine halbintelligente Empfangsroutine machen, die 
die Pulse/Pausen in kurz, mittel, lang gruppiert, per Vergleich mit dem 
Mittelwert, Clusterung, etc. Dann könnte man daraus eine Zahl machen und 
mit den gespeicherten Werten vergleichen. Wie immer auch hier Problem 
mit Toggle-Bit. Etwas Sonderbehandlung mag nötig sein.

von Frank L. (franklink)


Lesenswert?

Hallo,
vielen Dank für die Antworten.

@Otto
Aufzeichnungsparameter länger und feiner einverstanden.
Das Togglebit habe ich bisher nie betrachtet, dass wiederholte senden 
der gleichen Taste erfasse ich mit der Routine von Peter. Klappt 
wunderbar!

@Reinhard
Darüber habe ich bereits nachgedacht, hat aber den entscheidenden 
Nachteil, dass ich wesentlich mehr Speicher benötige um einen Scan-Code 
aufzuzeichnen. Das mit der Präambel muss ich mir nochmals durch den Kopf 
gehen lassen. Die Idee war schon, eine Fuzzy-Logik einzubauen, die eine 
noch zu bestimmende Unschärfe zu läßt. Was wäre, wenn die Präambel 
Bestandteil des gesannten Codes ist? Wäre es dann nicht egal?

@Düsentrieb
Ich setzte eine ATMEGA8 ein. Für den PC wäre natürlich lirc die erste 
Wahl. Ich möchte eine Universalbibliothek für eine x-beliebige 
Fernbedienung entwickeln, die nicht wissen muß, wie der Code der 
Fernbedienung aussieht.

@antworter
Brute-Force hat da glaube ich nichts mit zu tun. Brut-Force probiert aus 
bis es passt. Ich will ein Signal aufzeichen und anschließend mit einem 
eingehenden Signal vergleichen.

Allgemein, möchte ich jetzt ersteinmal nur Ideen sammeln und sinniges 
und unsinniges voneinander trennen. Ich habe leider nicht soviel Zeit 
alles auszuprobieren deshalb dieser Weg.

Gruß
Frank

von Frank L. (franklink)


Lesenswert?

Hallo Jörg,
das Problem mit dem Togglebit habe ich eigentlich nicht, hier verwende 
ich den Ansatz von Peter den er in seiner Keyscan Routine verwendet. Das 
ganze kombiniert mit einem Scheduler.
Funktioniert hervorragend.

Bei mir war es auch so, dass wenn ich die Lautstärker-Taste betätigte 
der Poti nur sehr ruckelig lief. Hier habe ich eine entsprechende 
Sonderbehandlung eingebaut. Ich weiss ja, welche Funktion ausgeführt 
werden soll, von daher war das unkritisch.

Gruß
Frank

von linker (Gast)


Lesenswert?


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.