Arduinoリモコンの使い方

2010年1月7日 このエントリをはてなブックマークに登録 このエントリをBuzzurlにブックマーク Yahoo!ブックマークに登録 このエントリをlivedoorクリップに登録

前回に紹介したArduinoでリモコンのデバイスを、自作のプログラム等から使う時の方法です。

デバイスとの通信

Arduinoですので、USBケーブルを繋ぐと仮想COMポートとして認識されます。
デバイスをコントロールするプログラムは、このCOMポートを利用して通信します。
ビットレートはKURO-RSと互換を保つため 115200bps としています。

コマンド

デバイスの起動直後は、コマンド待機状態(モード監視状態)から始まります。
この状態の時に、コマンドを送信することで、デバイスをコントロールします。

"r" (0×72)

信号学習モード(KURO-RS互換)

デバイスに "r" を送信すると、デバイスは "Y"(0×59) を返信した後、信号学習モードに移ります。
信号学習モード中のデバイスは、何らかの赤外線リモコンを受信するか、キャンセルコマンド "c"(0×63) を受信するまで待機します。
この状態でリモコン受信モジュールに向けて学習させたいリモコンのボタンを押すと、100μ秒の間隔でリモコン信号をサンプリングが開始します。
KURO-RS互換の場合、240バイト分、最大192msec(240byte × 8bit × 100μsec)となります。
デバイスはサンプリングが終了すると、 "S"(0×53) + 240バイトのサンプリングデータ + "E"(0×45) の計242バイトのデータを返信した後、コマンド待機状態に戻ります。

"t" (0×74)

信号送信モード(KURO-RS互換)

デバイスに"t"を送信すると、"Y"(0×59)が返信されます。
続いて、リモコンを送信するポートを、"1"(0×31) "2"(0×32) "3"(0×33) "4"(0×34) のどれか1つ(1バイト)を送信して選択します。(ただし、Arduinoリモコンでは、送信するポートは1つだけです。 このコマンドはKURO-RSと互換を保つ為のダミーです)
デバイスは、ポート選択を受け付けると、"Y"(0×59)を返信します。
続けて、デバイスへ240バイトのサンプリングデータを送信すると、信号が送信されます。
デバイスは信号送信後、"E"(0×45)を返信した後、コマンド待機状態に戻ります。

"i" (0×69)

LED点灯(KURO-RS互換)

デバイスが"i"を受信すると、"O"が返信されます。 KURO-RS互換を保つ為に存在するコマンド。

 

"R" (0×52)

信号学習モード(IRIO88互換)

基本適な手順は、KURO-RS互換の信号学習モードと同じです。IRIO88互換の信号学習モードでは、"T"コマンドで指定したサンプリング間隔で、最大960バイトまで解析できます。
サンプリング間隔を100μsecに指定した場合、最大768msec (960byte × 8bit × 100μsec)までサンプリングすることが可能で、エアコン等の長い信号に対応できます。

デバイスに "R" を送信すると、デバイスは "Y"(0×59) を返信した後、信号学習モードに移ります。
信号学習モード中のデバイスは、何らかの赤外線リモコンを受信するか、キャンセルコマンド "c"(0×63) を受信するまで待機します。
この状態でリモコン受信モジュールに向けて学習させたいリモコンのボタンを押すと、リモコン信号のサンプリングが開始します。
デバイスはサンプリングが終了すると、 "S"(0×53) + サンプリング間隔(1バイト) + データの長さ(2バイト 上位・下位の順) + サンプリングデータ + "E"(0×45) のデータを返信した後、コマンド待機状態に戻ります。

"S" (0×53)

信号送信モード(IRIO88互換)

デバイスに "S" を送信すると、 "Y"(0×59) が返信されます。
続いて、サンプリング間隔(1バイト) + データの長さ(2バイト 上位・下位の順) + サンプリングデータ をデバイスに送信します。
デバイスは正しく信号を受信すると、リモコン信号を送信します。
デバイスはリモコン信号送信後、"E"(0×45)を返信した後、コマンド待機状態に戻ります。

"T" (0×54)

サンプリング間隔設定(IRIO88互換)

デバイスに"t"を送信すると、"Y"(0×59)が返信されます。
続いて、サンプリング間隔の指定(1バイト)を送信します。
正しく設定できれば、デバイスは"E"(0×45)を返信した後、コマンド待機状態に戻ります。

Arduinoリモコンで指定できる範囲は、20μsec~100μsecです。IRIO88よりも狭い範囲になっています。

 

動作チェック

簡単な動作チェックは、Arduino IDEのシリアル・モニターで確認できます。
シリアルモニターを開いて、スピードを 115200baud に合わせて、"c"を送信して"Y"が表示されれば、デバイスが正しく接続されていると言えます。

動作チェック1

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

動作チェック2

 

タグ: ,



コメントをどうぞ