とりあえず,システムを最新の状態にする.
# apt-get update
lirc をインストールする.
# apt-get install lirc
ここまでは問題なし.
Raspberry pi への導入事例を参考に,/etc/modules を編集.
lirc_dev
lirc_rpi gpio_in_pin=17
以上を追記し,reboot.
モジュールのロードを確認.
# lsmod | grep lirc
lirc_dev 10391 0
rc_core 17576 lirc_dev
あれ? 本当は lirc_rpi なんたらという行が見つからなくてはいけない.
/dev/lirc0 ができているかを調べると…
# ls /dev/lirc*
なにもない.
つまり,lirc の組み込みに失敗している.
あちこち調べると,firmwareを更新している事例がある.とりあえず更新しておこう.
# wget http://goo.gl/1B0fJ -O /usr/bin/rpi-update
# chmod +x /usr/bin/rpi-update
# rpi-update
firmware の更新はできた.
# reboot
しかし,/dev/lirc* はできない.
dmesg を調べる.
# dmesg | grep lirc
gpio chip not found! というメッセージが見つかる.
ここで悩んで,とりあえず,システムを upgrade しておこうと思った.
# apt-get upgrade
後になってみると,この,upgrade が話をややこしくしたようだ.なので,ここからはこれを実行した場合の記録なのだが,upgrade していないときはいろいろと違うかもしれない.
結局,upgrade しても同じエラーが出てしまう.
で,あちこちググってみると,あるバージョン以降の kernel では /boot/config.txt に記述しないとドライバが読み込まれないらしいことがわかった.つまり,/etc/modules に書いたり,modprobe ではだめらしい.upgrade 前でも出ていたので,おそらく 3.12.x でもこうする必要があるのだろう.
# nano /boot/config.txt
dtoverlay = lirc-rpi
という1行を追加.
reboot.
# dmesg | grep lirc
lirc_rpi: driver registered!
が見つかるので,読み込みには成功した模様.
# lsmod | grep lirc
lirc_rpi 8416 0
lirc_dev 11060 1 lirc_rpi
rc_core 23626 1 lirc_dev
# ls /dev/lirc* -la
crw-rw---T 1 root video 247, 0 Jan 1 1970 /dev/lirc0
デバイスはできている.
先行事例を見ると,GPIOピンへの割り当てを以下のようにしてチェックしている.
# mount -t debugfs debugfs /sys/kernel/debug
# cat /sys/kernel/debug/gpio
すると,
gpio-16 (ACT ) out hi
gpio-22 (sysfs ) out lo
gpio-25 (sysfs ) out lo
ここに,lirc の押さえた input 用と output 用のピンが表示されるはずなのだが,出ない.
/etc/modules の記述と /boot/config.txt の記述が矛盾してるとかのせいかもしれないと思い,/etc/modules の記述を削除して,reboot するも,特に変わらず.
/boot/config.txt にはピンへの割り当ても記述できるようなので,以下のように変更.
dtoverlay=lirc-rpi, gpio_in_pin=14, gpio_out_pin=22
デフォルトでは,17 を in,18 を out に割り当てる模様.
debugfs のマウントではやはり何も出ないが,とりあえず GPIO 14 (P8) に受光モジュールを接続してみる.
使用したモジュールは Rohm の RPM7138-R (マルツから通販で).これは 5 V 駆動タイプ.一方,Raspberry pi の GPIO は 3.3 V で,入力は 5 V-tolerant ではないとあるので,出力を少し抑えないとまずそう.図のように,出力に39kΩの抵抗を入れて分圧されるようにしてみた.
最初はブレッドボードで実験回路を接続.
この状態で,/dev/lirc0 を見てみることに.
# mode2 -d /dev/lirc0
リモコンから赤外線をモジュールに向けてみると,標準出力に信号パターンが返ってきている.つまり,デバイスとしては認識・動作していて,debugfs には mount できなくなっていたということのようだ.
以上で,lirc は導入でき,また,リモコンからの信号を Raspberry pi で捉えるところまではできた.
(続く)
0 件のコメント:
コメントを投稿