Raspberry Pi3で赤外線リモコンを作る
よく耳にするけどラズパイを使ったことがなく、ふとラズパイで何か作ってみようと思い立ち。
そこそこ実用的であろう赤外線リモコンに挑戦してみました。
電子工作とは無縁な初心者向けの内容になります。
用意したもの
全てamazonで購入しました。
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Clear)-Physical Computing Lab
Samsung EVO Plus 32GB microSDHC UHS-I U1 95MB/s Full HD Nintendo Switch動作確認済 MB-MC32GA/ECO 国内正規保証品
よく分からなかったので、初心者向けの電子工作キットを購入していますが、最終的に以下があれば良かったです。
- ラズパイ3
- ラズパイ用電源
- microSDカード
- ブレッドボード
- ジャンパワイヤ
- 赤外線受信モジュール
- 赤外線LED
- 200 Ω 抵抗
赤外線受信をする
配線
工作キットの提供サイトの情報をそのまま利用します。
http://osoyoo.com/ja/2016/12/15/raspberrypi-ir-remote/
LIRCのインストール
LIRCとはLinuxで赤外線を操作可能にするパッケージです。
sudo apt-get install lirc
ラズパイでLIRCを利用するための設定
/boot/config.txtを以下のように修正します。
ラズパイが赤外線のデバイスを認識する為に必要なようです。
修正前
# dtoverlay=lirc-rpi
修正後
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
GPIO18が赤外線受信PINになり、GPIO17が赤外線送信PINになります。
ラズパイを再起動します。
sudo reboot
LIRCの起動
/etc/lirc/lirc_options.confを以下のように修正します。
[lircd] nodaemon = False driver = default device = /dev/lirc0
lircdを再起動します。
lircdは赤外線の送受信を行うプログラムです。
sudo systemctl restart lircd.service
赤外線受信のテスト
以下のコマンドを実行することで、赤外線を受信できているかを確認できます。
受信モジュールに向かって赤外線を送信するとコンソール上にコードが出力されます。
mode2 -d /dev/lirc0 --driver default
赤外線受信内容の記録
以下のコマンドを実行することで赤外線受信の内容を記録することができます。
irrecord -f -d /dev/lirc0 --driver default ~/lircd.conf
プログラムの案内に従い、赤外線の内容を記録します。
何の操作なのか分かる名前を設定して、赤外線を受信させるということを繰り返します。
lircdの設定ファイルが作成されます。
設定ファイルをLIRCの設定に追加します。
sudo cp ~/lircd.conf /etc/lirc/lircd.conf
赤外線送信をする
配線
工作キットの提供サイトのLED点灯の配線を参考にして、赤外線LEDの配線をします。
http://osoyoo.com/ja/2016/04/07/use-led-to-test-gpio-pin/
GPIO17が赤外線送信のピンなので、そこだけ変更します。
赤外線送信をする
赤外線送信の設定を以下のコマンドで確認します。
$ irsend LIST "" "" TV
$ irsend LIST TV "" 0000000000000001 KEY_PLAY
赤外線の送信を以下のコマンドで行います。
irsend SEND_ONCE TV KEY_PLAY
感想
一連の流れを書くと何のことはない感じですが、systemdとか知らずにコマンド実行レベルで悪戦苦闘してました。
そこらへんが事前に分かっていれば、すんなり行ったはずです。
これでTVのON/OFFがリモートでできるようになりました。
本記事の内容を改良しました
参考情報
http://osoyoo.com/ja/2016/12/15/raspberrypi-ir-remote/
http://osoyoo.com/ja/2016/04/07/use-led-to-test-gpio-pin/