節約プログラマー雑記

Raspberry Pi 赤外線リモコン(基盤編)

IoTの基盤の一つとして、代表的なものRaspberry Piになると思います。これの良いところは、gpioを通して回路の制御を行えるとともに、基本的にはサーバーであるため、多様なLinuxのソフトウェアも合わせて使えるところだと思っています。

今回はそのメリットを活用して、赤外線のリモコン機能とそのWeb画面を作ったので、この記事では基盤部分のみではありますが、紹介をしていきたいと思います。

1. 下準備

1-1. 回路の組み立て

今回の回路に必要なモジュールは下記になります。赤外線LEDと赤外線受信モジュールは新規に必須でしたが、ブレッドボードなどは、別にセットで打っていたのを買っていたので、使いまわすことにしました。

【部品一覧】

一通り部品が揃ったら、写真のようにRaspberry Piと各種モジュールの回路を組み上げます。(写真だとわかりづらいですが、私はここのサイトの回路図を参考に組み上げました。)

rasp_led.jpg

1-2. ソフトウェア(pigpio, irrp.py)のインストール

モジュールの準備ができたら、今度はPythonでRaspberry Piから赤外線LEDをコントロールするための設定を進めていきます。

赤外線LEDを制御するにあたり、Raspberry PiのGPIOと呼ばれる端子を使っていきます。これをPythonから制御したいため、pigpioと呼ばれるソフトウェアをsudo apt install pigpio python3-pigpioコマンドにてインストールします。

コマンドが正常終了すると、GPIOを制御するためのデーモンとPythonのライブラリがインストールされます。デーモンは起動しておく必要があるため、sudo systemctl enable pigpiodコマンドで自動起動を有効にするとともに、sudo systemctl start pigpiodコマンドでデーモンを起動しておきます。

ここまで完了したら、最後に赤外線をコントロールするためのモジュールをインストールすれば完了になります。いくつか使える機能があるみたいですが、今回私はirrp.pyと呼ばれるモジュールを利用することにしました。
イギリスの方が作ったモジュールみたいですが、インターネット上に公開されていますので、curl http://abyz.me.uk/rpi/pigpio/code/irrp_py.zip | zcat > irrp.pyコマンドを実行して、ローカルにirr.pyを作成できたら準備完了になります。

2. 赤外線LEDのコントロール

2-1. 赤外線の解析

基盤の準備ができたら、送りたいリモコンの赤外線の情報を取得します。家電機器は受信した赤外線の波長によって、処理が組み込まれているとのことなので、それぞれのリモコンのボタンごとに発生している赤外線をRaspberry Piでも送信できるようにする必要があります。そこでダウンロードしたirrp.pyを使って、赤外線の解析を行います。

python irrp.py -r -g14 -f file switch:onのようにコマンドを実行すると、下の画像のように「Recording」となり、赤外線の読み取りが開始しますので、赤外線モジュールに向けて、リモコンの赤外線を飛ばして、ボタンの内容を記録させます。

上のコマンドのオプションについて補足すると、-r:読み取りモード-g14:読み取りのピンを指定(今回は14)-f:出力するファイル名を指定(今回はfile)switch:on:登録する赤外線の名称(今回はswitch:on)という風になっています。(他にもオプションについて、irrp.pyに記載されていますので気になる方は、ファイルの中を確認してみてください。)

irrp_r.png

2-2. 赤外線LEDからの送信

ここまで準備できたら、ようやくRaspberry Piから赤外線を送れるようになります。

python irrp.py -p -g26 -f file switch:onコマンドで、赤外線LEDから生成した内容を送信できますので、操作したい機器に向けて試してみてください。うまくいくと、下の画像のようにLEDから赤外線が出て、機器が動きます。(コマンドについて、追加補足すると、-p:出力モード,-g26:出力ピンを26に指定となっています。)

補足.

  • 赤外線LEDの光はとても弱いので、機器に近づけて試してみてください。
  • 赤外線LEDが動作しているかは、肉眼では確認できないので、スマホのカメラなどでLEDが光るか見てみてください。(画像のように、少しだけ光ります。すごく分かりずらいですが。。。)
rasp_led_on.jpg

3. 後書き

今回、赤外線リモコンの作成ということで、Raspberry Pi側で赤外線を送信できるようにするところまでを実施しました。構築したのが2019年頃ですが、cronを使った自動化や、Web画面からの動作でも、今も問題なく稼働しており、ちょっとした生活のサポートみたいなことができています。ささいな事でも、自分で作ったもので、生活が便利になるのは面白い経験ですね。

また、Django側で作ったWebからのUI画面については、また後日、書こうかと思いますので、完成したらそちらも見てもらえれば嬉しいです。