Forum: Mikrocontroller und Digitale Elektronik Decoding Panasonic IR-Remote


von Simon M. (mulmus)


Lesenswert?

Hallo,

ich bin seit einigen Tagen dabei mir einen Decoder für eine meiner 
rumliegenden Panasonic-Fernbedienungen zu basteln.

Leider finde ich im Internet zum Panasonic IR-Protokoll keine 
einheitlichen Informationen über das aktuelle Protokoll.
Hier finde ich einige Beiträge von 2005 die mit "Panasonic-Old" 
gekennzeichnet sind, diese scheinen mir aber nicht mehr aktuell. (Die 
Fernbedienung ist bestimmt von 2016).
Nun habe ich keine Ahnung welche Zeiteinheiten die jeweiligen Bits 
haben, oder ob beim Panasonic Protokoll auch mit Inversen der Daten 
gearbeitet wird wie beim "alten".
Mein Aktueller Stand:
Start: zwischen 4700 und 5700us
"0": 960us
"1": >960us

Ich bin hier um jedes bisschen Hilfe dankbar.
LG Simon

von Jörg R. (solar77)


Lesenswert?

Simon M. schrieb:
> Ich bin hier um jedes bisschen Hilfe dankbar.

Ich bin mir nicht sicher ob Dir diese Seite weiterhilft, aber einen 
Versuch ist es wert:

http://lirc.sourceforge.net/remotes/

http://lirc.sourceforge.net/remotes/panasonic/

von Olaf (Gast)


Lesenswert?

> Leider finde ich im Internet zum Panasonic IR-Protokoll keine
> einheitlichen Informationen über das aktuelle Protokoll.

Ach immer Internet. Selbst ist der kleine Entwickler. :)

Hier mal zwei Kommentarzeilen aus meinem eigenen Empfaenger:

//Ab jetzt kommen 48Datenbits die immer aus einem Lowpegel von
//423us und einem Highpegel von 423us=0 oder 1269us=1 bestehen

Damit empfange ich erfolgreich Befehle von modernen Pansaonic-FBs.

Olaf

von Andy (Gast)


Lesenswert?

Simon M. schrieb:
> Leider finde ich im Internet zum Panasonic IR-Protokoll keine
> einheitlichen Informationen über das aktuelle Protokoll.

In dem Datenblatt vom LC7465M (Sanyo) ist das Protokoll ganz gut 
beschrieben. Für Panasonic ab 2016 passt es.

Hier kann es heruntergeladen werden:
https://www.digchip.com/datasheets/497676-lc7465m.html

Andy

von Simon M. (mulmus)


Lesenswert?

Jörg R. schrieb:
> Simon M. schrieb:
>> Ich bin hier um jedes bisschen Hilfe dankbar.
>
> Ich bin mir nicht sicher ob Dir diese Seite weiterhilft, aber einen
> Versuch ist es wert:
>
> http://lirc.sourceforge.net/remotes/
>
> http://lirc.sourceforge.net/remotes/panasonic/

Vielen Dank für den Link!
Nur noch eine Frage hier zu dem beschriebenen N2QAYB000329.
Hier kommt ja zuerst das Start-Signal mit 3437 high und 1641 low
Sind dann gleich die Pre-Data Bits dran oder kommt dazwischen noch was 
anderes?
Auch "ptrail" und "gap" kann ich leider nicht ganz einordnen.



Andy schrieb:
> Simon M. schrieb:
>> Leider finde ich im Internet zum Panasonic IR-Protokoll keine
>> einheitlichen Informationen über das aktuelle Protokoll.
>
> In dem Datenblatt vom LC7465M (Sanyo) ist das Protokoll ganz gut
> beschrieben. Für Panasonic ab 2016 passt es.
>
> Hier kann es heruntergeladen werden:
> https://www.digchip.com/datasheets/497676-lc7465m.html
>
> Andy

Auch dir Danke für das Datenblatt :)
Nur hier kurz die Frage, weil im Datenblatt bei "normal transmission 
mode" ms stehen für die einzelnen Bits.
Stimmt das so? Weil soweit ich das bisher gesehen habe, ist es doch eher 
so im us Bereich?

von Olaf (Gast)


Angehängte Dateien:

Lesenswert?

> Sind dann gleich die Pre-Data Bits dran oder kommt dazwischen noch was
> anderes?

Kuck dir doch einfach mal einen Datensatz auf deinem Oszi an. Dann wird
das alles viel klarer und die weisst vor allem ob deine FB dem 
entspricht.

> Nur hier kurz die Frage, weil im Datenblatt bei "normal transmission
> mode" ms stehen für die einzelnen Bits.

