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ジャック:両極性対応 |
【 ハードウエア 】
リモコン受信機の回路図を下記に記載します。
後述のようにリモコン(メーカ)によって信号フォーマットが相当異なりますのでチェック用端子は必須です。
受信モジュールは「リモコン受信モジュールSPS−443−1」を利用しています。 とても簡単に、かつ、確実に復調できるので簡単にリモコン 送信機からの赤外線を受信できるようになります。
電源部にはショットキーバリアダイオード(1S10:秋月電子通商で入手)を利用したダイオードブリッジ回路を設けて両極性対応としています。
入出力ポートの仕様を下記に記載します。
ポート | 方向 | 論理 | 仕 様 | ||||||||||||||||
RA0 | 入力 | 負論理 | チャンネル選択スイッチ ビット0 |
|
|||||||||||||||
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で設定可) データ書込み時 0.2s点灯→0.2s消灯→0.2s点灯 |
|||||||||||||||||
RB6 | 出力 | データ読出し時Busy信号 データ出力中に論理1 | |||||||||||||||||
RB7 | 出力 | 受信データモニタ 「リモコン受信モジュールSPS−443−1」データ受信中
受信データ読出し時(READスイッチオン、WRITEスイッチオフ)
受信データ読出し時(READスイッチオン、WRITEスイッチオン)
|
実際の製作例を以下の画像に示します。
【 製作例正面外観 】
|
【 製作例背面外観 】
|
【 製作例 内部外観 】 |
ケースには(有)吉村製作所クリエイトシリーズ 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」からの復調信号をメモリに格納します。 データフォーマットが分からないので受信したデータは固定長として扱います。
格納ビット数は4バイト(32ビット)固定としており、総ビット数32ビットを越えた場合は記憶できません。
送信データの後半に反転データが送信されていても、これもデータの一部として記憶します。
32ビットに満たない場合は未使用ビットを0として記憶します。
復調信号ビット列 (「リモコン受信モジュールSPS−443−1」出力)
時間 → マイコンメモリ内
【 ビット列 格納フォーマット 】 |
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スイッチオフ
READスイッチオン、WRITEスイッチオン)
|
【プログラム書き込みサービス】
本ページで紹介しましたPICマイコンの書き込みサービスを行っています。 詳細はプログラム書き込みサービスのページを参照願います。
End of This Page.