hi,
ich habe ein tape-deck und einen cd-player von kenwood, der
verst"arker ist von jvc.
alle geraete haben eine serielle schnittstelle fuer die
systemfernbedienung, natuerlich sind die systeme von jvc
und kenwood inkompatibel.
es muesste doch moeglich sein, ein etwas hardware zusammen-]
zubasteln, welche die signale vom verst"arker empfaengt,
analysiert und fuer kenwood ueersetzt und uebertragt. Umgekehrt
analog. ein / zwei uarts, eine (z80?) cpu und kleinkrams
sind ja recht billig zu bekommen.
probleme:
- weiss jemand, welche uarts bzw. elekt. spezifikation
fuer die ser. schnittstellen von kenwood bzw. jvc
benutzt werden ?
- kennt jemand die uebertragungsprotokolle, also welche
codes z.b fuer cdplayer->play benutzt werden usw. ?
gibt es da evtl schon loesungen ?
meine geraete:
jvc rx416v
kenwood kxw 4080
kenwood dp 1080
--
carsten 'fert'
the university of leipzig
department of computer science
european community
Halt uns auf dem laufenden.
Olaf
---------------------------------------------------------------
Olaf Such ol...@ihf.rwth-aachen.de
Institut für Hochfrequenztechnik +49 241 / 80 7942
Institute of High Frequency Technology
RWTH Aachen
Melatener Str 25
D-52056 Aachen
Germany
> ich habe ein tape-deck und einen cd-player von kenwood, der
> verst"arker ist von jvc.
> alle geraete haben eine serielle schnittstelle fuer die
> systemfernbedienung, natuerlich sind die systeme von jvc
> und kenwood inkompatibel.
> es muesste doch moeglich sein, ein etwas hardware zusammen-]
> zubasteln, welche die signale vom verst"arker empfaengt,
> analysiert und fuer kenwood ueersetzt und uebertragt. Umgekehrt
> analog. ein / zwei uarts, eine (z80?) cpu und kleinkrams
> sind ja recht billig zu bekommen.
> - weiss jemand, welche uarts bzw. elekt. spezifikation
> fuer die ser. schnittstellen von kenwood bzw. jvc
> benutzt werden ?
Viele Geraete verwenden einfach das Infrarot-Protokoll der
Fernbedienung (so z.B. Pioneer). Das hat den Nachteil, zu
keinem Standardbaustein zu passen, so dass Du Dir die
serielle Empfangseinheit selber zusammenbauen musst.
Unter
http://www.ee.washington.edu/eeca/text/
sind ein paar Referenzen fuer Seiten mit Steuercodes. Die
Erfahrung hat aber gezeigt, dass die angegebenen Codes
nicht immer stimmen.
> - kennt jemand die uebertragungsprotokolle, also welche
> codes z.b fuer cdplayer->play benutzt werden usw. ?
Ich wuerde mir mal ein Speicheroszilloskop nehmen und nach-
sehen, was da rauskommt. Normalerweise ist das ein Bus,
auf dem alle Signale fuer alle Geraete uebertragen werden,
so dass bei Empfang eines Signals von der Fernbedienung
was auf der Steuerleitung zu sehen sein muesste.
Viel Spass beim basteln
-- Dagobert Michelsen
PS: Fuer so kleine Aufgaben eignet sich ein Microcontroller
wie der PIC vermutlich besser als ein Z80 :-)
--
Dagobert Michelsen http://www.informatik.uni-kiel.de/~dam
d...@informatik.uni-kiel.de Phon/Phax:+49 431 96499
"They called me a whore!" "See how the people can be mistaken.
They call me Admiral even though i no longer sail the sea."
Mail mir weitere Ergebnisse, bitte, vor allem, falls es was 8051-artiges dafür
gibt..
Olaf
Und hier kommts
KENWOOD.DAT:
KENWOOD KA-4040R Amp RC-system Connection Specs as reverse engineered by
Olaf Such (ol...@ihf.rwth-aachen.de)
Kenwood Remote Control: CTRL is the red/right/ring, SDAT the white/left/tip
contact of the RC output of a KENWOOD RCA-5040 RCUnit controlled Amplifier.
Levels are TTL (0V/5V).
The code consists of: CTRL goes High, 2ms later, SDAT goes High for about
15ms (StartBit), then a Low on SDAT for either approx. 15ms or 7.5ms
followed by a High level on SDAT for 7.5ms (FrameSignal)
then Low again for 15 or 7.5ms, High for 7.5, etc. 8 times all together.
CTRL then returns to Low. System (non-Amp) commands are two-byte.
Arbitrarily defining MSB first, 15ms Lowtime meaning 0, 7.5ms Low meaning 1,
results in the following (Values in Hex):
B9 Power off
B5 Power on
irrespective of Amp Input switch or RC:
11 Input Select: Aux
1B Input Select: Tuner
1D Input Select: CD
13 Input Select: Phono
19 Input Select: Tape2
19 Input Select: Tape1
4F B1 TapeA: <
47 B1 TapeA: >
4B B1 TapeA: <<
43 B1 TapeA: >>
4D B1 TapeA: Pause
45 B1 TapeA: Stop
49 B1 TapeA: Rec
4E B1 TapeB: <
46 B1 TapeB: >
4A B1 TapeB: <<
42 B1 TapeB: >>
4C B1 TapeB: Pause
44 B1 TapeB: Stop
48 B1 TapeB: Rec
E0 B1 Tuner: Band
66 B1 Tuner: Scan up
EC B1 Tuner: Scan down
E7 B1 , EB B1 , E3 B1 , ED B1 , E5 B1 CD/Tuner 1,2,3,4,5
E9 B1 , E1 B1 , EE B1 , E6 B1 , EF B1 CD/Tuner 6,7,8,9,0
AE B1 CD: Disc
C8 B1 CD: |<<
C0 B1 CD: >>|
C2 B1 CD: >/#
A4 B1 CD: +10
A9 B1 CD: <<
A1 B1 CD: >>
C6 B1 CD: Stop
(* Hier das Turbo Pascal Programm, um mit dem LPT-Port das herauszubekommen *)
Program kenwood;
(* Version vom
Soll die Signale der seriellen Fernbedienungsausg„nge am Kenwood-Verst„rker
ermitteln*)
{An Pin 12 LPT1 (PAP) h„ngt dabei die CTRL Leitung, die bei +5V anzeigt, daá
ein Datum
gesendet wird, an 13 (/OFON) die Serielle Datenleitung SDAT mit den
Spezifikationen:
positive Logik, TTL Pegel, Startbit 15ms, 8Bit daten, danach geht
CTRL wieder auf 0V}
Uses
Crt, Dos;
Const
StartBitlength=15; {ms}
BitLength=7; {ms}
lpt1=$378;
{PAP ist $378+1 Bit 5, OFON ist Bit 4; Beide nicht invertiert}
CTRL_AND_MASK=$20;
SDAT_AND_MASK=$10;
Var
Aus : text;
i : word;
b : byte;
H,M,S,Hund :word;
Zeit : Longint;
st_sdat,st_ctrl : String;
function CTRL:boolean;
begin
CTRL:=(port[lpt1+1] and CTRL_AND_MASK) <> 0;
end;
function SDAT:boolean;
begin
SDAT:=(port[lpt1+1] and SDAT_AND_MASK) <> 0;
end;
function HexASCII(b:byte):String;
const Translator: string = '0123456789ABCDEF';
var hb:byte;
Lo_Char,Hi_Char: Char;
begin
hb:=b and $0f;
Lo_Char:=Translator[hb+1];
hb:=(b Shr 4) and $0f;
Hi_Char:=Translator[hb+1];
HexASCII:=Hi_Char+Lo_Char;
end;
procedure Test1;
begin
st_sdat:='';
st_ctrl:='';
repeat until CTRL or keypressed; {CTRL geht High}
for i:=1 to 255 do
begin
if SDAT then st_sdat:=st_sdat+'D' else st_sdat:=st_sdat+'_';
if CTRL then st_ctrl:=st_ctrl+'C' else st_ctrl:=st_ctrl+'_';
delay(2);
end;
writeln(st_sdat);
writeln(st_ctrl);
end;
procedure Test2;
begin
repeat until CTRL or keypressed; {CTRL geht High}
Gettime(H,M,S,Hund);
Zeit:=(3600*H+60*M+S)*100+Hund;
repeat until (not CTRL) or keypressed; {CTRL geht wieder Low}
Gettime(H,M,S,Hund);
Zeit:=(3600*H+60*M+S)*100+Hund-Zeit;
Writeln(Zeit*10:6,' ms CTRL High');
end;
procedure Test3;
begin
b:=0;
repeat until CTRL or keypressed; {CTRL geht High}
delay(StartBitLength+trunc(bitlength/2));
for i:=1 to 8 do
begin
b:=b shl 1;
if SDAT then b:=b+1;
delay(BitLength);
end;
writeln(Aus,HexASCII(b));
writeln(HexASCII(b));
end;
procedure Test4;
begin
b:=0;
repeat until CTRL or keypressed; {CTRL geht High}
delay(trunc(StartBitLength/2));
repeat until not SDAT or keypressed; {SDAT geht Low: Startbit zuende}
for i:=1 to 8 do
begin
delay(BitLength+trunc(BitLength/3)); {Wenn die Pause lange ist, dann
Dx:=0}
b:=b shl 1;
if SDAT then
b:=b+1 else repeat until SDAT or keypressed ; {wenn kurz Pause, dann
soll das Bit 1 sein}
repeat until (not SDAT) or keypressed ; {Warte auf ende des n„chsten
Frame-Zeichen}
end;
delay(trunc(StartBitLength/2));
if not keypressed then
begin
write(Aus,HexASCII(b)+' ');
write(HexASCII(b)+' ');
end
else
begin
write('Befehlsbezeichnung? ');
readln(st_sdat);
if st_sdat='exit' then begin close(Aus);HALT; end else
writeln(Aus,st_sdat);
end;
end;
Begin
Assign(Aus, 'kenwood.log');
Rewrite(Aus);
ClrScr;
writeln('Kenwood Remote Control Code: Type exit for End.');
writeln(Aus,'Kenwood Remote Control: CTRL is the red/right/ring, SDAT the
white/left/tip');
writeln(Aus,'contact of the RC output of a KENWOOD RCA-5040 RCUnit
controlled Amplifier');
writeln(Aus,'Levels are TTL (0V/5V)');
writeln(Aus,'The code consists of: CTRL goes High, 2ms later, SDAT goes
High for about');
writeln(Aus,'15ms (StartBit), then a Low on SDAT for either approx. 15ms or
7.5ms ');
writeln(Aus,'followed by a High level on SDAT for 7.5ms (FrameSignal)');
writeln(Aus,'then Low again for 15 or 7.5ms, High for 7.5, etc. 8 times all
together.');
writeln(Aus,'CTRL then returns to Low. System (non-Amp) commands are
two-byte ');
writeln(Aus,'Arbitrarily defining MSB first, 15ms Lowtime meaning 0, 7.5
meaning 1,');
writeln(Aus,'results in the following:');
repeat;
Test1 ;
until keypressed;
Close(Aus);
End.
> hi,
>
>
> ich habe ein tape-deck und einen cd-player von kenwood, der
> verst"arker ist von jvc.
> alle geraete haben eine serielle schnittstelle fuer die
> systemfernbedienung, natuerlich sind die systeme von jvc
> und kenwood inkompatibel.
> es muesste doch moeglich sein, ein etwas hardware zusammen-]
> zubasteln, welche die signale vom verst"arker empfaengt,
> analysiert und fuer kenwood ueersetzt und uebertragt. Umgekehrt
> analog. ein / zwei uarts, eine (z80?) cpu und kleinkrams
> sind ja recht billig zu bekommen.
>
> probleme:
>
> - weiss jemand, welche uarts bzw. elekt. spezifikation
> fuer die ser. schnittstellen von kenwood bzw. jvc
> benutzt werden ?
>
> - kennt jemand die uebertragungsprotokolle, also welche
> codes z.b fuer cdplayer->play benutzt werden usw. ?
>
> gibt es da evtl schon loesungen ?
>
Mmh, ich hatte mir mal Gedanken dazu gemacht, und wenn ich dich richtig verstehe, geht
es dir darum, dass z.b. wenn du am CD-Player Play drückst, sich der Verstärker auf
Source=CD stellt.
Wenn das so ist, dann nimm einfach eine Programmierbar Fernbedienung, und programmiere
sie, indem du die CD-Play-Taste mit der Verstärker- und CD-Player-Fernbedienung
gleichzeitig bestrahlst.
Ich habe das erfolgreich mit einem Aiwa AD-F910 Tape und `nem Technics SL-PG560A Cd-Player
gemacht, doof ist nur, dass mein Verstärker nicht fernbedienbar ist !
Wichtig hierbei ist nur, dass die einzelnen Geräte auch einzeln fernbedienbar sind.
Wenn sie _nur_ Systembedienbar sind, geht das natürlich nicht.
Ob das bei dir so ist, weiß ich nicht, ich kann mit den Gerätebezeichnungen nix tun.
Sorry für die umständlichen Formulierungen, aber irgendwie krieg ich das nicht
besser umschrieben.
------[ at...@vesalia.domino.de ]----------[tdese...@metronet.de]------------
-------------[ Thomas Deselaers, Heistersweg 30, 47638 Straelen ]--------------
OS> Fuer Kenwood hab ich das mal gemacht:
OS> (erst mit Oszi die Zeiten und Pegel abschaetzen, dann mit einem
OS> modifizierten Pascal Code (s.u) das Protokoll erraten. Viel Spass. ;-)
OS>
OS> Mail mir weitere Ergebnisse, bitte, vor allem, falls es was 8051-artiges
OS> dafuer
OS> gibt..
Ich habe mal fuer eine lernfaehige IR-Fernbedienung per PC die Software
geschrieben. Nachdem Du geschrieben hast, das dort ein ganz normaler TTL-
Pegel anliegt, habe ich mal meine Software drangehaengt. Allerdings habe
ich nur einen Onkyo CD-Player mit IR-Empfaenger und eine Tapedeck, welches
man per Kabel ueber den CD-Player steuern kann. Ich habe auch noch einen
Kenwood-Tuner KT-3080. Dazu nachher.
Das Ergebnis der Steuerprotokollaufzeichnung ist eigentlich sehr gut. Ich
habe mal drei Tasten aufgezeichnet. Das sieht so aus:
001 503 134 184 293 184 294 184 133 186 292 185 133 185 133 184 134 184
293 185 132 184 293 185 133 185 292 185
002 505 132 185 293 183 294 184 133 185 292 184 134 183 135 183 134 184
293 186 292 184 133 185 133 184 293 185
003 505 132 185 292 184 294 185 133 185 292 184 133 186 132 184 134 184
293 185 292 184 133 185 292 184 134 185
1=1/80000 Sekunde
Genau die gleichen Tasten per Infrarotfernbedienung sehen so aus:
001 1454 709 100 84 99 253 100 83 100 81 91 261 103 81 92 261 104 253 100
262 96 80 100 262 95 262 103 81 91 81 100 83 99 81 92 265 100 80 92 266
100 253 100 262 95 80 99 84 100 254 99 85 100 254 100 83 99 81 92 80 99
265 91 266 99 80 92
002 1454 708 100 80 103 253 100 81 104 76 95 261 103 77 96 261 104 254 100
261 96 80 100 261 96 261 103 76 95 81 100 80 104 76 95 80 99 262 95 262
104 253 100 262 96 80 100 84 99 253 100 262 95 80 100 84 99 80 92 80 99
262 96 261 104 81 91
003 1451 712 96 80 100 262 96 80 100 85 100 253 99 84 99 254 99 261 96 261
104 77 95 261 103 253 100 84 100 80 91 80 100 85 99 81 92 80 100 84 99 80
92 81 99 84 99 80 92 261 103 254 100 262 95 261 104 253 99 262 95 261 103
254 100 84 99
In eine etwas uebersichtlichere Form gebracht zuerst die Steuersequenzen:
001 -$%(%(%$%(%$%$%$%(%$%(%$%(%
002 -$%(%(%$%(%$%$%$%(%$%(%(%$%
003 -$%(%(%$%(%$%$%$%(%(%$%$%(%
und die IR-Sequenzen:
001 C2###'#####'###'#'#'###'#'#########'###'#'#'#####'###'#######'#'###
002 C2###'#####'###'#'#'###'#'###########'#'#'#'#####'#'#########'#'###
003 C2###'#####'###'#'#'###'#'#######################'#'#'#'#'#'#'#'###
Dabei geben gleiche Zeichen ungefaehr gleiche Impulslaengen wieder.
Bei Onkyo sind Impulslaengen und Anzahl im Vergleich Kabel/IR jedenfalls
nicht gleich.
Leider hat bei mir das Ansteuern des Tapedecks noch nicht geklappt.
Allerdings bin ich mir beim Onkyo noch nicht ueber die Bedeutung der
zweiten Steuerleitung im klaren. Obige Signale habe ich auf nur einer
Leitung gemessen, ohne die andere irgendwie anzuschliessen. 'Lausche' ich
auf der zweiten Leitung, kommt nichts. Es scheint also anders als beim
Kenwood zu sein, wo ueber diese Leitung auch ein Signal kommt. Verbinde
ich CD und Tape mit nur einer Leitung, geht natuerlich auch nichts. Die
Leitung ist also wichtig, nur kann ich keine Signale auf ihr erkennen.
Leider sind meine messtechnischen Hilfsmittel sehr beschraenkt und E-
Techniker bin ich auch nicht. Vielleicht hat ja jemand einen Hinweis fuer
mich.
Dein Programm habe ich an meinem Tuner noch nicht ausprobiert, werde ich
aber in Kuerze tun. Allerdings hat mein Tuner einen 3 poligen Stecker. Es
gibt bei Kenwood auch zwei Uebertragungsmodi: XS8 fasste XR, XS XS8
zusammen und ist abwaerts bzw. SL16 kompatibel. SL16 ist nur SL16.
Meine Vermutung ist, dass neuere Geraete ueber XS8 eine bidirektionale
Signaluebertragung zulassen. Dann schaltet wohl der Verstaerker z.B.
automatisch auf den Tuner um, wenn man auf dem einen Knopf drueckt.
Eigentlich eine praktische Sache, weil man dann nicht mehr an zwei
Geraeten rumdruecken muss.
Wenn ich was neues herausfinde melde ich wieder.
--
FIDO: 2:241/537.8 e-mail: M.M...@chaos.nwnet.de