2011年10月15日土曜日

ONKYO INTEC 205 シリーズのチューナ T-405FX のタイマをアンプなしで動作させる

ONKYO の INTEC 205 シリーズのチューナ T-405FX をエアチェック用に買いました。タイマー内蔵で4プログラムというのは最近では貴重なので、いいかなと思って。聴いてみると音も値段(1万2千円台)の割にはよく、コストパフォーマンスは高いと思います。というか、数万円で買える現行のチューナなら、どれもほとんど変わらないと予想して買ったのですが。

予想が外れたのが、背面のサービスコンセントが非連動であることと、タイマ動作にINTEC 205シリーズのアンプ (A-90xシリーズ) が必要なことです。アンプは別で持っているので欲しくなかったので。

INTEC 205 シリーズの機器間の通信はRI端子を通しているので、信号をコピーするためにアンプを入手することにしてオークションで入札しはじめるると、調べられている方がいました(http://www.page.sannet.ne.jp/okui/onkyo.html)。これをとっかかりに信号を調べ Arduino で、アンプなしでもタイマ動作ができるようになりました。

回路図とArduinoのスケッチは次の通りです。

回路図:

RIはRI端子の先端(2.1φモノラル端子の先端)に、グラウンド(GND)はRCA端子のグラウンドにつなぎます。

スケッチ:
/*
  Onkyo Intec 205 シリーズのタイマ機能内蔵チューナのRI端子につなぎ
  アンプなしでもタイマ動作を可能にするスケッチ
【動作】
  T-405, T-405FX がチューナ(FM, AM)のタイマ再生を開始したときのメッセージを
  RI端子から受信したら、RI端子に全機器の電源をオンにするメッセージを出します。
  これによりアンプ (A-90xシリーズ)なしにT-405シリーズのみでのタイマ動作を
  実現します。またシリアル(38400bps)に受信したRI端子のメッセージを表示します。
  (c) 2011 N.Mitsunaga
 */
const int pinRIout = 2;
const int pinRIin = 3;
const byte message[][36] = {
#define TUNER_TIMER_PLAY_START 0
 {1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0},
#define ALL_POWER_ON 1
 {1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0},
};

byte recv[36];

void send(int msg)
{  
    for (int i=0; i<36; i ++) {
    if (message[msg][i] == 1) {
      digitalWrite(pinRIout, LOW);
    } else {
      digitalWrite(pinRIout, HIGH);
    }
    delayMicroseconds(1000);
  }
  digitalWrite(pinRIout, HIGH);
}

void setup()
{
  pinMode(pinRIin, INPUT);
  pinMode(pinRIout, OUTPUT);
  digitalWrite(pinRIout, HIGH);
  Serial.begin(38400);
  delay(500);
}

void loop()
{
  int i;
  
  while (digitalRead(pinRIin) == HIGH) {}

  unsigned long time = micros() + 500;
  delayMicroseconds(500);

  for (i=0; i<36; i ++) {
    if (digitalRead(pinRIin) == HIGH) {
      Serial.print("0,");
      recv[i] = 0;
    } else {
      Serial.print("1,");
      recv[i] = 1;
    }
    while ((micros() - time)<1000) {}
    time += 1000;
  }
  Serial.println();
  
  for (i=0; i<36; i++) {
   if (recv[i] != message[TUNER_TIMER_PLAY_START][i])
      break; 
  }
  if (i == 36) {
    send(ALL_POWER_ON);
  }

  Serial.println();
}

5 件のコメント:

  1. wonderful information! I've been trying to do something similar for weeks, but in my case, I want to tun on an onkyo amp from arduino instead. However the amp doesn't respond to the 0x00E9 command...any ideas?

    返信削除
  2. It seems that there are two different command systems on RI control. One for older Intec series and one for later one. I am not sure for 0x00e9 but is it compatible with your amplifier?

    返信削除
  3. これはcdプレーヤーでも可能なことなのですか?

    返信削除
  4. cdプレーヤーとの接続の場合はどうすればいいですか?

    返信削除
  5. 回路的には問題ないと思います。どんなコードをやりとりすればよいかはCDプレーヤが手元にないので調べてみて下さい。

    返信削除