前回に紹介したArduinoでリモコンのデバイスを、自作のプログラム等から使う時の方法です。
デバイスとの通信
Arduinoですので、USBケーブルを繋ぐと仮想COMポートとして認識されます。
デバイスをコントロールするプログラムは、このCOMポートを利用して通信します。
ビットレートはKURO-RSと互換を保つため 115200bps としています。
コマンド
デバイスの起動直後は、コマンド待機状態(モード監視状態)から始まります。
この状態の時に、コマンドを送信することで、デバイスをコントロールします。
"r" (0x72) |
信号学習モード(KURO-RS互換)
デバイスに "r" を送信すると、デバイスは "Y"(0x59) を返信した後、信号学習モードに移ります。
信号学習モード中のデバイスは、何らかの赤外線リモコンを受信するか、キャンセルコマンド "c"(0x63) を受信するまで待機します。
この状態でリモコン受信モジュールに向けて学習させたいリモコンのボタンを押すと、100μ秒の間隔でリモコン信号をサンプリングが開始します。
KURO-RS互換の場合、240バイト分、最大192msec(240byte × 8bit × 100μsec)となります。
デバイスはサンプリングが終了すると、 "S"(0x53) + 240バイトのサンプリングデータ + "E"(0x45) の計242バイトのデータを返信した後、コマンド待機状態に戻ります。
|
"t" (0x74) |
信号送信モード(KURO-RS互換)
デバイスに"t"を送信すると、"Y"(0x59)が返信されます。
続いて、リモコンを送信するポートを、"1"(0x31) "2"(0x32) "3"(0x33) "4"(0x34) のどれか1つ(1バイト)を送信して選択します。(ただし、Arduinoリモコンでは、送信するポートは1つだけです。 このコマンドはKURO-RSと互換を保つ為のダミーです)
デバイスは、ポート選択を受け付けると、"Y"(0x59)を返信します。
続けて、デバイスへ240バイトのサンプリングデータを送信すると、信号が送信されます。
デバイスは信号送信後、"E"(0x45)を返信した後、コマンド待機状態に戻ります。
|
"i" (0x69) |
LED点灯(KURO-RS互換)
デバイスが"i"を受信すると、"O"が返信されます。 KURO-RS互換を保つ為に存在するコマンド。
|
"R" (0x52) |
信号学習モード(IRIO88互換)
基本適な手順は、KURO-RS互換の信号学習モードと同じです。IRIO88互換の信号学習モードでは、"T"コマンドで指定したサンプリング間隔で、最大960バイトまで解析できます。
サンプリング間隔を100μsecに指定した場合、最大768msec (960byte × 8bit × 100μsec)までサンプリングすることが可能で、エアコン等の長い信号に対応できます。
デバイスに "R" を送信すると、デバイスは "Y"(0x59) を返信した後、信号学習モードに移ります。
信号学習モード中のデバイスは、何らかの赤外線リモコンを受信するか、キャンセルコマンド "c"(0x63) を受信するまで待機します。
この状態でリモコン受信モジュールに向けて学習させたいリモコンのボタンを押すと、リモコン信号のサンプリングが開始します。
デバイスはサンプリングが終了すると、 "S"(0x53) + サンプリング間隔(1バイト) + データの長さ(2バイト 上位・下位の順) + サンプリングデータ + "E"(0x45) のデータを返信した後、コマンド待機状態に戻ります。
|
"S" (0x53) |
信号送信モード(IRIO88互換)
デバイスに "S" を送信すると、 "Y"(0x59) が返信されます。
続いて、サンプリング間隔(1バイト) + データの長さ(2バイト 上位・下位の順) + サンプリングデータ をデバイスに送信します。
デバイスは正しく信号を受信すると、リモコン信号を送信します。
デバイスはリモコン信号送信後、"E"(0x45)を返信した後、コマンド待機状態に戻ります。
|
"T" (0x54) |
サンプリング間隔設定(IRIO88互換)
デバイスに"t"を送信すると、"Y"(0x59)が返信されます。
続いて、サンプリング間隔の指定(1バイト)を送信します。
正しく設定できれば、デバイスは"E"(0x45)を返信した後、コマンド待機状態に戻ります。
Arduinoリモコンで指定できる範囲は、20μsec~100μsecです。IRIO88よりも狭い範囲になっています。
|
動作チェック
簡単な動作チェックは、Arduino IDEのシリアル・モニターで確認できます。
シリアルモニターを開いて、スピードを 115200baud に合わせて、"c"を送信して"Y"が表示されれば、デバイスが正しく接続されていると言えます。

文字化けを起こしますが、"r"コマンドや"R"コマンドで、受信チェックを行うことも出来ます。

タグ: Arduino, リモコン
この投稿は 2010年1月7日 木曜日 06:45 に 自作プログラム カテゴリーに公開されました。 この投稿へのコメントは RSS 2.0 フィードで購読することができます。
現在コメント、トラックバックともに受け付けておりません。