Raspberry Pi 赤外線リモコン(基盤編)
- estoy
- 2021年5月10日
IoTの基盤の一つとして、代表的なものRaspberry Piになると思います。これの良いところは、gpioを通して回路の制御を行えるとともに、基本的にはサーバーであるため、多様なLinuxのソフトウェアも合わせて使えるところだと思っています。
今回はそのメリットを活用して、赤外線のリモコン機能とそのWeb画面を作ったので、この記事では基盤部分のみではありますが、紹介をしていきたいと思います。
1. 下準備
1-1. 回路の組み立て
今回の回路に必要なモジュールは下記になります。赤外線LEDと赤外線受信モジュールは新規に必須でしたが、ブレッドボードなどは、別にセットで打っていたのを買っていたので、使いまわすことにしました。
【部品一覧】
一通り部品が揃ったら、写真のようにRaspberry Piと各種モジュールの回路を組み上げます。(写真だとわかりづらいですが、私はここのサイトの回路図を参考に組み上げました。)
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に記載されていますので気になる方は、ファイルの中を確認してみてください。)
2-2. 赤外線LEDからの送信
ここまで準備できたら、ようやくRaspberry Piから赤外線を送れるようになります。
python irrp.py -p -g26 -f file switch:on
コマンドで、赤外線LEDから生成した内容を送信できますので、操作したい機器に向けて試してみてください。うまくいくと、下の画像のようにLEDから赤外線が出て、機器が動きます。(コマンドについて、追加補足すると、-p:出力モード
,-g26:出力ピンを26に指定
となっています。)
補足.
- 赤外線LEDの光はとても弱いので、機器に近づけて試してみてください。
- 赤外線LEDが動作しているかは、肉眼では確認できないので、スマホのカメラなどでLEDが光るか見てみてください。(画像のように、少しだけ光ります。すごく分かりずらいですが。。。)
3. 後書き
今回、赤外線リモコンの作成ということで、Raspberry Pi側で赤外線を送信できるようにするところまでを実施しました。構築したのが2019年頃ですが、cronを使った自動化や、Web画面からの動作でも、今も問題なく稼働しており、ちょっとした生活のサポートみたいなことができています。ささいな事でも、自分で作ったもので、生活が便利になるのは面白い経験ですね。
また、Django側で作ったWebからのUI画面については、また後日、書こうかと思いますので、完成したらそちらも見てもらえれば嬉しいです。