Remote Control with PIC

■コンピュータ制御学習リモコン

PIC を使った学習リモコンです。 最新の PIC を利用し、部品を簡素化しました。

はじめに

関心が多いようですので、赤外線リモコンについて再度情報を整理することにしました。 最新の 16F628 を使用し、赤外線分析も行えるように改良しました。

赤外線信号の分類

再度、赤外線フォーマット(規格)を分類し直しました。 赤外線信号は電子機器の誤動作を防ぐために、規格化されています。 ただし、独自仕様もあります。
[赤外線信号の分類]
家電製品協会フォーマット乱立した独自仕様を統一するために規格された業界標準です。
NECフォーマット統一以前に広く使用され、今でも比較的多くの機器で使用されています。
独自仕様さまざまです。海外フォーマットなど。
それぞれの赤外線フォーマットを以下にまとめました。

家電製品協会フォーマット

[基本情報]
搬送波[KHz]33 - 40
時間単位T[ms]0.35 - 0.50
論理0on 1T + off 1T
論理1on 1T + off 3T
[フォーマット構成]
リーダ部カスタム・コード部パリティ部データ・コード部データ部トレーラ部
[on=8T]+[off=4T]2bytes(16bits)4bits4bits任意bits[on=1T]+[off=8ms以上]

家電製品フォーマットの例(Tは時間単位, 約0.47ms)

NECフォーマット

[基本情報]
搬送波[KHz]38
時間単位T[ms]0.56
論理0on 1T + off 1T
論理1on 1T + off 3T
[フォーマット構成]
リーダ・コードカスタム・コードデータ・コード(反転)データ・コードストップ・ビット
[on=16T]+[off=8T]2bytes(16bits)8bits8bits[on=1T]
[カスタム・コード]
C0C1C2C3C4C5C6C7
C0
C1
C2
C3
C4
C5
C6
C7
Custom Codeビット反転Custom Code

[データ・コード]
D0D1D2D3D4D5D6D7
D0
D1
D2
D3
D4
D5
D6
D7
Data Codeビット反転Data Code

NECフォーマットの例(Tは時間単位, 約0.57ms)

独自仕様

独自仕様はさまざまです。 以下の例は 12Bit Data(正論理)で間隔を置いて三回繰り返しています。

TV,AV系の例(Tは時間単位, 約0.49ms)

回路図



解説 VCCの電圧不足問題

RS-232C 接続方法

部品表

備考
16F628116F627, 16F628, 16F627A, 16F628A, 16F648A でも OK
18P118ピンソケット
10K3R3, R4, R6 カーボン皮膜抵抗1/6W
4.7K1R5 カーボン皮膜抵抗1/6W
5601R2 カーボン皮膜抵抗1/6W
3001R7 カーボン皮膜抵抗1/6W
2.21R1 カーボン皮膜抵抗1/6W
22uF1C3 縦型電解コンデンサ(耐圧16V)
1S15882D1, D2 代替品でも OK。D1はショットキー・ダイオードが望ましい。
Z5.11D3 5.1V ツェナーダイオード
2SC18152Q1, Q2 NPNトランジスタ
2SD5921Q3 NPNトランジスタ
LED1D 赤外線LED
CRVP17381赤外線受光モジュール(38KHz)
Battery1単4 x2電池ケース
DSUB91D-SUB 9ピン、メスコネクタ

RS-232C の解説


	D-SUB 9ピンコネクタ
	RS-232C 9P DTE(HOST)
	┌─────┐
	│@ABCD|
	│ EFGH |
	└─────┘
ピン信号名称IN/OUT意味
1DCDIN受信キャリア検出(Data Carrier Detect)
2RXDIN受信データ(Receive Data)
3TXDOUT送信データ(Transmit Data)
4DTROUTデータ端末レディ(Data Terminal Ready)
5GND-信号用接地(Signal Ground)
6DSRINデータセットレディ(Data Set Ready)
7RTSOUT送信要求(Request to Send)
8CTSIN送信可(Clear to Send)
9RIIN被呼表示(Ring Indicator)

RS-232C 通信ケーブル

RS-232C 9P-9P Straight Cable
HOSTMODEM
信号名称IN/OUTピン信号方向ピンIN/OUT信号名称
DCDIN11OUTDCD
RXDIN22OUTRXD
TXDOUT33INTXD
DTROUT44INDTR
GND-55-GND
DSRIN66OUTDSR
RTSOUT77INRTS
CTSIN88OUTCTS
RIIN99OUTRI
RS-232C 9P-9P Cross Cable
HOST-1HOST-2
信号名称IN/OUTピン信号方向ピンIN/OUT信号名称
DCDIN1NC1INDCD
RXDIN23OUTTXD
TXDOUT32INRXD
DTROUT46INDSR
GND-55-GND
DSRIN64OUTDTR
RTSOUT78INCTS
CTSIN87OUTRTS
RIIN9NC9INRI

ソフトウェア

Windows 用ソフトウェア

ダウンロード Remocon2.zip(221KB)
単独で動作します。外部ライブラリは必要ありません。
対応COMポートを3つから9つ(COM1-COM9)に拡張しました(2007-08-29)。

