茱萸note

電子工作の備忘録と旅行の記録

Alexa AWS IoT Raspberry Pi スマートリモコン 電子工作

Raspberry Pi をスマートリモコン化! Alexa で部屋の照明を操作する【Alexa×Raspberry Pi その2】

投稿日:

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 の回 で用いたプログラムと大きくは変わりません。


動かしてみるとこんな感じです。

-電子工作
-, , , , ,


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【Ubuntu】【Python】virtualenvを使う

UbuntuでPythonのパッケージ管理をしやすくするためにvirtualenvを導入します。

AVR32を使う

Atmel製のマイコン「AVR32」を使ってみた感想です。

【Emacs万歳!】WSLでEmacsを使う

WSLでEmacsを使うことを強要されている人々に向けて書きます。GUI版Emacsを動かす方法も説明します。

STM32F042でAVRプログラマを作る

秋月で販売しているSTM32F042K6T6でAVRプログラマを作ります.

Alexa で ESP8266 を操作する方法【Alexa×Arduino 検討】

Alexa を搭載した Amazon Echo 等を使って ESP8266(Arduino)を操作する方法を検討します。