Ich hab das ganze ja vor ein paar Jahren erfolgreich programmiert. Hab 
also den Beweiss geliefert es verstanden zu haben, trotzdem fand ich 
aber gerade die Timingbeschreibung in dem hier zitierten Datenblatt 
verwirrend! Sie zu das du irgendwie die 48Bit dekodiert bekommst. Die 
Zuordnung der Bit laut dem Datenblatt sieht dann wieder sinnvoll aus.

Ich haenge dir mal die Notizen an die ich mir damals gemacht habe. Damit 
kann ich die FB eines TV von 2017 und eines Blurayplayer von 2019 
dekodieren.

Umgesetzt hab ich das dann mit einem TimerIRQ auf 105.75us. Das 
funktioniert sehr zuverlaessig.

Olaf

von Olaf (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch mein Headerfile. Dann brauchst du nicht selber die ganzen
Tasten auszuprobieren. .-)

Olaf

von Gerd E. (robberknight)


Lesenswert?

Hast Du es mal mit IRMP hier aus dem Forum probiert? Das kann einen 
Großteil der IR-Protokolle decodieren.

von 900ss (900ss)


Lesenswert?

Gerd E. schrieb:
> Das kann einen
> Großteil der IR-Protokolle decodieren

Und falls noch nicht, kann man damit ein Protokoll aufzeichnen und Frank 
baut es wahrscheinlich wenn man ihn nett bittet.

von Simon M. (mulmus)


Lesenswert?

Olaf schrieb:
>> Sind dann gleich die Pre-Data Bits dran oder kommt dazwischen noch was
>> anderes?
>
> Kuck dir doch einfach mal einen Datensatz auf deinem Oszi an. Dann wird
> das alles viel klarer und die weisst vor allem ob deine FB dem
> entspricht.
>
>> Nur hier kurz die Frage, weil im Datenblatt bei "normal transmission
>> mode" ms stehen für die einzelnen Bits.
>
> Ich hab das ganze ja vor ein paar Jahren erfolgreich programmiert. Hab
> also den Beweiss geliefert es verstanden zu haben, trotzdem fand ich
> aber gerade die Timingbeschreibung in dem hier zitierten Datenblatt
> verwirrend! Sie zu das du irgendwie die 48Bit dekodiert bekommst. Die
> Zuordnung der Bit laut dem Datenblatt sieht dann wieder sinnvoll aus.
>
> Ich haenge dir mal die Notizen an die ich mir damals gemacht habe. Damit
> kann ich die FB eines TV von 2017 und eines Blurayplayer von 2019
> dekodieren.
>
> Umgesetzt hab ich das dann mit einem TimerIRQ auf 105.75us. Das
> funktioniert sehr zuverlaessig.
>
> Olaf

Ahhh ja danke das hilft auf jeden Fall.
Mein Problem ist leider, dass sich bei mir bis jetzt noch kein Oszi 
rentiert hätte :D also fühlt sich das ganze hier an wie geziehltes raten 
:D
Wenn ich die 0 und 1 richtig auslesen kann, hätte ich die gelesenen 
Daten im EEPROM des Atmega gespeichert, den kann ich mir in ein hex-file 
schreiben.

Meine Aktuelle Vorgehensweise ist, dass ich die jeweils auf die 
Steigenden Flanken und die Zeit nehme, die seit der letzten vergangen 
ist.

Und nochmal Danke für die Codes.

von Simon M. (mulmus)


Lesenswert?

Gerd E. schrieb:
> Hast Du es mal mit IRMP hier aus dem Forum probiert? Das kann einen
> Großteil der IR-Protokolle decodieren.


Gerd E. schrieb:
> Hast Du es mal mit IRMP hier aus dem Forum probiert? Das kann einen
> Großteil der IR-Protokolle decodieren.

Das hab ich tatsächlich auch schon gesehen, trotzdem danke.
Ich wollte aber zunächst mich selbst etwas dran versuchen :)
Habe aber auch da nur das Panasonic-Protokoll für Beamer gesehen.

von Olaf (Gast)


Lesenswert?

> Mein Problem ist leider, dass sich bei mir bis jetzt noch kein Oszi
> rentiert hätte :D also fühlt sich das ganze hier an wie geziehltes raten
> :D

Ganz ohne Oszi ist das natuerlich schon haerter.

Du kannst dir aber ein Sound-Karten-Osziprogramm installieren und den 
Ausgang von so einem IR-Empfaenger an deine Soundkarte anschliessen. ICh 
hab es zwar jetzt nicht ausprobiert, aber das sollte eigentlich machbar 
sein. Die Grundfrequenz eines Bits liegt ja so bei 1khz, das muesste 
eine Soundkarte noch gut darstellen koennten.

Die Traegerfrequenz war IMHO 36 oder 38khz. Fuer erste Tests ist das 
aber egal. Ein falscher Reciever kostet da nur etwas Reichweite.