メニュー説明

メニュー機能
File
  • COM:COMポートの選択(デフォルトはCOM1)
  • Exit:終了
Opt
  • Count Pulse:パルス数をカウントします。このパルス数を元に各パルスの長さを計測します。
  • Analize Pulse:各パルスの長さを計測します。分解能は100usです。
    解析可能な最大パルス数はメモリの関係から48です。
    0us と表示されることがありますが、これは 25500us 以上の場合です。
    リーダ部、ストップ部を含めて表示します。
Help
  • Web Home:HP をアクセス
  • About:Remoconについて

注意事項

学習方法

準備 上記をまず実行ください。これを怠ると学習できません。

RS-232C 通信条件

通信速度9600bps
パリティなし
ビット数8
ストップビット1

制御コマンド

分類コマンドデータ
NECフォーマット赤外線送信0x04バイト(送信)
  1. カスタム・コード(2バイト)
  2. データ・コード(1バイト)
  3. 反転データ・コード(1バイト)
家電製品協会フォーマット赤外線送信0x124バイト(送信)
  1. Carrier キャリアを指定します。
    0=41.666KHz 1=38.4615KHz 2=35.7142KHz 3=33.3333KHz
  2. High0 論理0のOn部分の長さを指定します。
    例 500us x 38KHz(Carrier) = 19
  3. Low0 論理0のOff部分の長さを指定します。
    例 500us x 38KHz(Carrier) = 19
  4. High1 論理1のOn部分の長さを指定します。
    例 500us x 38KHz(Carrier) = 19
  5. Low1 論理1のOff部分の長さを指定します。
    例 1500us x 38KHz(Carrier) = 58
  6. StartHs リーダのOn部分の長さを指定します。
    例 4ms x 38KHz(Carrier) / 2 = 77
  7. StartLs リーダのOff部分の長さを指定します。
    例 2ms x 38KHz(Carrier) / 2 = 38
  8. StopHs トレーラのOn部分の長さを指定します。
    例 500us x 38KHz(Carrier) / 2 = 10
  9. StopLs トレーラのOff部分の長さを指定します。
    例 8ms x 38KHz(Carrier) / 2 = 152
  10. CustomH カスタムのHighバイトを指定します。
  11. CustomL カスタムのLowバイトを指定します。
  12. Parity パリティ部とデータ・コード部を指定します。
  13. Data1 データ1を指定します。
  14. Bits1 データ1の有効ビット数を指定します。例 8
  15. Data2 データ2を指定します。
  16. Bits2 データ2の有効ビット数を指定します。例 8
  17. Data3 データ3を指定します。
  18. Bits3 データ3の有効ビット数を指定します。例 8
  19. Data4 データ4を指定します。
  20. Bits4 データ4の有効ビット数を指定します。例 8
  21. Data5 データ5を指定します。
  22. Bits5 データ5の有効ビット数を指定します。例 8
  23. Data6 データ6を指定します。
  24. Bits6 データ6の有効ビット数を指定します。例 8
NECフォーマット赤外線受信0x24バイト(受信)
  1. カスタム・コード(2バイト)
  2. データ・コード(1バイト)
  3. 反転データ・コード(1バイト)
家電製品協会フォーマット赤外線受信0x36バイト(送信)、9バイト(受信)
  1. Bits1 データ1の有効ビット数を指定します。例 8
  2. Bits2 データ2の有効ビット数を指定します。例 8
  3. Bits3 データ3の有効ビット数を指定します。例 8
  4. Bits4 データ4の有効ビット数を指定します。例 8
  5. Bits5 データ5の有効ビット数を指定します。例 8
  6. Bits6 データ6の有効ビット数を指定します。例 8
  7. CustomH が返されます。
  8. CustomL が返されます。
  9. Parity パリティ部とデータ・コード部が返されます。
  10. Data1 データ1が返されます。
  11. Data2 データ2が返されます。
  12. Data3 データ3が返されます。
  13. Data4 データ4が返されます。
  14. Data5 データ5が返されます。
  15. Data6 データ6が返されます。
有効ビット数は Count Pluse 解析から計算します。
Count Pulse 解析0x41バイト(受信)
  1. パルス数(1バイト)
リーダ、ストップも含めてカウントされます。
Analyze Pulse 解析0x51バイト(送信)、最大96バイト(受信)
  1. 解析するパルス数n(最大48)
  2. 解析データ(n x2バイト)
解析するパルス数には Count Pluse 解析で得られた数を指定します。
ただし、最大は48です。
解析データは 100us の分解能です。例 5 の場合、500us です。
High 部分、Low 部分を交互に返してきます。

16F62x 用ファームウェア

ダウンロード Remocon2.hex

外見図

あとがき

PIC が高機能になり、製作も容易になりました。
しかし、この時代においても手元にあるリモコンを解析してみるとデータ長が42ビットと理解に苦しむ結果です。 いつになれば統一されるのでしょうか。。。
(C)1997-2004 All rights reserved by Einstein. inserted by FC2 system