PICマルチメーカー対応赤外線リモコンコード解析器 PIC16F648A版


この記事は、紹介記事です。オリジナル記事への補足や、製作例、参考になる情報として掲載しております。
当方からのサポートは行いません。またご質問にも一切応じられませんので予めご了承ください。


初めに

エアコンや照明のリモコンをもっと自由に操れるような赤外線リモコンを自作してみたくなったので、赤外線のコードを色々みたのだが、単純に0と1を送っているわけではなく、オシロスコープで波形をみても解析に骨が折れる。

そこでインターネット上で色々調べたら、TOMCAT氏製作のPICマルチメーカー対応赤外線リモコンコード解析器という各社メーカーのリモコンを数値化して解析できるすぐれた機能を持った装置の製作記を公開していた。

早速作成。ほほう、これはとても便利だ。ただ、この使用しているPICは16F84であり、現在では割高のマイコン。記事が2000年頃だけに仕方ないだろう。こんな便利な解析器なので、ポピュラーなPIC16F648Aに移植してみた。
色々やってみたら、何とか成功。折角なので公開してみることにした。

回路図



ダウンロード

Date version Build Folder Device note
New
2023/8/20 
 2.6(pic-as v2.41)  MPLABX v6.10 (pic-as v2.41) \p-rcn_thirdparty\prcn_16f648a.X PIC16F648A  MPLAB Xに標準搭載しているアセンブラ pic-as v2.41に対応したソースコードに書き直しました。
動作は確認していませんが、2011/7/10公開のHEXファイルと同じファイル内容であることを確認済です。
書き込み用ファイルは、
\p-rcn_thirdparty\prcn_16f648a.X\dist\default\production
prcn_16f648a.X.production.hexです

p-rcn_thirdparty-20230616_154627.zip
 
2011/7/10 2.6 MPLAB8.73 (MPASMWIN.exe v5.42) C:\picsrc\p-rcn_thirdparty PIC16F648A ファイル内容
p-rcn_thirdparty.zip
プロジェクトファイル一式、回路図梱包

p-rcn25.lzh
TOMCAT氏オリジナルのlzhファイル

zip内のPicrcn_16f648.HEXをPIC16F648Aに書き込むことで、動作します。

MPLAB設定はabsolute、default RadixはDecimalを選択してコンパイルします。




使用方法

Tomcat氏のホームページPICマルチメーカー対応赤外線リモコンコード解析器より引用しています。

電源を入れると、ロゴ表示をした後、家電製品協会ホーマットモードになります。
このモードで大半のメーカーのコードを解析できます。



 送信器から赤外線を、センサーにあてます、うまくコードを解析出来た場合下図の左のように表示します。エラーが有ると右のようになります。
  oE --- データの桁数オーバーです。(40Byt超え)
  rE --- Sモードでパルス時間が長すぎるか、短すぎる場合です
(家電協会の規格が手に入らないため個人的に決めています!)

------------------ ------------------
| 4Byt+0bit 1   | | 0Byt+4bit rE 1 |
|FD8E031F    | |00        |
------------------ ------------------

 上のラインに、受信したデータのバイト数が表示します、1バイトは8ビットで端数ビットがある場合(データビットが8の倍数になっていない場合)ビットで表示します。下に受信したデータを16進数で表示します。


------------------ ------------------
|10Byt+6bit  1->| |10Byt+6bit  2<- |
|4054896A34567889| |FD8E03      |
------------------ ------------------

上のラインの右端に表示データブロックNoを表示し、8Byt以上のデータが有る場合に矢印を表示します。この場合切り替えキーを押す事でリング式で表示ブロックが切り替わります。
1 --- 1〜8 Byt
2 --- 9〜16 Byt
3 --- 16〜24 Byt
4 --- 25〜32 Byt
5 --- 33〜40 Byt


データ表示中に、モードキーか切り替えキー(データが 8Byt 以下の場合のみ)を押すと表示がモード表示に戻りま す。数回受信して、データの表示が変わらなければOKです。

モード切り替え
------------------
| Rx Mode M type |
|STA:NOM:AUTO:1DT|
------------------

 次に、切り替えキーを押すと

------------------
| Rx Mode M type |
|NoS:NOM:AUTO:1DT|
------------------

 STAがNoSに表示が変わります。これはスタートパルス(リーダー部)の有無です。STAでスタートパルス有り、NoSでスタートパルス無しで最初からデータとなっている場合に対応します。もう一度切り替えキーを押すとSTAに戻ります。

 次にモードキーを押すとカーソルがNOMの0の下に来ます、ここで切り替えキーを押すとREB表示になります。NoSになっていた場合は次のAUTOも数値表示に変わります。