> Hast Du es mal mit IRMP hier aus dem Forum probiert? Das kann einen
> Großteil der IR-Protokolle decodieren.

Sowas ist keine gute Loesung weil fremder Source immer schlecht in die 
eigenen Anwendungen passt. Ausserdem will man ja nicht alle Protokolle 
dekodieren sondern nur das eine das man gerade braucht.

Olaf

von Olaf (Gast)


Lesenswert?

Noch was. Ich bin eigentlich nicht der Meinung das man mit einem 
Logicanalyzer einen Oszi ersetzen kann. Aber in diesem Falle bekommst ja 
aus dem Reciever
bereits einen digitalen Datenstrom.

https://www.amazon.de/AZDelivery-⭐⭐⭐⭐⭐-Logic-Analyzer-gratis/dp/B01MUFRHQ2/

Das Teil wird dir dann dein Leben erheblich leichter machen. .-)

Olaf

von Simon M. (mulmus)


Angehängte Dateien:

Lesenswert?

Oh das ist mal ne super Idee!!
Das sollte mir definitiv helfen können und mir jetzt unnötig 
verschwendete Zeit sparen.

Nur noch die Frage, da ich mit meinem Atmega328P etwas an den Prescaler 
bei der Zeit gebunden bin.
Ich habe den Timer so eingestellt dass er alle 120us einen Interrupt 
auslöst und eine Zähler um 1 erhöht.
Wenn nun von meinem TSOP312 ein High-Pegel kommt, schaue ich nach ob nun 
5160us (start-bit) oder mehr als 960 und weniger als 1800("1") vergangen 
sind.

Ist das ein vertretbarer Ansatz?
Sollte es nicht verständlich beschrieben sein habe ich im Anhang meinen 
Code.

Nichtsdestotrotz vielen Dank für den Tipp mit dem Logic Analyzer! :)

von Olaf (Gast)


Lesenswert?

> Ist das ein vertretbarer Ansatz?

Ich hab es Timingmaessig nicht nachgerechnet, aber ja so im groben geht 
das.

Ich mach das so:

Im TimerIRQ schauen ob am Eingang etwas anderes wie Ruhepegel anliegt,
wenn ja dann zaehler erhoehen. Wenn nein zaehler auf 0, Statemachine auf 
Anfang.

Wenn Zaehler erhoeht wurde Statemaschine auf Startbit-Kommando.

Wenn Statemachine auf Startbit-Kommand und Eingang auf Ruhepegel, 
pruefen ob Startbit groesser x und kleiner y. ---> Statemachine auf 
Datenbit. Wenn aussehalb Wertebereit --->statemachine auf Anfang.

Wenn Statemachine auf Datenbit dann pruefen ob zaehler >x also 1 oder 
kleiner also 0 empfangen. Bei allen abweichungen Statemachine immer auf 
Anfang!

So syncronisiert sich der Controller immer auf reinkommende Daten auf 
und haengt nie fest! Das ist ganz wichtig weil du immer mal auch was 
falsches empfaengst.

Olaf

von Achim M. (minifloat)


Lesenswert?

Olaf schrieb:
> kaseikyo.h

Das kann IRMP auf jeden Fall. Ich habe damit eine Zappe einer 
Technics-Stereoanlage (auch Matsushita) dekodiert bekommen.

Olaf schrieb:
> Aber in diesem Falle bekommst ja aus dem Reciever
> bereits einen digitalen Datenstrom.

Habe zuerst einen ollen TSOP1136 am Steckbrett mit dem Logikanalysator 
eingelesen. Die Daten konnten dann, mit etwas Kommandozeilen-Magie, in 
die Kommandozeilenversion von IRMP eingelesen werden. Damit wusste ich, 
dass es Kasekyo ist und IRMP was damit anfangen kann. Die Konfiguration 
von IRMP für den μC war dann super-einfach.

Alternativ kannst du auch gleich auf dem μC mit IRMP loslegen, dazu eine 
einfache Applikation, die per UART die Empfangenen Kommandos in Rohdaten 
ausgibt (Protokoll, Adresse, Kommando, Toggle-Bit).

mfg mf

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Simon M. schrieb:
> Mein Problem ist leider, dass sich bei mir bis jetzt noch kein Oszi
> rentiert hätte :D also fühlt sich das ganze hier an wie geziehltes raten

Ein Logikanalysator, der für die Auswertung der Telegramme voll 
ausreicht,  hat sich nach ein paar Minuten rentiert. Das erspart 
umständlichen Umwege und viel Raterei.
https://www.ebay.com/itm/172169652368

von 900ss (900ss)


Lesenswert?

Olaf schrieb:
> Sowas ist keine gute Loesung weil fremder Source immer schlecht in die
> eigenen Anwendungen passt

