![]() |
(Android, PIC)赤外線リモコンのエミュレーションのための送信回路サンプル (Android, PIC) IR Remote Control Emulation sample Circuit Board |
目次 |
リポジトリ内のサブディレクトリには、次のソフトウエアが入っています
回路図には記載していないが、三端子レギュレータ周りにコンデンサが必要。データシートよりCin > 0.1uF、Cout > 47uF 以上のものが必要。
名称 | 型番・仕様 | 個数・価格 |
---|---|---|
PICマイコン | 16F1827 | 1個(208円) |
三端子レギュレータ | μPC29M33A | 1個 |
NPNトランジスタ | 2SC1815 | 1個(21円) |
赤外線LED | 940nm, If=100mA, Vf=1.2〜1.4V | 1個(20円) |
炭素皮膜抵抗 | 2.2kΩ | 1個(5円) |
炭素皮膜抵抗 | 1kΩ | 2個(5円) |
炭素皮膜抵抗 | 33Ω | 1個(5円) |
LED | 1個(20円) |
別途、モジュールを利用したもの
名称 | 型番・仕様 | 個数・価格 |
---|---|---|
Bluetoothシリアル | HC-06 (VCC=3.6〜6V, RX,TX=3.3V) | 1個(5 USドル) |
ルネサスのホームページ「NECフォーマットの赤外線リモコン・フォーマット」に、搬送波のタイミングチャートが掲載されている。標準的な信号パターンは次のようなものだ。
Hi | Lo | |
---|---|---|
リーダ(スタートビット) | 16t = 9000us | 8t = 4500us |
1 | t = 560us | 3t = 1690us |
0 | t = 560us | t = 560us |
トレーラ(ストップビット) | t = 560us | 108 ミリ秒の残り |
信号のHi部分は、38kHzの搬送波で構成され、デューティ比は1/3とされている。PICのPWM出力機能を利用して、設定パラメータはオシロスコープを用いて微調整し、38kHz,1/3デューティ比となるようにする。なお、SONY方式など一部のリモコンは搬送波周波数が40kHzなどと少し違うため、Android機からPICマイコンに送るCSVファイルにPWMコントロール用のパラメータを含められるようにしている。
信号フォーマット。横軸1メモリが1ミリ秒
0,1,0,1 … のNECフォーマットの信号。0データのHiが642マイクロ秒、Loが470マイクロ秒というYAMAHAの解析値に近いタイミングにカスタマイズしている。
一部分を拡大してみる。横軸が100マイクロ秒
Hiの部分(642マイクロ秒)が、38kHzのキャリア信号で表現されている。今回は、PICで簡単に実現するため、PWMの方形波を用いている。
横軸1メモリが10マイクロ秒
デューティ比をだいたい1/3にした
PR2, CCPR1L | 周波数 (kHz) | Hi : Lo (μsec) |
---|---|---|
25,6 | 38.55kHz | 6.8 : 19.2 |
25,7 | 38.55kHz | 8.0 : 18.0 |
25,8 | 38.55kHz | 8.8 : 17.2 |
25,9 | 38.55kHz | 10.0 : 16.0 |
25,10 | 38.55kHz | 10.8 : 15.2 |
25,11 | 38.55kHz | 12.0 : 14.0 |
25,12 | 38.55kHz | 12.8 : 13.2 |
PR2, CCPR1L | 周波数 (kHz) | Hi : Lo (μsec) |
---|---|---|
24,8 | 40.1kHz | 8.8 : 16.0 |
24,7 | 40.1kHz | 8.0 : 17.2 |
PR2, CCPR1L | 周波数 (kHz) | Hi : Lo (μsec) |
---|---|---|
26,8 | 37.1kHz | 8.8 : 18.0 |
Subversion内のサブディレクトリlirc_conf_to_csvにスクリプトを格納してる。
begin remote name tv-hitachi.conf flags RAW_CODES|CONST_LENGTH eps 30 aeps 100 gap 107764 begin raw_codes name on 9050 4410 657 489 650 473 626 472 649 496 626 1623 622 499 648 1606 614 498 622 1617 626 1623 673 1542 651 1628 692 423 621 1624 621 499 623 1623 621 1621 621 1622 623 1622 623 499 621 1623 725 396 621 497 630 492 623 475 649 473 649 497 624 1594 650 472 651 1622 628 1590 647 1625 620 name d-1 9049 4416 645 496 625 1619 625 1626 619 502 619 1618 〜以下省略〜
これをlirc_nec_decode.pl
スクリプトを用いてデコードすると
on = 0A,F5,E8,17, d-1 = 6A,95,8E,71, d-2 = 6A,95,4E,B1, d-3 = 6A,95,CE,31, d-4 = 6A,95,2E,D1, 〜以下省略〜
また、lirc_nec_decode.pl
スクリプトを用いてRAW形式で整形だけしてやると
on = B5,58,0D,09,0D,09,0C,09,0C,09,0C,20,0C,09,0C,20,0C,09,0C,20,0C,20,0D,1E,0D,20,0D,08,0C,20,0C,09,0C,20,0C,20,0C,20,0C,20,0C,09,0C,20,0E,07,0C,09,0C,09,0C,09,0C,09,0C,09,0C,1F,0D,09,0D,20,0C,1F,0C,20, d-1 = B4,58,0C,09,0C,20,0C,20,0C,0A,0C,20,0D,08,0D,20,0C,0A,0C,1F,0C,09,0C,09,0D,1F,0E,08,0C,20,0C,09,0C,20,0E,1E,0C,09,0C,09,0D,09,0D,20,0C,20,0C,20,0C,09,0D,09,0D,20,0C,1F,0D,20,0C,09,0C,09,0D,09,0C,20, d-2 = B4,58,0D,09,0C,20,0C,20,0C,09,0C,1F,0D,09,0D,20,0C,09,0C,1F,0C,0A,0C,09,0C,20,0C,09,0D,1F,0C,09,0C,20,0C,09,0C,20,0C,09,0E,07,0D,20,0C,1F,0C,1F,0C,09,0C,20,0D,09,0C,20,0C,20,0C,09,0D,08,0D,08,0D,20, d-3 = B5,58,0D,09,0C,20,0C,20,0C,09,0C,1F,0C,09,0C,20,0C,0A,0C,1F,0C,0A,0C,08,0C,20,0C,09,0C,20,0C,09,0C,1F,0C,20,0C,20,0C,09,0C,09,0D,20,0C,20,0C,20,0C,09,0D,09,0C,09,0C,1F,0C,20,0D,08,0C,09,0C,09,0C,1F,
これらのCSVファイルは、Android用コントロール ソフトウエアで読み込み可能。
lirc_nec_decode.pl
スクリプトでデコードしたCSVファイルの先頭に、コントロール用パラメータ行を付加すしたものを読み込ませる。なお、コントロール用パラメータの書式は
@param = mode,pr2,ccpr1l @timing = start_hi,start_lo,signal_hi,signal_1_lo,signal_0_lo @title = タイトル行文字列
mode
: 下位8ビットが 1=NEC/家電協コード, 2=PWMテスト信号連続, 4=テスト信号, 5=RAW。上位8ビットの1ビット目はNEC/家電協コードを2回連続送信する時
pr2
, ccpr1l
: PICマイコンのPWM制御
start_hi
: スタートビットのHi時間(μsec)
start_lo
: スタートビットのLo時間(μsec)
signal_hi
: 通常信号1または0のHi時間(μsec)
signal_1_lo
: 通常信号1のLo時間(μsec)
signal_0_lo
: 通常信号0のLo時間(μsec)
何も指定しない時のデフォルト値は
@param = 1,25,8 @timing = 9000,4500,560,1690,560 @title = [CSVファイル名]
Bluetoothデバイスの選択画面(ペアリング済みのみを一覧表示)
コード送信画面
実際に家電製品のコントロールに成功したサンプルCSVファイルを、 Subversion内のサブディレクトリsample-csvに格納してる。
@param および @timing はデフォルト値で構わない場合は、省略している
@title = 日立 液晶テレビ 電源 = 0A,F5,E8,17, 画面表示 = 0A,F5,08,F7, 音声多重 = 0A,F5,10,EF, 入力切替 = 0A,F5,90,6F, 地デジ 1 = 6A,95,8E,71, 地デジ 2 = 6A,95,4E,B1, 地デジ 3 = 6A,95,CE,31, 〜 以下省略 〜
東芝のDVDレコーダーは、コードを2回送信するために @param を設定している。
@param = 17,25,8 @timing = 9100,4400,600,1600,500 @title = 東芝DVDレコーダー 電源 = A2,3D,48,B7, トレイ 開閉 = A2,3D,88,77, 放送切替 = A2,3D,84,7B, スタートメニュー = A2,3D,62,9D, 入力切替 = A2,3D,F0,0F, ドライブ切替 = A2,3D,45,BA, 録画切替 TS/RE = A2,3D,C6,39, 〜 以下省略 〜
コードを2回送信するために @param を設定している。また、家電協フォーマットは信号のタイミングがNEC方式と違うため @timing も設定している
@param = 17,25,8 @timing = 3500,1600,540,1200,360 @title = Panasonic室内照明 ch1-点灯・普段 = 34,4A,90,B4,24, ch1-消灯 = 34,4A,90,F4,64, ch1-白い色 > = 34,4A,9C,09,95, ch1-暖かい色 > = 34,4A,9C,89,15, 〜 以下省略 〜
GNU GPL フリーソフトウエア