習リモコンの作成


はじめに

前回は赤外線リモコンの基本機能を作りましたが、目的の機器を操作するためにリモコンのデータを解析して、PICに書き込んで、という手順を踏むのはかなり大変です。
EEPROM (24xx64/256)を使うためのサブルーチンも作ったし、赤外線受光モジュールも手に入ったので、これまでのまとめとしてTVなどの赤外線リモコンのデータを受信、メモリに記憶しておいてボタン操作で送信できる学習リモコンを作ることにしました。

相変わらずナントカの一つ覚えですが、出来上がりは例によってケータイ(正しくはピッチ)の「ガワ」に組み込んで、電話型学習リモコンが完成しました。

使ってみての感想です・・だいたいTV、照明、コンポで使う事が多い感じです。結構便利なのでワタシ的には重宝しているのですが、どのページのどのキーに何を記憶させたかをつい忘れてしまうので、それを自分のアタマに学習させるのが大変だったりします・・・(笑)

各部写真

←リモコン基板

両面スルーホール基板を電話の基板に合わせて切り取り、薄型のタクトスイッチを埋め込んでいます。受光モジュールといくつかの部品は基板裏面に実装しています。

出来上がり→
←部品全体

(左から)
・ケース(表)
・バッテリー、スイッチ押釦
・リモコン基板
・ケース(裏蓋)

 

回路図

学習リモコン回路図(1000*750 GIF 16KB)

PICは16F84を10MHzで使用します。赤外線受光モジュールには秋月で入手したCRVP1738を使いました。また、データメモリにはEEPROMの24LC64を使います。待機時の消費電力を下げるため、受光モジュールとメモリの電源はPICの出力ピンから得るようにしました。この方法だとかなりノイズが乗ってしまうみたいで、リモコンデータの受信に失敗する原因を突き止めるのに一日かかってしまいました。ノイズ除去のためCRVP1738のVsとGND間のコンデンサは必須です。
操作キーはBポートの0 〜3と4〜7をマトリクス状にしてSWを繋げます。RB0〜3はSWとLEDを共用で接続していますが、SWの入力を見るときはポートを入力に、LEDを点灯するときはポートを出力に切り替えてピンを節約しています。JPはメモリ消去用のジャンパです。
赤外線LEDの出力段はバラした不要リモコンのドライバをそのまま流用しました。

プログラム

ソースプログラム(ASM)

割り込みを使用します。ポートB割り込みはキー押下によるウェイクアップ、タイマ0割り込みは無操作によるタイムアップカウントのために用います。
操作が5秒以上行われなかった場合、CPUと周辺回路は省電力モードに切り替わり、消費電流は1μA以下に抑えられます。

リモコンデータを記憶させる手順として、リモコンデータの解析(信号タイミングの調査)をまず行い、次にそのタイミングに従って再度入力されたデータをメモリにセーブするという方法をとっています。ですからデータを記憶させる場合、2回続けて本機に向けてリモコンを操作する必要があります。
赤外線信号を「ベタ」で記録することができればあらゆるリモコン方式に対応できるのですが、PICのメモリ不足のため、この方法は諦めて、ビット(1or0)データにデコードしたものを最大16bytesで記録するようにしました。

ソースの記述はいつものようにPA.EXE拡張インストラクションを使用しています。
※PA.EXEは秋月のPICプログラマキットに付属していますが、
こちらにて最新版が公開されています。

操作方法

 


戻る