最安価・最簡単な赤外線RC信号解読(器)





当方の HP の内容を流用して雑誌やインターネットに発表しようとするときは、
当方の許可を得るとともに出所を明らかにしなければなりません。
無断転用厳禁

表示方法の新しい考え方ですが、このような考え方が瞬時に出来なければ
弱電で良いものは作れないのですよ。









 最安価・最簡単で解読ミスのないな赤外線 RC信号解読(器)です。コードの表示にLCD 表示器も パソコンも必要ありません。従ってパソコンにデータを取り込んでナントカ文字を解読する手間も いりません。
 NECフォーマット用ですが、これは使用を予定している RC送信機がたまたま NECフォーマットで あったためで他意はありません。NECフォーマットを使用している RC が多いという話もありますが、 当方にはそうも思えません。部屋にある 10本程の RC送信機を調べてみたところ、NECフォーマットは 2本のみでした。NECフォーマットが多いということはなさそうです。同じメーカーでも機種により、 また新旧でフォーマットが違っていたりばらばらです。まあメーカーにとって RC の位置付けとは そんなものでしょう。SONYが独自のフォーマットを使用して いることは知られていますが、AIWA が SONYフォーマットを使用していないのは意外でした。
 ソースコードの僅かな手直しで他のフォーマットにも対応可能なのは言うまでもありません。

 解読はNECの推奨している方法にほぼ準拠しており、いい加減な自己流ではありません。

 なお文中の数値は 1MHz クロック、タイマー1 のプリスケーラ値は 1 の場合です。


パルス幅測定

 コードを解読するためにはまずパルス幅を測定する必要があります。測定ですからタイマーの基準 クロックは正確でなければなりません。周波数カウンタにより基準クロックを合わせます。 動作すれば良いんだといういい加減な考え方の基準クロックでは、RC信号のパルス幅がどうのこうのと 言うことはできませんし、また言ってはなりません。
 パルス幅を測定することにより、家電協フォーマットはもちろん、手間はかかりますがフォーマットの 分からない RC信号も、常識的な方法で送出されている限り解読することが出来ます。このページで 使おうとしている RC送信機の信号も、パルス幅を測定して初めて NECフォーマットだと分かった のです。

 パルス幅の表示は 8bit + 8bit のデータを切り換えて 8ケの LED に表示します。具体的には CCPR1H を 10sec 出力し、その後 CCPR1L を 10sec 出力しています。二進数から十進数への計算が出来る 人なら誰でも読むことができます。時々刻々変化するデータの値を、短時間に何度も読む わけではありませんので、これで十分でありまた Capture Register の値を直接表示するため、 誤差の入り込む余地がありません。4MHz X'tal を使用した場合、信号が安定していれば 1μs 単位 で正確にパルス幅を測定することが出来ます。

 結果は、比較的正確です。NECフォーマットではリーダー部の High は 9ms、Low は 4.5ms ですが、 手持ちの RC送信機では High は約 9.1ms、Low は 4.4〜4.5ms となっています。High は 8.7ms 位で 判定していること、及び電池電圧が少し低下した場合のことを開発者が考慮しているのでしょう。

リーダー部

 RC信号受信の場合。リーダー部 High のパルス幅で NECフォーマットかどうか判断します。 リーダー部の High は 9ms てすので、CCPR1H の値は 35 (023h) となります。CCPR1H の値が 022h 以上であれば NECフォーマットと判断し、リーダー部 Low のチェックへ進みます。 022h 以下の場合は受信待ちへ戻ります。リーダー部の Low は 4.5ms (リピート信号では 2.25ms) ですので、約 3ms で初期信号かどうか判断します。 即ち 3ms 以上であれば初期信号と判断し、カスタムコード受信へ進みます。リピート信号の 場合受信待ちへ戻ります。受信機ではリピート信号をチェックしてチャンネル・音量等の UP-DOWN 制御を行います。

カスタムコード部

 8bit + 8bit の 16bit でカスタムコード1 とカスタムコード2 からなっています。使用方法は メーカーにより異なります。手持ちの SANYO テレビ用 RCでは、カスタムコード1 の反転データが カスタムコード2 に入っています。また Made in Korea のケーブルテレビターミナルでは、カスタム コード1 は 00000000 でカスタムコード2 にデータが入っています。
 ON 期間のパルス幅は同じですが、OFF 期間の時間で 1 か 0 かを表わします。即ち、"1" の 場合 ON 期間 OFF 期間合わせ 2.25ms、"0" の場合 1.125msとなっています。"0" の場合、CCPR1H の 値は 04h ですので、05h または 06h より大きいか小さいかで、 1 か 0 かを判断します。 1bit ずつ 1 か 0 か判断して Rotate Left f through Carry 若しくは Rotate Right f through Carry で用意した変数に書き込みます。信号はビット 0 から送信されてきますので、 他のボタンとビットの違いを見るためには Rotate Right f through Carry の方が良いかもしれません。 受信機を作る場合は、解読に使用したと同じコマンドとすればどちらでも問題ありません。

