2017年1月11日水曜日

TWE-Liteで赤外線リモコン信号をデコード

 子供部屋の照明消し忘れが多いので、別室の照明を操作するリモコンをTWE-Liteで作ろうと思い立ちました。

 先ずは、リモコンから出ている赤外線信号を知る必要があります。オシロスコープがあれば波形を見て解読することができますが、残念ながら持っていませんので、TWE-Liteで赤外線信号を受信してデコードするプログラムを作りました。

 回路図

赤外線リモコンデコーダ回路図

計測方法

赤外線リモコンの信号については、検索すれば山ほど出てくるので説明は省略します。デコードの方式はいろいろありますが、リーダーパルスの幅と、ビットパルスの立下り間隔で見ることにしました。
 赤外線受光モジュールからの出力をDI2とDI3に同時に接続し、立ち上がりと立下りの各々で発生する割り込みでエッジを検出します。割り込みハンドラの中で、プリスケーラを調整したTIMER2のカウンタ値を読んで記録します。

デコード方法

最初のパルスはリーダーコードなので、幅の違いからフォーマット(NEC/家電協/SONY)を判定します。フレームの間には長めの無信号期間があるので、信号が途絶えたらフレームをデコードします。リーダーコードに続いて、0/1をエンコードしたビットのパルスが続くので、短間隔を0、長間隔を1として判定し、フレーム全体をデコードします。

ファームウェア

赤外線リモコンデコーダーのファームウェアは、サンプルアプリのSamp_ContTxをベースにして作りました。ソースコードはgithubに置いてあります。TWE-Liteで動いていますが、親機も子機も無く単体で動作し、電波の送受信は行いません。

 リモコン信号を受光モジュールに送信して暫く待つと、デコード結果をUARTに表示して、受信待ちに戻るという動作を繰り返します。出力は下記のようになります。
 1 2 3 4
cnt=4
type:SONY  , bits:20, 88 b4 f0
type:SONY  , bits:20, 88 b4 f0
type:SONY  , bits:20, 88 b4 f0
type:SONY  , bits:20, 88 b4 f0
 1 2 3
cnt=3
type:AEHA  , bits:40, 34 4a 90 14 84
type:AEHA  , bits:40, 34 4a 90 14 84
type:AEHA  , bits:40, 34 4a 90 14 84
 1 2 3 4 5
cnt=5
type:NEC   , bits:32, 6a 95 8e 71
type:NEC(R), bits:0,
type:NEC(R), bits:0,
type:NEC(R), bits:0,
type:NEC(R), bits:0,

デコーダができたので、引き続き、赤外線信号の送信部分を作ろうと思います。TWE-LiteのMCU(JN5164)には赤外線リモコン信号を送信する機能があるので、タイマーやPWMの面倒な操作しなくても、パルスの周期とパターンを与えるだけで出力できるようです。
ブレッドボードでデバッグ中の赤外線リモコン受信機


0 件のコメント:

コメントを投稿