title0a.gif

Memorandumの小部屋

本ページは金銭授受を伴う行為を含むAuctionや商用Web Pageからの無断リンク・無断参照を禁じます。
無断リンク・無断参照が判明した時点で然るべき処置をとらさせて頂きます。


リコモン送信機はもう沢山!!!

リモコン受信機の製作

 前回製作した「自作AVユニット Ver.2」には「5入力AVセレクタ」を内蔵し、チャンネルの選択に押しボタンスイッチを設けています。 実際に使い始めていくとこの押しボタンスイッチの操作のために「自作AVユニット Ver.2」の近くまで歩いていくのがだんだん面倒になってきました。 そうすると当然の如くリモコンで操作したくなります。

 赤外線リモコンとしては「ELEKIT PS−302 マルチチャンネル赤外線リモコン」を一時期活用していましたが、それを復活させることを考えました。 しかし、現在、手元にはTV・ビデオ・DVDレコーダなどのリモコン送信機が山を成しています。  「ついでにもう1台増えたところで多いことは同じ」とちらっと思いましたが、やはりこれ以上はリモコン送信機を増やしたくありません。

 こうなると、今あるリモコンで未使用操作スイッチで「5入力AVセレクタ」のチャンネル選択スイッチ切り替えができるリモコン受信機を自作したくなります。  最終目標 として日立用TVリモコンのスイッチで「5入力AVセレクタ」のチャンネル選択ができる リモコン受信機を自作することとにしました。

 なお、この自作例を製作するに際しては波形が記憶できる2chオシロスープ及びPICマイコン開発ツールが必要でした。  実際にはオシロスコープは「DIGTAL STORAGE SCOPE for PC PCS64i」、PICマイコン開発ツールは「AKI−PICプログラマーキットVer3」を使用しました。


【 基本仕様 】

 基本的な仕様を下記に記載します。

項 目 仕  様
キャリア周波数 38kHz
受信チャンネル 4ch

サンプルプログラム設定例 TVリモコンのチャンネルボタン 1,2,3,4で操作。

出力信号形態 反転動作 もしくは パルス出力 プログラムにより選択可能。

パルス出力時のパルス幅は約0.1s刻みで約0.1〜約25.5sの範囲で設定可能。

出力信号 フォトカプラ オープンコレクタ出力。
信号記憶 WRITEスイッチを押しながら受信することでリモコン信号を記憶。
信号フォーマット PPM変調専用 (Pulse Poition Modulation)  (PPMに関しては検索サイトでお調べ下さい。)

リーダ部+ビット(信号0・信号1)の3通りの時間設定は必要です。

判定方法 ワンチップマイコンPIC16F84よるソフトウエアによる判定。
電源 ACアダプタ入力

AC/DC 7V〜20V

DCジャック:両極性対応

 


【 ハードウエア 】

 リモコン受信機の回路図を下記に記載します。

 

 

ポート 方向 論理 仕  様
RA0 入力 負論理 チャンネル選択スイッチ

ビット0

 
ビット0 ビット1 選択
オフ オフ チャンネル1
オン オフ チャンネル2
オフ オン チャンネル3
オン オン チャンネル4

 

RA1 入力 チャンネル選択スイッチ

ビット1

RA2 入力 データ書込みスイッチ 押してLレベル 離してHレベル
RA3 入力 データ読出しスイッチ 押してLレベル 離してHレベル
RA4 入力 リモコン受信モジュールSPS−443−1」受信データ 入力
RB0 出力 EEPROMで設定可能。

サンプルプログラムは正論理。

チャンネル1 出力 (反転・パルス出力はEEPROMで設定可)
RB1 出力 チャンネル2 出力 (反転・パルス出力はEEPROMで設定可)
RB2 出力 チャンネル3 出力 (反転・パルス出力はEEPROMで設定可)
RB3 出力 チャンネル4 出力 (反転・パルス出力はEEPROMで設定可)
RB4 出力 データ読出し時クロック 論理1でデータ有効(パルス幅約50μs)
RB5 出力 動作表示LED

データ受信時 反転設定時パルス点灯(点灯時間はEEPROMで設定可)
         パルス出力時 パルス論理1出力期間点灯

データ書込み時 0.2s点灯→0.2s消灯→0.2s点灯

RB6 出力 データ読出し時Busy信号 データ出力中に論理1
RB7 出力 受信データモニタ

リモコン受信モジュールSPS−443−1」データ受信中

 Hレベル→Lレベルを検出したときに出力を反転。 つまり、データ受信中にこのビットが変化しないときには、PICマイコンでのデータ認識がうまくいっていないことを意味します。

