Raspberry Pi に赤外線LED・赤外線受光モジュールを付けて、Raspberry Pi を学習リモコン・スマートリモコン化します。そして、Raspberry Pi を AWS IoT 連携させて Alexa で部屋の照明を操作します。
目次
前回は Raspberry Pi と AWS IoT を連携させて Alexa で LED を操作する方法を説明しました。
今回は、前回に続き、Raspberry Pi に赤外線LED・赤外線受光モジュールを付けて、Raspberry Pi を学習リモコン・スマートリモコン化させることで、部屋の照明を Alexa で操作できるようにします。
必要な部品と配線
必要な部品
Raspberry Pi を学習リモコン化させるために、必要な部品は次のとおりです。
- 赤外線リモコン受光モジュール
OSRB38C9AA など、3.3V で動くモジュールが必要です。 - 赤外線LED
OSI5FU5111C-40 など、何でも良い気がします。 - Nch MOSFET
2N7000 など、数100mA ~ 数A 流せる Nch MOSFET が欲しいです。 - 抵抗
約10kΩ×2本、約100Ω、10~100Ω が必要です。約10kΩ はプルアップ・プルダウン用、約100Ωは MOSFET のゲート保護用、10~100Ω は LED の電流制限抵抗です。 - 電解コンデンサ
約100μF くらい。電流制限抵抗をあまり小さな値にしてしまうと、LED ON時に大電流が流れて Raspberry Pi の電源供給能力を超えてしまう可能性があるので気休め程度に私は付けました。
回路図と配線図
Raspberry Pi Zero を使った場合の例です。
GPIO 22 に赤外線リモコン受光モジュールを、GPIO 27 に赤外線LEDスイッチング用のMOSFETを繋いでいます。
MOSFET のピン配列はものによって違ったりするので、気をつけてください。
この回路図・配線図では、赤外線 LED の電流制限抵抗は 10Ω、さらに電源は 5V から取ってきています。明らかに LED・MOSFET(2N7000)の定格オーバーです。良い子は真似しないでください。私は「Raspi Zero は 1000円しないし最悪壊れても仕方ない」と思ってやっています。
Raspberry Pi の学習リモコン化に必要なライブラリをブチ込む
学習リモコンで用いるライブラリは、前回同様 pigpio です。インストール方法・サービスの起動有効化方法をおさらいしておきます。
sudo apt install pigpio
pip3 install pigpio
sudo systemctl start pigpiod
sudo systemctl enable pigpiod
次に、pigpio Library のページから IR Record and Playback をダウンロードします。
curl http://abyz.me.uk/rpi/pigpio/code/irrp_py.zip | zcat > irrp.py
赤外線リモコン信号の学習とテスト
学習
では、部屋の照明のリモコンを手に取ってください。次のコマンドを入力してみましょう。
python3 irrp.py -r -g22 -f codes light:on
Press key for 'light:on'
と言われたら、リモコンを赤外線リモコン受光モジュールに向けて「点灯」ボタンを押します。その後「もう一度押せ」と言われるのでその通りにします。
以上で、学習は終わりです。続いて、「消灯」も学習させてみましょう。
python3 irrp.py -r -g22 -f codes light:off
操作手順は先ほどと同様です。
発出
配線にミスが無く、上手く学習できていれば、次のコマンドで「点灯」できるはずです。
python3 irrp.py -p -g27 -f codes light:on
次のコマンドで「消灯」できるはずです。
python3 irrp.py -p -g27 -f codes light:off
コマンドの説明
学習コマンドを一般的に書き表すと次のようになります。
python3 irrp.py -r -g<GPIO Number> -f <File Name> <Label>
<File Name>
は拡張子なしのファイル名を指定します。例えば、codes
と指定すると学習結果は codes.json
に保存されます。<Label>
は好きに決められるので、分かりやすいものを付けましょう。<GPIO Number>
は赤外線リモコン受光モジュールを繋いだ GPIO 番号を指定します。
発出コマンドを一般的に書き表すと次のようになります。
python3 irrp.py -p -g<GPIO Number> -f <File Name> <Label>
学習コマンドとほとんど変わらないです。<GPIO Number>
は赤外線LED(スイッチング用のMOSFET)を繋いだ GPIO 番号を指定します。
AWS IoT・Alexa Smart Home Skill と組み合わせる
Raspberry Pi のプログラム
前回の記事のプログラムを一部改変して、Alexa で 部屋の照明を ON/OFF してみます。先ほどの学習結果を使います。
プログラムの説明
今回のプログラムでいちばん重要なのは次の一行でしょう。
subprocess.call('{} irrp.py -p -g27 -f codes light:on'.format(sys.executable) , shell=True)
先ほど使用した irrp.py
を Python スクリプトから実行しています。irrp.py
も Python スクリプトなんだからわざわざ Subprocess 使わなくても……と思うかも知れません。そのとおりです。が面倒なのでこうしてしまいました。
Alexa Skill (AWS Lambda) のプログラム
以下がそのプログラムです。前回 や ESP8266 の回 で用いたプログラムと大きくは変わりません。
動かしてみるとこんな感じです。