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
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
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.
versteh nicht ganz wozu du das nochmal machen willst... lirc macht doch genau das :-) + du musst mind. 0,1ms genau messen, eher noch genauer
> 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 ;-)
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.
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.