データ部

 8bit のデータ部と 8bit の反転データ部からなっています。判定及び書き込みはカスタムコード部と 同様です。 反転データ受信後照合し、誤りがあれば受信待ちへ戻ります。具体的にはどちらかを反転してSubtract し、 結果が 0 (STATUS,Z=1)であれば良していうことで次の処理へ進みます。

ストップビット〜フレームスペース

 構成は図のようになっています。ストップビットは約 0.6ms、フレームスペースの長さはカスタム コードの構成により異なります。 SANYO RC-406 では実測約 39.8ms、CATV RSC-S200 では実測 約 41.9msです。

表示

 カスタムコード1 とカスタムコード2、データコードをそれぞれ 10sec ずつ 8ケの LED に表示し ます。ほとんどないでしょうが 10sec で読み取れなかった場合、同じボタンを押せば再表示します。 スイッチを使用して見たいデータだけを表示することも可能ですが、必要性が薄いためしておりません。 そのものずばり "0" は消灯、"1" は点灯ですので極めて分かりやすい。表示時間は自由に変更可能です。 またリーダー部のパルス幅やフレームスペースの長さも必要であれば容易に表示に加えることができます。

参考

 何れも CH1。カスタムコード1、カスタムコード2、データコード、反転データコード

 SANYO RC-406  00110000 11001111 00010000 11101111
 CATV RSC-S200  00000000 11111001 00010001 11101110
 DX DIR-200R   01000010 10111010 00000001 11111110

 DX DIR-200R は後から見つかったもの。DX ANTENNA BS DIGITAL TUNER 用。
 やはり NECフォーマットは多いかも・・・。









 ケーブルテレビターミナルが電源 OFF 時にも 10W 程度電力を消費し、精神衛生上宜しくない。 販売者は電流を流しておかないと電源を入れてすぐに正常に動作しないと言いますが、電源 OFF 時の チャンネルを記憶していないだけで、他は正常に動作します。そこで同じ RC送信機で外部の電源 スイッチを制御してやろうと考えたものです。幸い RC送信機には使用していないボタンがいくつも あります(上級機或いは他機種のために開発した RC送信機をそのまま使用しているのでしょう)。


 受信機
 ケースは鉄製。重量があり丁度良い。
 アクリル板 (2mm)。綺麗にカットするには
  PCB カッター等が必要。


 X'tal を実装しているが使用していない。
 基板サイズ 約 81 x 61mm。
 消費電力 -0.2W。

 基板は金を出せば比較的 reasonable な価格
 で作ってもらえますが、ケースの加工は驚く
 ほどの料金を取られます。従って programing
 しか出来ない輩では無理。基板を裸で使うしか
 ありません。
 100Vを制御する基板を裸で使う? 偉い!!


 受信機については書きません。信号処理は解読器と全く同じで、最後にデータを確認(比較) して適当なポートを制御するだけですから。

 RC信号を解読して喜ぶために製作したものではありません。当方はそういう必要のないバカな ことは致しません。

 赤外線受光ユニットを一ケ不注意から駄目にしてしまいました。購入したものの使うことが 出来なかったという人がいれば連絡下さい。未使用であれば秋月で購入したと同価格でニケ位 購入します。
 使える人にとっては部品ですが、使えない人にとってはゴミです。ゴミは処分しましょう。 家人も喜びます。




 PIC を始めて半月少しの頃に書いたもので、完全オリジナルです。PIC の命令は簡単ですので、 馬鹿でもアホでも容易にオリジナルのプログラムを書くことが出来ます。 なおこれより少し前に、完全オリジナルの二進数から十進数変換を使用して、7Seg LED 表示 プログラムを書いています。
 雑誌等のプログラムをコピーするしかなかったら悲しいですね。悲惨です。 他人の作ったプログラムのコピーでは全く価値がありません。一月位してもある程度のオリジナル が書けなければ、馬鹿・アホ以下なのです。潔くあきらめしょう。 プログラミングにはアナログ技術のようなノウハウは必要ないのですから。

 入門書等には書いていない、"一番知りたいこと" も書いています。無断転用しないように。









作品の部屋に戻る