Q-STEER赤外線信号解析


 Q-STEER(キューステア)とはタカラトミー社が発売した赤外線でコントロールを行なうチョロQです。
ここではこのQ-STEERの制御に使われている赤外線信号について解析した結果を載せています。
一応断っておきますが、ここに書かれている内容は正式な物ではないので一部に間違いや勘違いをしている部分があるかもしれないのでご注意ください。

PSPで解析し直してみたら波長に結構誤差があったので修正しました。(2008/3/25)
※第1と第2波長間の時間間隔にミスがあったので修正しました。(2008/4/10)

 Q-STEERの赤外線信号は基本的には一般のリモコンで使われている信号と同じ構造になっています。
(もっとも、一般のリモコンにもいろいろな仕様があるので全てこの通りと言うわけでもないですが。)
 ちなみに同じく赤外線を使っている通信規格のIrDAはここで説明しているものとは全く違う構造をしていますが、それはまた別なお話し。

 まず最初に実際にどんな波形がコントローラから送出されているかをご覧下さい。
これは「バンドA」で「前進」を行なう場合の波形です。

2つの同じ信号が描かれていますが、これで1セットです。
最初の波形と2番目の波形は全く同じですが、使用しているバンドにより波形間の時間間隔が異なってきます。
 コントローラのボタンを押している間、この1セットが周期134[ms]で繰り返し送出されています。
一つの信号波形が受信されるとしばらくの間(0.5[s]くらい?)指定された動きを続けるので、一つや二つの信号を受け損なっても直ぐには止まりません。

 次に信号の細かい部分について説明します。

各波形の波長は上に書いた通りで赤い部分で赤外線を出している訳ですが、この時発光素子はずーっと光ってるわけではなくて細かく点滅を繰り返しています。
これを搬送波と呼ぶんですが、この搬送波周波数は38[KHz]前後みたいです。

 Q-STEERでは発光時間の違いによりビットの0と1を区別しています。
発光時間の長い方と短い方のどちらをビット0としても良いんですが(開発側では明確に定義されているハズですが、こちらにはそれを知る手段が無いので)、取りあえずここでは短い方をビット0とします。

ビット0
ビット1

 「ヘッダ」は信号波形の先頭位置を検出するためのもので、それ以上の意味はありません。

 「バンド」は送信したコントローラが設定されていたバンドに対応した状態を採ります。

バンドA 00
バンドB 01
バンドC 10
バンドD 11

 「制御コード」はコントローラで押されたボタンに対応した状態を採ります。

0000 未使用?
0001
0010
0011
0100
0101 ↑↑
0110 ↑←
0111 ↑→
1000 ↑↑←
1001 ↑↑→
1010 ↓←
1011 ↓→
1100 ↓↓
1101 ↓↓←
1110 ↓↓→
1111 停止信号

ここで「↑↑」「↓↓」はダッシュ前進とダッシュ後進を表しています。
 「停止信号」はボタンを離した時に送信されており、これによりボタンを離すと直ちに停止するわけです。
ちなみに無効なボタン操作をした場合にも「停止信号」は送信されます。

 信号の第1波形の最後から第2波形のヘッダまでの間の時間間隔は、

バンドA 9[ms]
バンドB 25[ms]
バンドC 41[ms]
バンドD 57[ms]

だいたいこれくらいの間隔が空いています。
この時間差により各バンドにて偶然同じタイミングで赤外線を送出したとしても操作不能となる事を避けているわけです。
 赤外線での通信は電波を使う通信よりは有線で行なう通信に似た特性を持っており、同時に複数の通信を行なおうとすると信号が混ざってしまい通信が出来なくなってしまいます。
これを回避するには周波数(光のスペクトル/搬送波)を分ける方法がありますが、その場合は受信側の負担が桁違いに増えてしまうので普通は時間分割を行って複数の通信を行ないます。

 例えばバンドA〜Dの4台のQ-STEERコントローラが赤外線を送出している場面で他の赤外線リモコンを使うとそのリモコンは使用不能になるでしょうし、Q-STEERも止まったり動いたりといった事になるでしょう。