mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fernbedienung einmal anders


Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: R. Max (rmax)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Düsentrieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: R. Max (rmax)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: linker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.