------------------ ------------------
| Rx Mode M type | | Rx Mode M type |
|STA:REB:AUTO:1DT| |NoS:REB: 1.0:1DT|
------------------ ------------------

 これは、変調方式の切り替えで家電製品協会ホーマットではPPM方式で、パルスとパルスの間隔ででデータの1と0を現していますが、ソニーはパルスの幅でデータの1と0を現しています。NOMでは家電製品協会ホーマットに、REBでソニー方式に対応します。

 次にモードキーを押すとカーソルがAUTOのTの下に来ます、ここで切り替えキーを押すと数値表示(1.0)に変わります続けて切り替えキーを押すと0.1ずつ上がって行きます、3.0になると次に0.2に戻り続けて切り替えキーを押すとまた0.1ずつ上がって行きます。

------------------
| Rx Mode M type |
|STA:NOM: 1.0:1DT|
------------------

 これは、データの1と0の判定を自動で出来ないときの為のモードで、単位はmsです。この時間よりも長い場合を1、短い場合を0としています。
AUTOでは、家電製品協会ホーマットの時はパルス時間の1.25倍、ソニー方式では、パルス間隔時間の1.25倍になっています。

 次にモードキーを押すとカーソルが1DTのDの下に来ます、ここで切り替えキーを押すとCONとなります。

------------------
| Rx Mode M type |
|STA:NOM:AUTO:CON|
------------------

 これは、連続して送信するデータを最大8バイトまでそのまま表示します。1DTの時は、同じデータを繰り返し送信していてもデータとデータの間が時間が長く空くため、それを判断し1ブロックのデータのみを表示しますが。シャープ方式とビクターの一部では2ブロックのデータを送信してくる為、1ブロック表示ではうまくいかないためのモードです。

 次にモードキーを押すと、S type モードに戻ります。AUTOモードを替えた場合はここまで戻さないとAUTOに戻せません。

 簡単な赤外線リモコンのパルス波形の説明がPIC16F84使用赤外線リモコン送信器 のページに書いてあります。


(ソースファイルから)
メーカー別モード設定例

  NEC、日立、東芝、ビクター、サンヨー、松下

       ------------------
       |ヒカリ リモコン ジュシンキ |
       | Rx Mode S type |
       ------------------


  松下一部

     ------------------
     | Rx Mode M type |
     |STA:NOM:AUTO:1DT|
     ------------------


  ビクター一部

     ------------------
     | Rx Mode M type |
     |STA:NOM:AUTO:CON|
     ------------------

  ソニー

     ------------------
     | Rx Mode M type |
     |STA:REB:AUTO:1DT|
     ------------------


  シャープ

     ------------------
     | Rx Mode M type |
     |NoS:NOM: 1.0:CON|
     ------------------


  三菱

     ------------------
     | Rx Mode M type |
     |NoS:NOM: 1.0:1DT|
     ------------------



※起動時のタイトルは、「IR Decipher2011 Ver*.* 16F648A」と表示されます。



配布について

動作的に問題がないものとし、公開しております。作者の意向に沿うように、このプログラムは、フリーウェアーとして自由に配布可能です。但し以下の内容をご確認の上ご使用ください。

【変更内容に関して】ソースプログラムについて、移植の目的のため、ヘッダーファイルの番地定義などが違う場合があったり、注釈文にしている部分があります。(ソース上の変更は**2.6 ,**2.5bでコメントしています)
こちらの使用しているハードウェアの都合上、LED出力が反転していたり、オープニングメッセージが変更されています。

【オリジナル作者の配慮】
バージョン2.5b及び2.6はair_variableにて変更したものですので、このバージョンで不具合があった場合でも、作者であるTOMCAT氏には問い合わせを行わないようにお願い申し上げます。

免責事項

このバージョンを運用した結果によって生じた不具合は一切責任を持ちません。自己責任にて実施をお願いします。

謝辞

今回、この掲載にあたり許諾してくださいましたTomcat氏に御礼申し上げます。大変素晴らしいツールを継承できる事を光栄に思います。


(C)2011,2023 air variable All Rights Reserved..

2011/7/13 公開
2023/8/20 MPLABX v6.10 (pic-as v2.41)バージョン公開

ホーム