Raspberry Pi の GPIO に赤外線 LED をつけてリモコンとして使おう。
使ったハードウエア
- Raspberry Pi Model B
- 手元にあるのは、初代の、プラスじゃないやつ。microじゃない標準サイズのSDカードが刺さる。
- Arch Linux が入っている。Raspbian だと若干手順が変わると思われる。
- 赤外線LED
- 赤外線リモコン受信モジュール
- 3.3V で使えるもの。
- Raspberry Pi を送信側として使うつもりであっても、既存のリモコンの信号を分析するには受信モジュールが必要となる。
- トランジスター、抵抗、配線、ブレッドボードとか
参考にしたページ
- Raspberry Pi で赤外線リモコン – 猫ぱーんち!
- 回路を参考にした。というかほぼ同じ回路になった。
- IR remote with LIRC on Raspberry Pi 2 running RuneAudio (ArchLinux)
ネット上のブログ記事の情報は古い場合があるし、そもそも環境が違って(Raspbian vs Arch Linux)参考にならないかもしれない。ネットの情報は参考程度にして、ソフトウエアのマニュアル等を参照するのが大切である。
作ったもの(ハードウエア)
使う GPIO の番号は選択の余地があるが、適当に GPIO17=出力 (LED), GPIO27=受信 とした。
ソフトウエア的な手順
Linux で赤外線リモコンの信号を送受信するための LIRC というソフトウエアがあるらしいのでそれを使う。
1. LIRC をインストールする
Arch Linux のパッケージになっているのでラクチン。
# pacman -S lirc
2. LIRC をロードする
/boot/config.txt
を編集して、 LIRC をロードする。
/boot/overlays/README
を参照。例として lirc が書いてあった。
# nano /boot/config.txt
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=27
を書き加える。
lirc をロードするのに modprobe
を叩いたり /etc/modules
を編集したりは、しない。
(この辺で再起動をかける?)
systemctl start で lircd を起動する。systemctl enable するとラズパイの起動時に自動で起動してくれるはず。
# systemctl start lircd
3. 受信テスト
mode2 コマンドで、受信したものを吐かせる。
# mode2 -d /dev/lirc0
適当にリモコンを向けて、
space (数字)
pulse (数字)
の羅列が出てきたら多分OK。
4. リモコンを登録
irrecord コマンドを使い、リモコンの信号をファイルに記録する。
# irrecord -n -d /dev/lirc0 lircd.conf
メッセージの指示に従う。
途中で、 Enter name of remote と聞かれたので、 homeceiling と入力した。出力ファイル名は homeceiling.lircd.conf となった。
Enter name of remote (only ascii, no spaces) :homeceiling Using homeceiling.lircd.conf as output filename
個別のボタンを登録する段になって Something went wrong: Cannot decode data
といわれ、最後に Try using the -f option.
と出てきたので、 -f
オプションをつけて再実行した。
# irrecord -n -f -d /dev/lirc0 lircd.conf
homeceiling.lircd.conf
ができた。
# cp homeceiling.lircd.conf /etc/lirc/lircd.conf.d/
5. 信号を送る
irsend SEND_ONCE (リモコン名) (ボタン名)
で信号を送れる。
# irsend SEND_ONCE homeceiling lighter