【Raspberry Pi】赤外線リモコンにする方法

こんにちは! けいです.

今回は,Raspberrypiを家電制御に使われる,赤外線リモコンにする方法についてまとめていきたいと思います.

必要なもの

Raspberrypiに加え,赤外線を受信する回路,赤外線を送信する回路を組む必要があります.

Raspberrypi本体

created by Rinker
Raspberry Pi
¥7,282 (2021/04/14 19:41:15時点 Amazon調べ-詳細)

私は「Raspberry Pi3B+」のモデルで作成しましたが,これから購入を検討する方は4を買うことをお勧めします.

赤外線受信・送信回路に必要なもの

赤外線LED・赤外線受光モジュール

赤外線を受信するために,受光モジュールが必要です.
また,送信するために赤外線LEDが必要です.

下のセットがAmazonではお得なので,私はこのセットを購入しました.

抵抗・ジャンパワイヤー

これらが一つあれば便利です.

回路構成

受信回路部分

赤外線受光モジュール(VS1838B)のデータシートより,
下の画像の左側のピンから,信号線,GND,VCCとなっています.

送信回路部分

赤外線LEDの型番が分からなかったため,一般的な赤外線LEDの定格である20mAの半分の10mAを流すことを想定して,330Ωに設定しました.

全体像

受光モジュールの黄色の信号線はGPIO18
赤外線LEDの+側をGPIO17

ソフトウェア

動作環境

ハードウェアOSKernel
Raspberry Pi 3B+Raspbian GNU/Linux 10 (buster)5.4.51

また,python3.7を使用しました.

必要なソフトウェアのインストール

pigpioのインストール

RaspberryPiのGPIOを「rpigpio」で制御します.
なのでまだインストールしていない方は以下のコマンドでインストールしてください.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install pigpio python3-pigpio

IR Record and Playbackのダウンロード

また,pigpioの作成者である人が作ったIR Record and Playbackを用いて,赤外線の信号を解析して受信し,送信も行います.

LIRCというものもありますが,悪名高いので使いません.

上記の「IR Record and Playback」を下のコマンドでインストールします.

$ wget http://abyz.me.uk/rpi/pigpio/code/irrp_py.zip

wgetコマンドは,URLを指定してダウンロードすることができるコマンドです.

次に,zipファイルを解凍する下のコマンドを入力します.zcatはzipファイルの中身を参照するコマンドで,その出力先をirrp.pyというpythonファイルにリダイレクトするコマンドです.

$ zcat irrp_py.zip > irrp.py

動作させる

GPIOの初期化

まず,下のコマンドでrpigpioを使えるようにします.

$ sudo pigpiod

そして,GPIOに機能を割り当てます.
コマンド上でgpioを設定することができます.

$ echo 'm 17 w   w 17 0   m 18 r   pud 18 u' > /dev/pigpio
  1. ‘m 17 w’  gpio17を出力として設定
  2. ‘w 17 0’ gpio17に0(LOW)を出力
  3. ‘w 18 r’ gpio18を入力として設定
  4. ‘pud 18 u’ gpio18をプルアップする

これらのコマンドはpigpioのwebサイトから見ることができます.

赤外線通信を学習

先ほどインストールした「irrp.py」を用いて,赤外線通信を学習します.
手元に学習させたいリモコンを用意してください.
※エアコンの赤外線通信は特殊で,今回の方法では学習できません.
今回の方法では,照明やテレビの赤外線通信を対象としています.

次のコマンドで,pythonプログラムを実行します.

$ python3 irrp.py -r -g18 -f codes 1 2 3

irrp.py以降の命令は,このプログラムをコマンド上で完結できるように指定されたオプションです.

  1. ‘-r’ レコード用として設定
  2. ‘-g18’ IRレシーバに繋ぐgpioを指定
  3. ‘-f codes’ 赤外線のコードを記録しておくファイル指定(codesというファイルに保存される)
  4. ‘1 2 3’ 1,2,3という名前で順にコードを3つ覚える

という意味です.’1 2 3’の部分で連続して何個かのコードを覚えることができます.

他にも色々なオプションがあるので,気になる方は「irrp.py」の中身を覗いてみて下さい.

上のコードを実行して,コマンドに出てくる指示に従って,リモコンのボタンを押して学習させます.

こんな感じで,一つの記録に対して2回リモコンのボタンを押して,計6回の読み取りが生じます.

Raspberry Piをリモコン化

いよいよRaspberry Piをリモコンにする準備ができたので,早速下のコマンドを実行します.

$ python3 irrp.py -p -g17 -f codes 2

先ほど同様,オプションで指定します.

  1. ‘-p’ プレイバックを指定.ここのオプションは’-r’か’-p’
  2. ‘-g17’ gpio17をIR送信機に接続
  3. ‘-f codes’ 送信するコードを格納するファイル
  4. ‘2’ 先ほど記録した信号の名前を渡す

受信させたい家電のセンサーにLEDを向けてコマンドを実行してみて下さい.

実際に動作させた様子