LEDシーリングライト用赤外線リモコンの製作(1)アイリスオーヤマ用(10/21更新)

LEDシーリングライトの赤外線リモコン送信器がもう一つほしくて、製作することにしました。今回は アイリスオーヤマ LEDシーリングライト 【4.5~6畳用】 3200lm 【調光4段階+LED常夜灯】 CL6N-E1に付属しているLEDHCL-R4という型番の赤外線リモコンの互換品を、とりあえずCQカチャduinoとブレッドボードで製作します。CQカチャduino(Arduino)の応用編です。

●概要

最初は学習リモコンにしてパターンを単純に記録するものを考えたのですが、プログラムをシンプルにしたいこともあり、直接リモコン出力を読み出してフォーマットを解析し、それをプログラムで模擬することにしました。

●リモコンの分解

このリモコンは単純なつくりで、ネジを3カ所外せば簡単に開封できました。中を見てみると、片面基板で、AVRのtiny2313のフラットパッケージ、8MHzのクリスタル、電流制限用抵抗に赤外線LEDが3個ついた、極一般的な回路です。そうそう、LEDのドライブにチップ・トランジスタが1つ入っていました。

リモコン開封の写真

iris_remo-1

赤外線LED付近

iris_remo-2

パターンを追って、AVRの出力ポートを見つけたので、測定用に、ラッピング用の細いワイヤを仮付けしてLEDのドライブ信号を引っ張り出しました(下図写真の白いワイヤ)。

iris_remo-3

●出力波形の調査

引き出した信号線にロジアナを接続して波形を測定してみました。そのときの波形は次のようなものです。測定したところ、キャリア周波数は約38KHzでした。

wave1

思っていたより複雑でしたが、一般的な波形です。

リモコンのいずれかのボタンを押すと上図のように、ほぼ同じパターンが約9msのインターバルで計3回繰り返し出力されます(図の緑で示したところ)。ボタンを押し続けてもそれ以外に何も出ません。

青と水色で示した部分は、コマンド(点灯や消灯など)に関係なく共通で、その後ろがコマンドに応じて変わります。全体の長さもコマンドにより変化します。

●Arduinoプログラムでキャリア波が生成できるか

赤外線リモコンを作る時は、クリティカルなタイミングでパルスを生成させるために、よくアセンブリ言語でプログラミングしますが、今回はArduinoを使用するということで、まず、C言語だけで作られるかを調べました。Arduinoでもインラインアセンブラが使えますが(本体はWinAVR/gccなので)、それも面倒なので、できればC言語だけで作られればそれに超したことはありません。

次のようなサンプルプログラムを作動させ、ロジアナで測定しましたが、結果的に問題なさそうです。なお、割り込みは使わないという前提です。

<単純な繰り返し>

#define IR_OFF digitalWrite(8, LOW);    // IR LED(D7)
#define IR_ON  digitalWrite(8, HIGH);   // IR LED(D7)

  // 約38kHzキャリア波(実測確認済)
  while(1) {
    IR_ON;
    delayMicroseconds(10);
    IR_OFF;
    delayMicroseconds(11);
  }

<条件判断が入るとどうなるかの確認>

  // 約38kHzキャリア波(実測確認済)
  for(i = 0; i < 20; i++) {
    IR_ON;
    delayMicroseconds(10);
    IR_OFF;
    delayMicroseconds(11);
  }

クロックが8MHzのときはどうか分かりませんが、とりあえず、Arduino標準の16MHzではアセンブラは使わなくても作れそうです。


単純な赤外線リモコンを製作するだけなら、Arduinoには役不足ですが、CQカチャの応用品ということで製作しました。今回のアプリはCQカチャduinoのWSN282(AVR部)のみで製作できます。それに、あとからタイマなどの機能拡張も可能です。

(続く)

コメントは受け付けていません。