メインページへAKI-H8(3048)を使った赤外線リモコンの解析 |
||
記 2006年7月3日 | ||
赤外線リモコンの応用機器はいくつか作ってきたのですが、赤外線リモコン信号の解析は製作中の 機器で行ってしまうので解析装置としては残っていません。手軽に使えるものがあるとちょっと便利なので、 作っておこうと思いました。
(ここでは秋月電子様のコンパイラ、リンカ、モニタデバッガを使用してソフトを作成しています。 |
||
開発方針など以前からC言語を使ったH8マイコンの開発には興味がありました。自分のやりたい範囲
では、たいがいのことはPICマイコンをアセンブラで使用することで足りていたのですが、
マイコンの機種に依存するアセンブラにとらわれないC言語と、PICに比べ非常に大きな
プログラムを書き込めるH8を使用できれば、より大きなシステムを手軽に開発できるように
なるはずです。今回の場合もPIC+アセンブラで作れるのですが、H8マイコン+C言語
を体験しておきたかったのでチャレンジしてみることにしました。
秋月電子様のAKI−H8+マザーボードを使用しました。これを使うと赤外線信号解析に
足りない部分だけを自作すればよいのでハードの設計が非常に楽になります。
C言語コンパイラも秋月様の物を使いました。 赤外線信号の解析方法リモコンの赤外線信号はデジタル信号として1,0の信号として送受信されます。この場合の
1,0の論理値表現は{電圧レベルのH(高い)、L(低い)}={論理値の1、0}のような
単純なものではなくHの時間、またはLの時間の長さによって決まります。 下図は赤外線リモコンの信号の例です。この例では電圧レベルがHの時の時間の長さによって
論理値の1,0を表現しています。 1,0を表現する電圧レベルをH,Lのどちらにするか、時間の加減をどの程度にするかは 製品により様々ですが、HとLの時間を計測できればリモコンの信号を解析することが 可能となります。 リモコンの赤外線信号は上記のような電気信号で表現されるのですが、実際の赤外光の
送受信ではH,L信号を約38KHzで振幅変調したものが使われます。これは、自然光や
室内照明などによる干渉を受けないようにするためです。 赤外線信号の受信と保存赤外線信号の受信には、赤外線リモコン信号受信モジュールCRVP1738(これも秋月様から購入)
を使用しました。このCRVP1738から出力される電圧レベルH,Lの時間を逐一計測して内臓RAMに
保存し、受信完了後にまとめてパソコンに転送することにしました。 回路と基板作成した基盤を以下に示します。ピンヘッダとCRVP1738、ジャンパーだけで構成されています。 ソフトウェアの処理概要メイン処理以下の初期化処理を行う。
赤外線信号受信処理スイッチS1が押されたら以下の手順で受信処理を行う。
受信データRS232C出力スイッチS2が押されたらRAMに格納された赤外線信号データをシリアルポート (RS232C)に出力する。送信するデータは10進数キャラクタ文字列に変換して 送信する。 ソースファイル赤外線解析Cソースプログラムベクタアドレス指定アセンブラソースプログラム LCD表示Cソースプログラム RS232送信用Cソースプログラム ハイパーターミナルの設定RAMに保存された赤外線データは、ハイパーターミナルの機能を使ってパソコンに取り込みます。
ハイパーターミナルの”テキストのキャプチャ”を使用するとテキストファイルとして保存 できて便利です。 データを解析する昔に、秋月様で買ったリモコンキットのリモコンデータを取ってみました。各ボタンの生データは
ここにあります。 このデータでまず目に付くのが約34000μ秒のHレベルです。おそらくこれがデータの 区切りであり、ひとつのデータを送信し終えたことを表すものだと思われます。先頭からこの 34000μ秒のHレベルまでのデータを以下に示します。 データの最初の3000μ秒以上のLHはヘッダーだと思われます。 このデータの約800μ秒を0に、約2500μ秒を1に置き換えると以下のようになります。 ここでそれぞれのデータ観察すると、後半の12ビットは前半の12ビットのデータを論理的に
反転させたものであることが分かります。たとえばpowerのデータで見てみると、 さらに観察すると、前半の6ビットがすべて同じであることに気が付きます。おそらくこの部分は
機種コードのようなものだと思われます。よって、リモコンのどのボタンが押されたかを純粋に表す
データは7ビット目から12ビット目までの6ビットであると判断されます。 |
||