PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IR Befehle aufnehmen, speichern und per Tastendruck wieder ausgeben?



Accenter
01.07.2013, 14:33
Hat jemand von euch so ein Projekt mal realisiert? Die gängigsten IR Fernbedienungen arbeiten moduliert auf 36Khz. Hier würde ich gerne einen Sendecode aufnehmen und speichern können. Danach soll das ganze über eine IR Sendediode wieder ausgegeben werden können. Die RC5 Befehle in Bascom sind mir bekannt nur habe ich gelesen, dass nur wenige Fernbedienungen dieses Protokoll nutzen. Ich hätte da gerne eine etwas universellere Lösung.

for_ro
01.07.2013, 16:10
Du kannst die Pausen- und Pulszeiten aufzeichnen, die dir ein TSOP Empfänger ausgibt.
Wenn du diese dann über einen Timer auf eine 36KHz Frequenz aufmodulierst, sollte dein Empfänger im Zielgerät das schon erkennen können.
Allerdings sind z.B. bei RC5 die gesendeten Pulse nicht immer gleich, wenn du die gleiche Taste drückst, da das Toggle Bit umgeschaltet wird.
Wenn du nun gar nicht erkennst, welches Protokoll gerade empfangen wird, kannst du soetwas auch nicht bemerken.
Bisher habe ich daher immer versucht, zunächst das Protokoll zu erkennen und dann den gesendeten Code.
Aber wenn es sich nur um ein paar feste Tasten handelt, sollte es auch mit der "Low-Level" Methode gehen.
Auch ändert sich die Reichweite etwas in Abhängigkeit von der Differenz der tatsächlichen Frequenz des Protokolls und deinen gesendeten 36KHz.

oberallgeier
01.07.2013, 17:00
... Die gängigsten ... Sendecode aufnehmen ... wieder ausgegeben ... universellere Lösung.So etwas ist sicher möglich, es gibt ja entsprechende Fertigfabrikate. Selbst gemacht erscheint es mir als sehr aufwändiges Projekt, hier der Link zu (m)einem Kommentar (https://www.roboternetz.de/community/threads/61065-(universeller)-Infrarot-Empfang?p=572509&viewfull=1#post572509) für ein Forumsmitglied mit ziemlich der gleichen Absicht.

Accenter
02.07.2013, 09:58
Ich hab mir das dann scheinbar zu einfach vorgestellt. Hatte gehofft, dass ich einfach einen Bereich "aufnehme" und diesen dann wieder 1:1 ausgebe (Puls- Pausenlänge). Von ELV gibts sowas fertig FS20 IRF nennt sich das Ding. Damit konnte ich bisher alle gängigen IR Fernbedienungen auslesen und die zugewiesenen Codes dann getriggert von einem Funkbefehl per IR wieder ausgeben. Laut Manual unterstützt dieses Gerät auch nur die gängigsten Protokolle (was für meine Zwecke immer gereicht hat). Hatte gehofft, dass jemand hier schon an so einem Projekt gearbeitet hat und mir mit etwas Code weiterhelfen kann.

Che Guevara
02.07.2013, 10:42
Hi,

also wenn du die Befehle nicht dekodieren sondern nur speichern und wiedergeben willst, stelle ich mir das garnicht so schwer vor.
Im Prinzip musst du nur die kürzest mögliche Impulsdauer ALLER Signale kennen. Dann nimmst du einfach einen Timer und lässt ihn mit der doppelten Frequenz laufen (Abtasttheorem). Bei jedem Interrupt speicherst du dann den momentan Pegel (high oder low) in einem fortlaufendem Array. Zum Senden nimmst du wieder einen Timer (oder evtl. den gleichen) und lässt ihn mit der gleichen Frequenz laufen. Dann schreibst du bei jedem Interrupt den aktuellen Wert in das LED-Out-Register.
Der Nachteil, den ich sehe, ist dass es sehr speicherintensiv ist. Aber grundsätzlich funktionieren sollte es wohl.

Gruß
Chris

Accenter
06.07.2013, 11:21
Alleine bekomm ich das fürchte ich nicht hin. Hab schon gegoogelt wie ein Weltmeister aber leider nichts gefunden.

Searcher
06.07.2013, 12:09
Hallo,
wo hängt es denn?

Hab es auch noch nicht probiert, würde es aber so versuchen:
Einen IR-Empfänger wie zB. TSOP17236 oder SFH506 an den ICP Pin eines AVR anschließen.
Bei Empfang eines IR Signals wird der ICP nach low gezogen und der ICP Interrupt ausgelöst. Den Timerwert in der ISR zwischenspeichern und den Triggerlevel des ICP umschalten.
Wechselt der ICP wieder nach high, Triggerlevel umschalten, den Wert sichern und mit dem ersten verrechnen. Ergebnis ist die Zeit, des ersten Impulses. Den errechneten in einem Array abspeichern. Und so weiter. Timeout für die ganzen Impulse einer Taste bedenken.

Beim Senden, können dann die Werte aus dem Array abgerufen und entsprechend low und high rausgepulsed werden.

Gruß
Searcher

peterfido
06.07.2013, 13:11
Zum Senden braucht es dann aber noch eine 36kHz Schaltung, wie sie z.B. bei Lochraster.org unter etherrap zu finden ist. Diese nutze ich auch erfolgreich.

Michael
06.07.2013, 13:39
Hab schon gegoogelt wie ein Weltmeister aber leider nichts gefunden.
http://bascom-forum.de/showthread.php?3975-Fernbedienungssignalrecorder-und-sender

Die 36 kHz kann auch der AVR erzeugen, eine extra Schaltung braucht es dafür nicht.

Gruß, Michael

oberallgeier
06.07.2013, 15:45
... IR-Empfänger wie zB. TSOP17236 oder SFH506 ...Ist der SFH506 nicht schon museumsreif? An die zwanzig Jahre alt, braucht satte 10 Pulse zum Umschalten, meine 5110er sind mit sechs zufrieden. Ich hab mal eben interessehalber nach der Verfügbarkeit gegoockt - acht Steine in der Bucht, PRO STÜCK - sozusagen ein Museums-Liebhaberpreis. Bei Pollin hatte ich vor ein paar Wochen ne Handvoll SFH5110-36 für nen halben Euro pro Stück gekauft.

oberallgeier
07.07.2013, 17:17
Hi Accenter,

Zufallstreffer für Dich!


... würde ich gerne einen Sendecode aufnehmen ... speichern ... wieder ausgegeben ...Sieh Dir doch mal diese nette Lösung an (klicken) (http://www.klaus-leidinger.de/mp/Mikrocontroller/IR-LCD/IR-LCD.html) . . .

......http://www.klaus-leidinger.de/mp/Mikrocontroller/IR-LCD/Display4.jpg (http://www.klaus-leidinger.de/mp/Mikrocontroller/IR-LCD/IR-LCD.html)
......© klaus-leidinger

Fazit: Irgendwie scheints doch einigermassen zu gehen - mit mässigem Aufwand *gg*.

Accenter
29.07.2013, 15:03
Danke für den Link. Ist leider nicht wirklich das was ich genau brauche. Ich möchte das alles mit Bascom realisieren damit ich es in mein Projekt integrieren kann. Falls jemand mal an etwas ähnlichem arbeitet, bitte bei mir melden :-) . Das wird auch noch in der Zukunft für mich interessant sein. Programmiertechnisch ist mir das allerdings im Alleingang etwas zu hoch.