受信データ読出し時(READスイッチオン、WRITEスイッチオフ

 チャンネル選択されたチャンネルのデータを受信した順番にレベル出力。 データはRB6が論理1、RB4が論理1の時に有効。

受信データ読出し時(READスイッチオン、WRITEスイッチオン

リモコン受信モジュールSPS−443−1」からデータを正常に受信できたときのデータを受信した順番にレベル出力。 データはRB6が論理1、RB 4が論理1の時に有効。

  

 実際の製作例を以下の画像に示します。

  

【 製作例正面外観 】   

  

 

【 製作例背面外観 】

    

【 製作例 内部外観 】

 ケースには(有)吉村製作所クリエイトシリーズ MOODEL1 を利用しています。 このケースにヘアライン加工(?)を行い黒色塗装をしています。

 また、見てのとおり、リモコン学習時(書き込み時)にはケースのフタを開けて行います。 リモコン学習を行う機会は少ないと思いこのようにしています。

 


【 ソフトウエア 】

 リモコンの受信フォーマットに関しては十分な情報を入手することができませんでした。 このため、正確なデータ復調アルゴリズムができそうにありませんでした。 ただし、目的はリコモン信号の識別ができればよいので、このリモコン受信機専用の解釈で識別することにしました。 よって、以下に記載しているリモコン受信データは勝手な解釈で記載していますので、世間一般で通用するものではありません。 

1 サンプルプログラム

 今回作成したPIC16F84A用のサンプルプログラムを下記からダウンロードできます。 このファイルにはAIWAのTV、HITACHIのTV、SonyのCSチューナの各リモコン用のHEXファイル3本が含まれています。 なお、汎用性を考え、リモコンのチャンネル選択ボタン1,2,3,4を識別する場合のデータで作成されています。

AIWAのTVリモコン: RC111A.HEX 5,406バイト

HITACHIのTVリモコン: RC112A.HEX 5,406バイト

SonyのCSチューナのリモコン: RC113A.HEX 5,406バイト

 

2 ビット列の格納

 今回のリモコン受信機のプログラムはPPM対応専用ということで、「リモコン受信モジュールSPS−443−1」からのデータ(負論理)がHレベルからLレベルに変化するときの時間を計測することでリーダ判定、データ受信判定を行うことにします。(LレベルからHレベルは判定していません。)
 

 受信された「リモコン受信モジュールSPS−443−1」からの復調信号をメモリに格納します。 データフォーマットが分からないので受信したデータは固定長として扱います。

  
復調信号ビット列  (リモコン受信モジュールSPS−443−1出力
  
リーダ bit0 bit1 bit2 bit3
・・・・・・
bit n-2 bit n-1 bit n

 時間 →

マイコンメモリ内

アドレス

 

ビット列

N        
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
N+1      
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
N+2      
bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16
N+3      
bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit24

【 ビット列 格納フォーマット 】
  

 

3 EEPROMエリア

  今回作成したリモコン受信機のプログラム(HEXファイル)ではPPM変調対応に限定しておりますが、同じPPM変調といってもメーカごとに信号フォーマット(リーダ時間、論理0/論理1時間)が異なってるようです。 このため、PIC16F84AのEEPROMエリアの設定を変えることである程度対応できるようにし ています。

 以下にEEPROMの割付を記載します。

アドレス データ名称 内容
000h t0 電源投入時待ち時間 ×約0.1s
(サンプルプログラム設定:5)
001h t1 リーダ判定時間最小値 ×約0.05s リーダ判定用時間判定時間幅。 この範囲に入っている場合リーダ受信と判定する。
002h t2 リーダ判定時間最大値 ×約0.05s
003h t3 データ0判定時間最小値 ×約0.05s データ0判定用時間判定時間幅。 この範囲に入っている場合データ0と判定する。
004h t4 データ0判定時間最大値 ×約0.05s
005h t5 データ1判定時間最小値 ×約0.05s データ1判定用時間判定時間幅。 この範囲に入っている場合データ1と判定する。
006h t6 データ1判定時間最大値 ×約0.05s
007h t7 正常終了時 次回データ受信開始待ち時間 ×約0.1s
(サンプルプログラム設定:2)
008h t8 異常終了時 次回データ受信開始待ち時間 ×約0.1s
(サンプルプログラム設定:5)
009h t9 データ受信後出力反転時表示LED(RB5)点灯時間 ×約0.1s
(サンプルプログラム設定:2)
010h
〜013h
CH1データ チャンネル1用データ格納エリア
014h
〜017h
CH2データ チャンネル2用データ格納エリア
018h
〜01Bh
CH3データ チャンネル3用データ格納エリア
01Ch
〜01Fh
CH4データ チャンネル4用データ格納エリア
020h CH1出力設定 0:反転出力、1〜255:パルス出力オン時間 ×約0.1s
(サンプルプログラム設定:2)
021h CH2出力設定 0:反転出力、1〜255:パルス出力オン時間 ×約0.1s
(サンプルプログラム設定:2)
022h CH3出力設定 0:反転出力、1〜255:パルス出力オン時間 ×約0.1s
(サンプルプログラム設定:2)
023h CH4出力設定 0:反転出力、1〜255:パルス出力オン時間 ×約0.1s
(サンプルプログラム設定:2)
024h 出力論理設定 RB0〜RB7出力論理設定 0で正論理、1で負論理
 → 各ビット位置がRB0〜RB7の各ビットに相当
(サンプルプログラム設定:0 → 全出力 正論理出力)

 

なお、サンプルプロラム毎に異なるチャンネル用のデータの値を以下に記載します。

EEPROMデータ AIWAのTV HITACHIのTV SonyのCSチューナ
t1 145 235 35
t2 175 250 60
t3 10 10 10
t4 26 26 22
t5 28 28 24
t6 48 48 40
CH1データ  (ボタン1) 005h,005h,004h,0FBh 050h,0AFh,00Dh,0F2h 000h,01Dh,007h,000h
CH2データ (ボタン2) 005h,005h,005h,0FAh 050h,0AFh,00Eh,0F1h 001h,01Dh,007h,000h
CH3データ (ボタン3) 005h,005h,006h,0F9h 050h,0AFh,00Fh,0F0h 002h,01Dh,007h,000h
CH4データ (ボタン4) 005h,005h,008h,0F7h 050h,0AFh,01Ch,0E3h 003h,01Dh,007h,000h

 


【 EEPROMデータ確認方法 】

 今回のリモコン受信機作製に際して、各社のリモコンによって結構信号フォーマットが異なることが分かりました。 このため、EEPROMの設定値を求めるためのチェック用の信号を得ることができるようにしています。 このチェック方法について下記します。 なお、以下の波形はプログラムデバッグ時点でprotB出力を全て負論理に設定していたときの波形です。 今回のサンプルプログラムはportB出力は正論理ですので以下の波形のLレベルとHレベルが逆転します。 この点をご承知のうえお読み下さい。

1 受信データの確認

 メーカによってリモコンのフォーマットが全て異なり、リーダ部やデータ部の時間が各社毎に異なります。 このためEEPROMのt1〜t6の設定を適切に行いリーダ部、データ0、データ1の認識を行うようにしなければなりません。

 時間は、50μsのルーチンを何回通ったかをカウントして計測しています。 よって、計算上のt1〜t6への設定は実測時間/50μとなります。 実際には時間計測以外にカウントルーチンなど別のルーチンも通っていますので、t1〜t6への設定は実測時間/50μの0.7〜0.9倍程度でトライしてみて下さい。

 今回動作確認をした以下の3種類のリモコンについての例を下記します。 なお、プログラムがリーダ部、データ0、データ1の認識をしているかどうかはPIC16F84A-20のRA4とRB7を同時に観測することで確認できます。 リーダ部、データ0、データ1の認識の確認は、入力波形(RA4)がHレベルからLレベル(正論理出力の場合はLレベルからHレベル)に変化した時点でRB7を反転しているかどうかを確認することでできます。

 もし、受信を開始してRA4が最初にHレベルからLレベルに変化した時点でRB7が変化しない場合はマイコン自体が正常に動作していない可能性が大です。 リーダ部が認識できていない場合は、RA4のHレベルからLレベルへの2回目の変化時点でRB7の反転が生じません。

 以下の参考例に示すようにRB7が連続して反転できればログラムがリーダ部、データ0、データ1の認識できていることになります。

  

リモコン 正常受信波形 リーダ部間隔 データ0間隔 データ1間隔
AIWA

TVリモコン

8.97ms 1.13ms 2.25ms
HITACHI

TVリモコン

13.69ms 1.13ms 2.28ms
Sony

CSチューナ
リモコン

3.02ms 1.19ms 1,81ms

 

 また、受信したデータをシリアル信号として取り出すことができます。  データ送出中信号:RB6、データ:RB7、クロック:RB4で下図のように受信データを出力できます。 RB7から出力されるデータは「リモコン受信モジュールSPS−443−1」 で受信した順番で、データ部のみを送出します。 また、先に記載していますように4バイト固定長で扱いますので受信データ長の如何に関わらず32ビット固定長で出力されます。

 また、RB7から出力されるデータは以下のよう選択できます。

 

READスイッチオン、WRITEスイッチオフ

 チャンネル選択されたチャンネルのデータを受信した順番にRB7から出力。 データはRB6が論理1、RB4が論理1の時に有効。

  

READスイッチオン、WRITEスイッチオン

リモコン受信モジュールSPS−443−1」からデータを正常に受信できたときのデータを受信した順番に RB7から出力。 データはRB6が論理1、RB4が論理1の時に有効。

 

  


【プログラム書き込みサービス】

 本ページで紹介しましたPICマイコンの書き込みサービスを行っています。 詳細はプログラム書き込みサービスのページを参照願います。


 Memorandumの小部屋 へ戻る      ホームページへ戻る


End of This Page.