Ich habe hier vom Vorjahr ein paar Weihnachtskerzen mit einer
AAA-Batterie drinnen. Die Batterien habe ich ersetzt und sind neu.
Leider lassen sich die Kerzen mit der Fernbedienung nicht einschalten.
Mit einer Kamera kann ich sehen, dass die IR-LED blinkt. Das Oszi zeigt
eine Trägerfrequenz von ca. 37.88kHz.
Kennt jemand das genaue Protokoll für die Kerzen? Ich nehme an, dass es
im wesentlichen nur eines für Weihnachtskerzen gibt.
Kaum zu glauben, wie aufwendig die Elektronik ist.
Es gibt ein 8 Pin IC ( vermutlich ein MC ) und eine Spule. Ich vermute,
dass die Spule als Step-Up-Converter fungiert.
Eine wirklich erstaunliche Schaltung.
Die Schaltung scheint tatsächlich einen Step-Up-Converter zu emulieren.
Am IR-Receiver Pin3 liegen konstant 3.3V obwohl ich die Schaltung mit
einer 1.5V Batterie betreibe.
Interessanterweise wird der Mittelanschluss des IR-Receivers alle 20ms
für 5ms auf GND gezogen. Ich vermute, dass das zum Strom sparen
passiert.
Wenn ich mein Multimeter in die Stromversorgung hänge, messe ich 60uA
Stromaufnahme.
Im Anhang sieht man das Signal am mittleren Anschluss des IR-Receivers.
Ich vermute, es handelt sich um so einen ähnlichen:
https://www.mouser.de/datasheet/2/427/tsop134-1308086.pdf
Bei der obigen Messung wird der Mittenanschluss ( vermutlich GND ) und
der Ausgang des IR-Receivers beobachtet.
Wenn ich den IR-Sender betätige, passiert das, was ich vermutet habe:
Der Mittenanschluss geht für mindestens 200ms auf GND und am Ausgang
kann man die Bits sehen.
Damit scheint also folgendes zu funktionieren:
Der IR-Sender sendet.
Der IR-Empfänger in der Kerze merkt, dass gesendet wird und schaltet den
IR-Receiver für mindestens 200ms ein.
Die Bits sind am Ausgang sichtbar.
Aber: Die Kerze leuchtet nicht!
Hat noch irgend einer eine Idee, was ich jetzt noch testen könnte?
Wo könnte der Fehler liegen? Hat der IR-Sender einen Schuss? Falsches
Timing?
Cornelius schrieb:> Aber: Die Kerze leuchtet nicht!> Hat noch irgend einer eine Idee, was ich jetzt noch testen könnte?
Funktioniert die LED noch?
Der Transistor defekt?
Der IR Receiver hat einen Pullup, wenn ein 38kHz moduliertes Licht
empfangen wird zieht es er für diese Zeit auf Low.
Deine Fernbedienung sendet also ein 200ms Signal als Startcode.
Hier kannst du dier raussuchen mit welchen Protokoll du es zu tun hast:
https://www.mikrocontroller.net/articles/IRMP#Die_IR-Protokolle_im_Detail
Hier als Beispiel das rc5 Protokoll, fürs generelle Verständnis lesen.
Hallo,
ich habe 2 Versionen als RGB, vom vorigen Jahr und von diesem Jahr.
Beide benutzen NEC-Codes. Andere meiner flachen China-Fernbedienungen
bisher auch alle NEC.
Die richtige Fernbedienung hast Du auch benutzt?
Meine Weihnachskerzen von diesem und von vorigen Jahr benutzen
verschiedene Codes.
Gruß aus Berlin
Michael
Michael U.
>die richtige Fernbedienung hast Du auch benutzt?
Eigentlich sind es die Weihnachtskerzen meiner Eltern, die ich zu
reparieren versuche. Deshalb kann ich mir nicht zu 100% sicher sein,
dass es die Richtige ist. Aber es war die einzige in der Kerzenkiste und
sie sieht genau so aus wie auf dem angehängten Bild ( nur dass meine
Kerzen weiß sind ).
>Deine Fernbedienung sendet also ein 200ms Signal als Startcode.
Das muss nicht so sein. Der Empfänger schaltet den Receiver für 200ms
ein, sobald er ein Signal empfängt. Ansonsten polt er nur alle 20ms für
5ms um vermutlich Strom zu sparen, wie hier gezeigt:
Beitrag "Re: Weihnachtskerzen IR-Protokoll"
Das Sendesignal muss also länger sein oder sich wiederholen.
Hier habe ich ja einen Ausschnitt des Signals an der Sendediode gezeigt:
https://www.mikrocontroller.net/attachment/386040/KerzenBits.bmp
Frank:
>Funktioniert die LED noch?
Ich habe mit dem Oszi an der LED der offenen Kerzenelektronik kein
Signal gesehen, wenn ich die "ON" Taste auf dem Sender drücke. Es sind
auch noch 2 andere Kerzen mit Batterie empfangsbereit und ich hoffe,
dass die alle gleichzeitig an gehen sollen, wenn man die "ON" Taste auf
der Fernbedienung drückt.
Hallo,
Cornelius schrieb:> Eigentlich sind es die Weihnachtskerzen meiner Eltern, die ich zu> reparieren versuche. Deshalb kann ich mir nicht zu 100% sicher sein,> dass es die Richtige ist. Aber es war die einzige in der Kerzenkiste und> sie sieht genau so aus wie auf dem angehängten Bild ( nur dass meine> Kerzen weiß sind ).
ich hoffe mal mit Dir...
Ich habe hier wohl 5 verscheidene Fernbedienungen von irgendwelchen
Geräten oder Gimmicks (keine Weihnachtskerzen), die sehen identisch aus,
habe keinerlei sinnvolle Bezeichnung und jede sendet NEC mit anderern
Codes...
Cornelius schrieb:> Es sind> auch noch 2 andere Kerzen mit Batterie empfangsbereit und ich hoffe,> dass die alle gleichzeitig an gehen sollen, wenn man die "ON" Taste auf> der Fernbedienung drückt.
Ja, die Sets sind in sich identisch und reagieren damit auch
gleichzeitig.
Ich hatte dieses Jahr zwar 2 von 20 Kerzen aus einem Set, die von Anfang
an nicht gingen, Ausfälle vorhandener hatte ich und meine Verwandten
aber noch keine.
Gruß aus Berlin
Michael
Michael U.:
>ich hoffe mal mit Dir...>Ich habe hier wohl 5 verscheidene Fernbedienungen von irgendwelchen>Geräten oder Gimmicks (keine Weihnachtskerzen), die sehen identisch aus,>habe keinerlei sinnvolle Bezeichnung und jede sendet NEC mit anderern>Codes
Sehen die wirklich identisch aus? On,Off, 4H,8H ....
erstaunlich ...
Jetzt habe Ich mal die Fernsteuerung mit einem Arduino und der Library
hier verwendet:
https://github.com/z3t0/Arduino-IRremote/blob/master/examples/IRrecvDump/IRrecvDump.ino
Die Codes werden nicht immer korrekt empfangen, aber ich meine es ist
NEC und die Kodierung so
ON=>0
OFF=>0x80
4H=>0x40
8H=>0xA0
CANDLE=>0x20
LIGHT=>0xa0
DARKSUN=>0x90
LIGHTSUN=>0xE0
Addresse immer 0
NEC könnte fast stimmen:
9 ms ON (Lo), 4,5 ms OFF (Hi), dann 32 Bit mit entweder
Bit = 0: 0,6 ms On 0,6 ms Off, oder
Bit = 1: 0,6 ms On 1,6 ms Off
8-Bit Adresse:
8 Adressbits, 8 invertierte Adressbits, 8 Befehlsbits,
8 invertierte Befehlsbits
16-Bit Adresse:
16 Adressbits, 8 Befehlsbits, 8 invertierte Befehlsbits
Bild vom Beitrag 21.12.2018 18:04
Mit Adresse = 0x00, oder 0x00FF und Befehl 0x00 fühlt
sich wohl kaum ein Gerät angesprochen.
Außerdem ist die Lücke zwischen Adresse und Kommando
nicht NEC-typisch. Daher wohl der unsichere Empfang.
>NEC könnte fast stimmen:
Danke für die Hinweise. Ich muss die Signale noch mal genauer
aufzeichnen.
Ich habe jetzt mal einen Brute-Force-Ansatz versucht: Einen Arduino-Uno
mit der IR-Lib
https://github.com/z3t0/Arduino-IRremote
als Sender für die 32 Bit nehmen und alle Addressen einfach durch
probieren.
Leider reagieren sie bis jetzt noch nicht ...
Hallo,
ich wünsche Dir Erfolg.
Nur noch als Klarstellung: ich habe keine Fernbedienung, die Deiner
ähnelt.
Ich 2 Sets Weihnachtskerzen in RGB, davon nur die aktuell gekaufte
Fernbedienung hier verfügbar und einge Kerzen aus dem Vorjahr, wo ich
nur die Codes auf meiner Philips angelernt habe.
Außerdem läuft hier ein IR-Receive, das mir IR-Daten per MQTT schickt,
weil ich die in FHEM nutze.
Ich habe also nur mal so rumgespielt. Ich lasse mir nur Typcode,
HEX-Daten und Bitanzahl (wegen Sony) mitteilen und mein IR-Send sendet
die auch so.
Nun aber nochmal meine RGB-Kerzen: die werden von IT-Receive als NEC
erkannt,
ON ist bei den neunen 0x01FE58A7, bei den alten 0xA1DE40BF.
Sinnigerweise reagieren die alten nur auf ihren Code, die neuen auf
beide Codes... Die neuen reagieren auch auf einige völlig andere Codes
meines Fantek-Mediaplayer (NEC, 16Bit-Adresse 0x00F9), die alten aber
nicht.
Soviel zu chinesische IR-Code-Auswertungen in Weihnachtskerzen. ;-)
Hoffentlich schafft der UNO das noch vor Weihnachten.
Gruß aus Berlin
Michael
Michael:
>Soviel zu chinesische IR-Code-Auswertungen in Weihnachtskerzen. ;-)
Danke für Deine ausführlichen Bericht. Nach Rücksprache mit meinen
Eltern könnte es sich tatsächlich um die falsche Fernbedienung handeln.
Leider ist die andere im Moment nicht auffindbar.
Die LED-Kerzen hier sind nur einfarbig, also nicht wie bei Dir RGB.
Deshalb vermute ich, dass sie auch andere Startcodes haben.
Jetzt bleibt mir nur noch zu hoffen, dass jemand auch die alten hat und
den Code scannt. Oder ich muss 65536 Möglichkeiten durchspielen, falls
es der NEC-Code ist.
Vielleicht will ja jemand seinen Weihnachtsbaum mit der Alexa steuern
und muss dazu die Codes vorher raus finden.
"Alexa, Tannbaum an!"
>Hoffentlich schafft der UNO das noch vor Weihnachten.
Ja, dem Projekt ist ein eindeutiger Zieltermin gesetzt, der nicht
überzogen werden darf ;-)
Cornelius schrieb:> Oder ich muss 65536 Möglichkeiten durchspielen, falls> es der NEC-Code ist.
Hast Du es denn schon mal nit einer Universalfernbedienung versucht?
Die haben teilweise auch einen Modus, wo sie der Reihe nach alle
Codes durchprobieren.
Harald W.
>Hast Du es denn schon mal nit einer Universalfernbedienung versucht?>Die haben teilweise auch einen Modus, wo sie der Reihe nach alle>Codes durchprobieren.
Leider habe ich keine. Aber ich vermute mal, dass in den
Universalfernbedienungen eher die Codes für die verschiedenen TV
hinterlegt sind und die Kerzen eher nicht.
Michael
>ON ist bei den neunen 0x01FE58A7, bei den alten 0xA1DE40BF.
Michael, falls Du Muße, eine IR-Sendediode und einen Arduino hast,
könntest Du obigen Code mal ausprobieren. Dann müssten Deine Kerzen
eigentlich einschalten und ich bin sicher, dass im Code kein Fehler ist.
Hallo,
Cornelius schrieb:> Michael, falls Du Muße, eine IR-Sendediode und einen Arduino hast,> könntest Du obigen Code mal ausprobieren. Dann müssten Deine Kerzen> eigentlich einschalten und ich bin sicher, dass im Code kein Fehler ist.
Brauchbare IR-Diode suchen war das größte Problem, ich nehme da immer
irgendwelche aus alten Fernbedienungen, das passt dann auch die
Wellenlänge und die Leistung.
Ansonsten läuft Dein Code hier auf einem Nano, ich wußte garnichtmehr,
wie langsam das so ist...
Meine neuen reagieren offenbar auf alle Geräteadressen wenn der
Kommandocode kommt. Bei der alten hatte ich den falschen Code kopiert,
0xA1DE40BF ist der Ausschaltcode, Einschalten ist 0xA1DE00FF. Außerdem
ist mir erst jetzt aufgefallen, daß das eine 16Bit-Adresse ist.
Ich habe es mal zum Test für mich zusammengekürzt und den Statwert
passend gesetzt, wird ordentlich bei 0xA1DE00FF eingeschaltet.
Allerdings dürfte es Silvester werden, bis sie wieder mit 0xA1DE40BF
ausgeschaltet wird.......
Da hast Du vermutlich keine reale Chance.
Gruß aus Berlin
Michael
Michael
>Ansonsten läuft Dein Code hier auf einem Nano, ich wußte garnichtmehr,>wie langsam das so ist...
Vielen Dank für Deinen Aufwand.
Es freut mich, dass der Code geht.
Laut dem Mikrcontroller.net-Artikel soll der NEC code aus 4 Bytes
bestehen. Allerdings ist das erste Byte die Adresse, das zweite die
Adresse invertiert, das dritte die Daten und das vierte die Daten
invertiert.
Damit ergäben sich 256 Adressen und 8 Bit Daten, die ich noch vor
Weihnachten schaffen könnte.
Die Codes, die Du zuerst gepostet hast, entsprechen dem Format. Aber
Dein letzter Post nicht, hmmm ...
>Da hast Du vermutlich keine reale Chance.
Das tröstet mich nun sehr ;-) Vielleicht hat das Christkind ja noch ein
Einsehen oder es gibt noch jemand mit den weißen Kerzen, der den Code
auslesen will ....
Hallo,
Cornelius schrieb:> Laut dem Mikrcontroller.net-Artikel soll der NEC code aus 4 Bytes> bestehen. Allerdings ist das erste Byte die Adresse, das zweite die> Adresse invertiert, das dritte die Daten und das vierte die Daten> invertiert.> Damit ergäben sich 256 Adressen und 8 Bit Daten, die ich noch vor> Weihnachten schaffen könnte.https://www.sbprojects.net/knowledge/ir/nec.php
Extended NEC, die 8-Bit Adressen waren zu kanpp, es wurden dann
16Bit-Adressen benutzt, die 8Bit-Adressen wo Byte 2 das invertierte Byte
1 ist, werden einfach als 8Bit-Adressen weitergenutzt um kompatibel zu
bleiben.
Praktisch kann man sich die Invertierung auch wegdenken, 0xA55A ist eben
entweder eine alte 8Bit Adresse mit Invertierung in Byte 2 oder eben
eine der 16Bit-Adressen...
Möglich, daß die Decoder am Anfang die Invertierung des Adressbytes
genutzt haben, um Fehler zu erkennen, das hat man dann später einfach
weggelassen.
Beim Kommandobyte ist es unverändert drin geblieben.
Gruß aus Berlin
Michael
Auch danke dafür.
Ich frage mich, was der Chip wohl ist: Ein Asic mit festem Code oder ein
Mikrocontroller mit Flash?
https://www.mikrocontroller.net/attachment/386051/Kerze.png
Auf dem Chip sieht man
AM 4E03
aufgedruckt. Ich dachte, das könnte vielleicht die Adresse sein. Geht
aber auch nicht.
Irgendwie müssen die ja in der Produktion sicher stellen, dass sie den
Code dem Chip zuordnen können.
Hallo,
Cornelius schrieb:> Ich frage mich, was der Chip wohl ist: Ein Asic mit festem Code oder ein> Mikrocontroller mit Flash?
Gute Frage, nächste Frage... ;-)
Ich war jetzt neugierig und habe meine beiden RGB-Versionen mal
geschlachtet:
alte Version, die läßt sich zwertörungsfrei zerlegen:
RGB-LED + weiße LED, 8-Pin-Controller, abgeschliffen.
StepUp-IC Marking C33F nichts zu finden.
neue Version, Gehäuse geht nur mit Gewalt zu zerlegen:
nur RGB-LED, 6-Pin-Controller 360A1, kennt auch keiner.
StepUp-IC Marking AX2E nichts zu finden.
IR-Empfänger sehen identisch aus, keinerlei Bezeichnung. Die werde ich
mir aber mal genauer ansehen, bisher war ein Sharp-Typ von Pollin mein
Favorit, ab 2,7V, ca. 100µA und sehr empfindlich.
Mal mit denen aus den Kerzen vergleichen.
Hilft Dir alles auch nicht, aber interessant.
Gruß aus berlin
Michael
Michael U. schrieb:> https://www.sbprojects.net/knowledge/ir/nec.php>> Extended NEC
Ich kann da nur aus Erfahrung der Entwicklung von IRMP sagen, dass
diese flachen Knopfbatterie-China-FBs meist nicht Extended-NEC, sondern
das klassische NEC-Protokoll mit Adresse 0x00FF oder manchmal auch
0xFF00 benutzen. Da das Kommando selbst nur zwischen 0x00 und 0xFF sein
kann, braucht man oft "nur" maximal zweimal 256 Kombinationen
durchzutesten, um die gültigen IR-Codes zu finden. Dabei muss man
natürlich berücksichtigen, das 2. Kommando-Byte entsprechend invertiert
auszugeben.
Das kann man zum Beispiel mit IRSND schnell realisieren, allerdings
nur mit nativem AVR-C Code und nicht mit Arduino. Übrigens: Bei
IRSND gibt man nur das erste Kommando-Byte an, IRSND berechnet
das zweite Byte selbst.
Siehe auch:
https://www.mikrocontroller.net/articles/IRMP#NEC_.2B_extended_NEC
Hallo,
kann ich so für meine hier rumliegenden nicht bestätigen.
0xFD80 und 0xA1DE sind 16-Bit Adressen, 0x01FE ist zwar 8-Bit mit
invertierung, keine hat aber auch nicht 0x00FF oder 0xFF00.
Insofern hilft das vermutlich auch wenig.
Ansonsten kann man das problemlos aus der ArduinoIDE mit der IRremote
Lib erledigen.
Das macht Dein IRSND und die Arbeit, die da drinsteckt, ja nicht
schlechter.
Zeit sparen würde es auch nicht, meine eine Weihnachtskerze will z.B.
rund 500ms Pause nach einem falschen Code bis sie wieder reagiert.
Gruß aus Berlin
Michael
Michael U. (amiga)
>IR-Empfänger sehen identisch aus, keinerlei Bezeichnung. Die werde ich>mir aber mal genauer ansehen, bisher war ein Sharp-Typ von Pollin mein>Favorit, ab 2,7V, ca. 100µA und sehr empfindlich.>Mal mit denen aus den Kerzen vergleichen.
Ich bin auch schon am überlegen, was man mit der Elektronik der
Weihnachtskerzen machen könnte. Immerhin habe ich ja dann einige übrig,
wenn das mit dem Code nicht klappt.
Man könnte den IR-Empfänger der Kerzen für irgend was benutzen. Außerdem
hat man ja noch die Spannung des Step-Up-Converters, die schön genau auf
3.3V liegt. Damit könnte man irgend einen anderen Controller versorgen.
Ich muss mal sehen, wie viel Strom man ziehen kann ...
Apropos: Durch das Anpingen der Kerzen geht deren Stromverbrauch von ca.
60uA auf 2mA ( soweit das mein Messgerät bei mögicherweise getaktetem
Strom misst ). Die Schaltung wacht also durch das Anpingen auf.
Was mir noch auffällt: Das low- und high-Byte der Adresse ist beim
extended NEC verdreht.
Meine Testadressen der bisher im Netz gefundenen Kerzen liegen damit
alle im oberen Bereich.
1
//*********** test various on-codes ***********************************
Was man nicht alles im Internet findet.
Hier hat einer so eine Kerze auseinander genommen
https://www.youtube.com/watch?v=8l8YQeXJQ9I
( Minute 3:10 )
Die ist meiner ziemlich ähnlich: Es gibt den 3.3V Step-Up und es wird
erklärt, dass der IR-Empfänger getaktet ist.
Er behauptet, der MC sei ein PIC wobei ich das eher für eine Vermutung
halte.
Aber die Spannungsversorgung am 8 Pin IC ist zumindest Stanard:
Pin 4 ( rechts unten ) => GND
Pin 8 ( links oben ) => 3.3V
Hallo,
ein Frühaufsteher am Sonntag morgen... ;-)
Die Kerzen werden sich alle ähnlich sehen. Auch meine RGB(W) sind
insofern identisch. StepUp mit einem 3-Beiner, Kontroller,
Vorwiderstände und LED.
Was sollte man da auch sonst einbauen. Ob da ein Pic drin wohnt dürfte
reine Vermutung sein, die Chinesen können da auch durchaus was eigenenes
haben.
Das der µC schläft ist anzunehmen, der Batterieverbrauch im Betrieb
passt dazu (ca. 14 Tage bei Verwandten bei ca. 6h pro Tag), der
Rzhestrom muß gering sein, sie haben bei mir knapp ein Jahr im Schrank
zumindest noch so überlebt, daß sie angingen, allerdings nur noch für
kurze Zeit.
Um die Byteorder bei 16 Bit habe ich mich nie gekümmert, weil letztlich
sowieso ein 16 Bit-Wert rauskommt. Könnte nur eine Rolle spielen, wenn
z.B. jemand sagt. das die Geräte seiner Firma alle als H-Byte xy
benutzen.
Wüßte jetzt aber nicht, ob das jemand zentral verwaltet.
Gruß aus Berlin
Michael
Cornelius schrieb:> Außerdem> hat man ja noch die Spannung des Step-Up-Converters, die schön genau auf> 3.3V liegt. Damit könnte man irgend einen anderen Controller versorgen.> Ich muss mal sehen, wie viel Strom man ziehen kann ...
Ich habe bei LCSC eine Suche nach einem Boost 3.3V im SOT-23-3 gemacht,
übrig geblieben ist genau einer, der keine weitere Außenbeschaltung
benötigt:
https://datasheet.lcsc.com/szlcsc/QX-Micro-Devices-QX2304L33T_C219038.pdf
Demnach kann der theoretisch bis 1A Schaltstrom, was ich dem SOT23
natürlich nicht wirklich zutraue - und die Spule müsste dann größer
natürlich.
Hallo,
Cornelius schrieb:> Ich glaub's nicht, die Fernsteuerung ist wieder aufgetaucht.> Der Code ist RC5. Da hätte ich lange probieren können.
Glückwunsch, Weihnachten gerettet!
Harald A. schrieb:> Demnach kann der theoretisch bis 1A Schaltstrom, was ich dem SOT23> natürlich nicht wirklich zutraue - und die Spule müsste dann größer> natürlich.
Sieht alles sehr passend aus, der AX2E aus meiner neueren Kerze sieht
identisch zum C33 auzs, auch die Spule ist soweit identisch, gehe ich
mal von gleichen/ähnlichen Daten aus.
1A passt rechnerisch schon, bei 1V In wären es dann also ca. 0,3A bei
3,3V out und bei 90% Wirkungsgrad also nur rund 0,33W am IC. Datenblatt
sagt 300mW für das Gehäuse. Gemessen und begrenzt wird ja offenbar wohl
der Eingangsstrom.
Spule hat für 1A natürlich zu dünnen Draht.
Ich habe zumindest von meinen neuen genug zum rumspielen, die taugen
ohnehin nicht wirklich was, weil sie auf alle möglichen Adressen
reagieren...
Gruß aus Berlin
Michael
Michael U. schrieb:> weil sie auf alle möglichen Adressen reagieren...
Bei den Krinner Kerzen ist es so, dass sie nach dem Einlegen der
Batterie erstmal an sind. Mit der ersten Abschaltkommando wird die
Adresse übernommen.