Hallo zusammen... Ich möchte gerne folgende Idee realisieren. Ich möchte mir eine kleine Platine bauen, worauf sich ein AVR, ein TASTER und ein IR-EMPFÄNGER befinden (siehe Skizze im Anhang). Jetzt möchte ich eigentlich nur folgendes tun. Sende ich mit einer beliebigen Fernbedienung (z.B. vom Fernseher) ein Signal und halte dabei den Taster meiner Platine gedrückt, so soll sich der AVR (z.B. ATTINY13) das Signal merken und speichern. Sende ich dieses Signal nun erneut, soll der AVR einen Ausgang setzen. Fertig!! Wird der Taster erneut gedrückt speichert er ein anderes Signal, wenn es in dieser Zeit gesendet wird. Ich bin Elektroniker und habe umfangreiche Kenntnisse in der Elektronik und Löten und das entwerfen von Schaltungen ist bei mir Tagesgeschäft... nur... ich habe erst vor ein paar Tagen angefangen meine ersten Schritte mit Microkontrollern zu machen... und bin auf dem Gebiet absoluter Anfänger. Ich möchte mich in Assembler einarbeiten... stehe aber wie gesagt noch ganz am Anfang und habe quasi keine Vorkenntnisse. Über leichtverdauliche Kost in diesem Beitrag wäre ich auch echt sehr dankbar.
Jörg S. schrieb: > Ich bin Elektroniker und habe umfangreiche Kenntnisse in der Elektronik > und Löten und das entwerfen von Schaltungen ist bei mir Tagesgeschäft... Und zu welchem Teil Deiner Idee hast Du jetzt Fragen? Zur Dekodierung kannst Du unter IRMP suchen.
Ich möchte wissen, wie ich ein Programm schreiben kann (Am liebsten in Assembler), welches die Funktion ausführt, die ich beschrieben habe. Bei meiner Suche bin ich auf einige Schaltpläne gestoßen, die ich verstehe und problemlos nachbauen kann, aber mit der Software hapert’s... Ich verstehe nicht genau was im AVR passieren muss, damit das funktioniert, was ich möchte.
Jörg S. schrieb: > Ich möchte wissen, wie ich ein Programm schreiben kann Hast Du den IRMP-Thread denn schon gelesen?
Habe Ihn mir angesehen... Ihn aber nicht verstanden... :-( (Wie gesagt... absoluter Beginner)...
Jörg S. schrieb: > Habe Ihn mir angesehen... Ihn aber nicht verstanden... :-( > (Wie gesagt... absoluter Beginner)... Dann solltest Du als erstes vielleicht das AVR-Tutorial durchgehen.
Geht so nicht. Fernbedienungen verwenden verschiedene Grundfrequenzen auf denen das Signal aufmoduliert wird. Die mir bekannten IR Empfänger haben dafür Filter, die die Signale anderer Fernbedienungen ausblenden. Es gibt dazu wirklich hunderte von Codes. Es macht viel mehr Sinn, sich auf etwas einzulassen, das fast jede Fernbedienung kann - wie z.B. RC5 o.ä. das kann man im Programm sauber nach Start und Stopp des Paketes absuchen, z.B. die on und off Zeiten durch einen Timer messen und später in Ruhe auswerten. So steuerte ich in meinem Wohnwagen 5 Lichter über eine Universalfernbedienung per PWM. Benutze aber PIC und hab es in Assembler gemacht. Mfg Michael
Michael_Ohl schrieb: > Geht so nicht. Fernbedienungen verwenden verschiedene > Grundfrequenzen > auf denen das Signal aufmoduliert wird. Das ist aber nichts was man nicht auch per Software demodulieren könnte.
Dein Problem lässt sich (für viele Fälle) mit einem AVR-Tiny lösen, aber wohl kaum mit einem ATTINY13. Dafür brauchst du einen µC mit ausreichend SRAM - die 64 Byte eines ATTINY13 reichen garantiert nicht! Weniger, als die 512 Byte SRAM eines ATTINY85 führen kaum zum Erfolg. Besonders dann nicht, wenn es für beliebige Fernsteuerungen der verschiedensten Hersteller von Unterhaltungselektronik funktionieren soll. Der Empfang des Signals ist pillepalle: Fast alle IR- Fernsteuerungen arbeiten mit 36...40 kHz, die man alle mit einem Empfänger für 38 kHz (z.B. TSOP31238) recht gut empfangen kann. Zur Not kann man sich noch je einen IR-Empfänger für 33 kHz / 56 kHz (umschaltbar) dazunehmen. Das Ausgangssignal kann direkt an den ATTINY gehen. Dann kann man nur den Signalablauf der IR-Fernsteuerungen möglichst genau aufzeichnen - das braucht z.B. 80 Byte. (Abwechselnd Pulsdauer und Pulspausendauer) Danach musst du für den Vergleich jeden neuen Tastendruck aufzeichnen (zwischenspeichern): 2 * 80 Byte = 160 Byte. Manche Fernsteuerungen liefern aber 2 teilweise abgeänderte Signalabläufe hintereinander: 2 2 80 Byte = 320 Byte. Andere Fernsteuerungen liefern mit jedem neuen Tastendruck einen nur an einer Stelle abgeänderten Signalablauf. Zur Erfassung beider Varianten sind es 2 * 80 Byte, dazu der Signalablauf für jeden neuen Tastendruck: 3 * 80 = 240 Byte. Da man auch noch SRAM für verschiedene Zwischenberechnungen (und den Stack) braucht, sind 256 Byte SRAM fast immer zu wenig. Manche Fernsteuerungen senden einen sehr langen Signalablauf - In diesem Fall wird es auch mit 512 Byte SRAM knapp. Also: Dein Problem ist für viele Fernbedienungen lösbar, aber OHNE DEN WILLEN, ES PROGRAMMIEREN ZU KÖNNEN, wird es nix. Dafür gibt es keine fertigen Programme.
Schreiber schrieb: > Das ist aber nichts was man nicht auch per Software demodulieren könnte. Wenn man auf die Demodulations-Empfänger wie SFH5110-36 verzichtet, die schon selbst demodulieren, in diesem Fall 36kHz, und deswegen so empfindlich sind, weil sie auch Umgebungslicht unterdrücken. Nimmt man eine Photodiode, kann man selbst demodulieren, aber das Ding soll ja alle Frequenzen empfangen, da kann man Störlicht nicht so gut unterdrücken, die Reichweite wird also bescheiden sein. Das ist beim anlernen nicht schon tragisch, da kann man ja die SendeDiode direkt vor die PhotoDiode halten, beim späteren Empfang aber schon, es ist dann ja keine FERNbedienung mehr. Alternativ nimmt man 8 Demodulationsempfänger unterschiedlicher Frequenzen mit 30kHz, 33kHz, 36kHz, 38kHz, 40kHz, 48kHz, 56kHz, 78kHz und versucht damit die handelsüblichen Sender abzudecken, der selbstlernende Empfänger muss dann nur erkennen, welcher IR-Empfänger das beste Signal liefert.
Jörg S. schrieb: > Ich möchte mir eine kleine > Platine bauen, worauf sich ein AVR, ein TASTER und ein IR-EMPFÄNGER > befinden (siehe Skizze im Anhang). ist wirklich ein Witz mit Arduino nano 328 oder miniPRO 328 AUS cHINA 1,50€ bis 3€ ein TSOP 31236 mit Filter 100 Ohm auf 4,7µF nehme ich gerne weil der ausreichend genau alle zwischen 30 und 40 kHz empfängt. IRMP einbinden Taster ergänzen Dannegger bullet prof Entprellung fertig.
:
Bearbeitet durch User
Jörg S. schrieb: > Ich möchte mich in Assembler einarbeiten... mache doch das wenn du etwas in C geschafft hast.
Jörg S. schrieb: > Ich möchte gerne folgende Idee realisieren. [IR-Empfänger der einen Code lernen kann] > Sende ich mit einer beliebigen Fernbedienung (z.B. vom Fernseher) Beliebige Fernbedienung kann beliebig schwierig werden. Vielleicht beschränkst du dich besser erstmal auf die handvoll der gebräuchlichsten Protokolle. Z.B. das was IRMP implementiert. > Ich bin Elektroniker und habe umfangreiche Kenntnisse in der Elektronik > und Löten und das entwerfen von Schaltungen ist bei mir Tagesgeschäft... > nur... ich habe erst vor ein paar Tagen angefangen meine ersten Schritte > mit Microkontrollern zu machen... und bin auf dem Gebiet absoluter > Anfänger. Ich möchte mich in Assembler einarbeiten... stehe aber wie > gesagt noch ganz am Anfang und habe quasi keine Vorkenntnisse. Dann fang mit dem AVR-Tutorial an. Aber mach dir keine Hoffnung - in Assembler wird das echt lange dauern bis du was verwertbares hast. Wesentlich besser sieht das mit C aus; vor allem weil du dann relativ viel Code von Dritten weiterbenutzen kannst. Etwa das schon angesprochene IRMP-Projekt. Im Prinzip ist die Sache recht simpel: 1. einen IR-Empfänger verwenden der für die Trägerfrequenzen der zu verwendenden Protokolle funktioniert. Also z.b. einen TSOP-irgendwas für 38kHz. Der funktioniert für alle Trägerfrequenzen zwischen 36 und 40kHz, was über 90% der von IRMP überhaupt unterstützten Protokolle ausmacht. 2. in IRMP alle interessanten Protokolle aktivieren. Im Programm die Initialisierung und den Timer-Interrupt für IRMP aktivieren. Ab jetzt erkennt IRMP alle IR-Sendevorgänge in der Umgebung. 3. wenn die "Code lernen" Taste gedrückt wurde, so lange IRMP pollen, bis es einen Code zurückgibt. Der besteht dann aus Protokoll, Geräte-ID und Tasten-ID. Diese Werte im EEPROM des µC speichern. Vermutlich will man hier eine Zeitbegrenzung. Und man wird auch eher nicht den Taster die ganze Zeit gedrückt halten wollen. Eher so: Taster drücken -> LED "Lernbereit" geht an -> wenn Code erkannt blinkt die LED einmal. Oder nach Timeout blinkert die LED ein paarmal wild. 4. schließlich in einer Endlosschleife IRMP pollen; wenn ein Code empfangen wurde, den mit den Daten aus dem EEPROM vergleichen und bei Übereinstimmung die gewünschte Aktion auslösen. Auch hier wird man eine Art Timeout brauchen. Etwa: wenn Code erkannt -> Ausgang auf H setzen und Timer starten. Nach Ablauf des Timers (z.B. 500ms) Pin wieder auf L zurück setzen. Für jemanden der sich mit µC auskennt, ist das eine Sache von einem Nachmittag. Für dich gibt es in meiner obigen Aufzählung sicher ein paar Punkte wo du gerade in Gedanken "Häh?" gesagt hast. Und jetzt gehst du los und lernst die. Anhand der Tutorials.
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.