取得したリモコン信号の送信(Wiring Pi 利用)

解説

赤外線LEDを使用すると、取得したリモコン信号を送信して、学習リモコンを作ることができます。

リモコンの信号は、赤外線の点灯時間と消灯時間の長さの組み合わせになっています。

リモコンの信号の取得」で取得した赤外線の点灯時間と消灯時間の長さの組み合わせで、赤外線LEDを点灯、消灯させるプログラムを作成します。(取得した時間の最初の時間は、最初の信号が来るまでの時間であり、信号としてしては意味がないので、使いません。)

ここで、赤外線LEDは、赤外線リモコンの発光周波数である38kHzのパルス波で点灯するように、26[μ秒]周期のPWM出力で点灯させます。( 38kHz => 1/38000[s] = 26.315 * 10 ^ -3 [s] = 26.315[μ秒] )

使用した赤外線LEDは、順電圧100[mA]、順電圧1.35[V]です。
raspberry pi のデジタル出力ピンから供給できる電流は、最大16[mA]なので(参照:Understanding Outputs)、raspberry piのデジタル出力ピンからでは、100[mA]の電流を、赤外線LEDに供給できません。
トランジスタを用いて、電流制御を行います。
3.3[V]出力ピンからであれば、100[mA]の電流を、赤外線LEDに供給することができそうです。
(「Raspberry Pi 1 の3.3[V]出力ピンの最大出力電流は、50[mA]である」という情報もありましたが、
 「Raspberry Pi 2やRaspberry Pi 3の最大出力電流は、50[mA]以上ある」という情報もありました。
 (参照:Maximum current on each GPIO pin for Raspberry Pi 3 Model B
 実際に試したところ、100[mA]の電流出力は可能でした。)

トランジスタを用いた、電流制御の回路図は、下図のようになります。



2つの抵抗(R1、R2)の抵抗値について。

【R1】
R1は、電流制御を行うための抵抗です。
直流電流増幅率hFEを、「hFE-IC」グラフより求めます。

使用温度を25[℃]、コレクタ・エミッタ間電圧Vceを1[V]とすると、コレクタ電流Icが100[mA]のとき、直流電流増幅率hFEは、80ほど。
トランジスタのベース電流Ibとして流すべき電流値は、
Ib = Ic / hFE = ( 100 * 10 ^ -3 ) / 80 = 1.25 * 10 ^ -3 [A] = 1.25[mA]
ベース・エミッタ間電圧Vbeを、「Ib-Vbe」グラフより求めます。

使用温度を25[℃]とすると、ベース電流Ibが1.25[mA]のとき、ベース・エミッタ間電圧は、コレクタ電流Icが100[mA]のとき、0.6[V]ほど。
抵抗R1に流れる電流I2は、 コレクタ電流Icと同じなので、
I1 = Ic = 1.25 [mA]
抵抗R1に流れる電圧V1は( ディジタル出力電圧 - ベース・エミッタ間電圧 ) なので、
V1 = 3.3 - 0.6 = 2.7 [V]
よって、抵抗R1の値は、
R1 = V1 / I1 = 2.7 / ( 1.25 * 10 ^ -3 ) = 2.16 * 10 ^ 3 [Ω] = 2.16 [kΩ]
2.16kΩに近く入手しやすい抵抗として、2.2kΩ抵抗を使用します。

【R2】
R2は、赤外線LEDに、100[mA]、1.35[V]の電気を流すための抵抗です。
コレクタ・エミッタ間電圧Vceを、「Ic-Vce」グラフより求めます。

ベース電流Ibが1.25[mA]、コレクタ電流Icが100[mA]のとき、コレクタ・エミッタ間電圧Vceは、1.0[V]ほど。
抵抗R2に流れる電圧V2は ( 出力電圧 - 赤外線LED電圧 - コレクタ・エミッタ間電圧 ) なので、
V2 = 3.3 - 1.35 - 1.0 = 0.95
抵抗R2に流れる電流I2は、コレクタ電流Icと同じなので、
I2 = Ic = 100 [mA] = 100 * 10 ^ -3
よって、抵抗R2の値は、
R2 = V2 / I2 = 0.95 / ( 100 * 10 ^ -3 ) = 9.5 [Ω]
R2として、9.5Ωに近く入手しやすい抵抗として、10Ω抵抗を使用します。

作成したプログラムは、ボタンを押すと、取得したリモコン信号を送信します。

部品表

部品名 数量 商品名 参考価格
赤外線LED 1 高輝度赤外線LED OSI5FU5111C-40 5個100円
10Ω抵抗 1 カーボン抵抗(炭素皮膜抵抗) 1/6W 10Ω 100本100円
NPNトランジスタ 1 トランジスタ2SC1815GR 20個200円
2.2kΩ抵抗 1 カーボン抵抗(炭素皮膜抵抗) 1/6W 2.2kΩ 100本100円
プッシュスイッチ 1 タクトスイッチ 1個10円
10kΩ抵抗 1 カーボン抵抗(炭素皮膜抵抗) 1/6W 10kΩ 100本100円
Raspberry Pi 1 Raspberry Pi 3 Model B 6,300円
ブレッドボード 1 EIC-801 250円
ジャンパーワイヤ 適量 ジャンパーワイヤ(オス-メス) 10本300円

接続例

送信ボタンの入力ピンとして、GPIO 24 を使用し、
赤外線LEDの出力ピンとして、GPIO 23 を使用した場合の接続例

Wiring Pi のインストール

Raspberry Pi に Wiring Pi をインストールしてない場合は、まず、Wiring Pi をインストールします。

Wiring Pi のインストール

プログラムファイルの作成

「/home/pi/work/wiringpi」フォルダに、「irsender.c」というファイル名で、以下の内容のファイルを作成します。

実行ファイル作成

コンパイルし、実行ファイルを作成します。
以下のコマンドを実行します。

実行

作成した実行ファイルを実行します。

プッシュボタンを押すと、リモコン信号が送信されます。

Ctrl + C
で終了します。

ダウンロード

サンプルスクリプトファイル