Das so zu verallgemeinern zeigt einfach nur Inkompetenz. Und es zeigt 
auch dass du IRMP nicht kennst. Bei IRMP trifft das überhaupt nicht zu, 
es lässt sich sehr gut einbinden weil die Schnittstelle sehr schlank 
ist. Eben gutes Design. Und funktionieren tut es auch noch ausgesprochen 
gut.

Wenn man es aber gerne selber machen möchte, spricht da ja nichts gegen.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Simon M. schrieb:
> ich bin seit einigen Tagen dabei mir einen Decoder für eine meiner
> rumliegenden Panasonic-Fernbedienungen zu basteln.
>
> Leider finde ich im Internet zum Panasonic IR-Protokoll keine
> einheitlichen Informationen...

Alles ganz einfach: Schreib dir ein Testprogramm für den µC deiner Wahl, 
an den du einen üblichen IR-Empfänger sowie ein Display anschließt. 
Alternativ geht auch USB-Anschluß. Damit testest du dann deine FB durch 
und schon weißt du es.
Im Prinzip brauchst du 2 Stufen im Programm:
1. Messen der Zeiten (Einleitung, ggf. Pause, kleine Bitzeit, große 
Bitzeit)
2. Darstellen des IR-Telegramms als Zahl (am ehesten zunächst hex)

Du kennst doch wohl den alten Spruch: "Hilf dir selbst, so hilft dir..."

W.S.

von Simon M. (mulmus)


Lesenswert?

Vielen Dank für die schnelle Hilfe und die Tipps.
Ich habs nun dank Logic-Analyser hinbekommen die Codes richtig 
auszulesen.
War dann doch ein dümmerer Fehler als gedacht. Hab das Datenblatt meiner 
TSOP falsch gelesen und auf die falsche Flanke reagiert^^.


Olaf schrieb:
> Hier noch mein Headerfile. Dann brauchst du nicht selber die ganzen
> Tasten auszuprobieren. .-)
>
> Olaf

Hier waren die Codes der einzelnen Tasten meiner Fernbedienung anders. 
Trotzdem danke :)

von Olaf (Gast)


Lesenswert?

> Hier waren die Codes der einzelnen Tasten meiner Fernbedienung anders.
> Trotzdem danke :)

Interessant. Wie denn anders? Alle Bits invertiert? Oder um 1Bit 
geschiftet? Oder nur die Geraete-ID anders?

Ich hab hier naemlich drei FBs die ich sinnvoll dekodieren konnte und 
zwei der Geräte sind definitiv relativ neu.

Olaf

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Olaf schrieb:
> Ganz ohne Oszi ist das natuerlich schon haerter.

Man kann IRMP als "Logikanalysator" nutzen. Mit gesetzter Konstante 
IRMP_LOGGING wird das Protokoll "raw" mit 0 und 1 auf dem UART 
ausgegeben.

>> Hast Du es mal mit IRMP hier aus dem Forum probiert? Das kann einen
>> Großteil der IR-Protokolle decodieren.
>
> Sowas ist keine gute Loesung weil fremder Source immer schlecht in die
> eigenen Anwendungen passt.

Naja, da sprechen aber hunderte von Anwendungen draussen dagegen. IRMP 
hat eine API, die man lediglich aufrufen muss. Zurück bekommt Protokoll, 
Adresse und Code. Einfacher gehts kaum.

> Ausserdem will man ja nicht alle Protokolle
> dekodieren sondern nur das eine das man gerade braucht.

Beim Übersetzen von IRMP kann man bestimmen, wieviele und welche 
Protokolle dekodiert werden sollen. Das darf auch nur eines sein - 
nämlich dasjenige, das man braucht. Dann wird der Source-Code per 
Preprocessor auf das Notwendige eingedampft. Übrig bleibt der 
Minimal-Code, denn man für das gewünschte Protokoll braucht.

@TO: Das Kaseikyo-Protokoll wird hier beschrieben:

https://www.mikrocontroller.net/articles/IRMP#KASEIKYO

von Simon M. (mulmus)


Lesenswert?

Olaf schrieb:
>> Hier waren die Codes der einzelnen Tasten meiner Fernbedienung anders.
>> Trotzdem danke :)
>
> Interessant. Wie denn anders? Alle Bits invertiert? Oder um 1Bit
> geschiftet? Oder nur die Geraete-ID anders?
>
> Ich hab hier naemlich drei FBs die ich sinnvoll dekodieren konnte und
> zwei der Geräte sind definitiv relativ neu.
>
> Olaf

Also meine Fernbedienung gibt mir als Adresse 0x4004 aus, was noch 
übereinstimmt wenn ich mich nicht vertue.

Taste 1: 0x01000809
Taste 2: 0x01008889

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.