その2ではRaspberry piの基本設定と日本語入力設定、外部へのメール送信設定までを書きました。
で、その続きを書こうとしたらトラブル続出。
こっちのセットアップが終わって、次のセットアップしたら、こっちが動かなくなったとか色々。ソフトのバージョンの問題とCPUの世代の問題に、いい加減な半田付けのツケが回ってハードのトラブルもあって訳がわからん状態に。
デスクトップも使って設定したいし、動作が遅いのも嫌だからとRaspberry Zeroで動かす予定のセットアップをRaspberry 3で行っていたのもいけませんでした。ZeroはCPUの世代が古いのでサポートされないものがあって、Zeroに載せ替えたら動かなくなったり。
と言うことでまずはZeroに載せる予定ならば「Node.js」の問題から。
Zeroでは最新の Node.js がサポート外になりました。そのためNode.js絡みの問題が発生します。私の場合、NODE-RED のインストールが出来なくなりました。で、こちらは開発元(の有志なのかな?)が未公認のZeroでも動く最新版を公開しています。って何のこっちゃ?
社内的には未公認だけど、ユーザーから見りゃ半公認って感じですかね。
ここに元ネタがありますが、基本は以下のコマンドを入れれば良いだけ。
とりあえずは古いものを削除します。
$ which node でnodeのインストール先を調べて、
$ sudo rm -rf /usr/bin/node
$ sudo rm -rf ~/.npm ついでにこっちも
でインストールは
$ wget https://nodejs.org/dist/v10.17.0/node-v10.17.0-linux-armv6l.tar.xz
$ tar -xvf node-v10.17.0-linux-armv6l.tar.xz
$ sudo cp -R node-v10.17.0-linux-armv6l/* /usr/local/
$ rm -rf node-v10.17.0-linux-armv6l node-v10.17.0-linux-armv6l.tar.xz
最初のURLはそのうちにバージョンが進めばまた変わる(サポートしてくれるなら)ので、ちゃんとトレースしておくべきなんでしょうけど、まあその時はその時。というよりZeroのCPUのバージョンアップを期待していたりして。(笑)
しかしたったこれだけの事にかなり労力を使ってしまいました。
多分他の作業に先立って行えば楽なのではないかと・・・ 私はトラブってから対応したのですけど。
で、Node.js が片付いたので、赤外線リモコンに移りましょう。
こっちのハードウェアの話などは昔の情報のままで良いので割愛。
で、設定の方は少し変わります。
英語ですがこのサイトが詳しくて分かりやすかったです。
私も苦手な英語ですが、私以上に苦手な方もいる様なのでとりあえず手順に沿って必要な箇所だけ書き出させて頂きます。
まずは lirc のインストール。原文では古いapt-getになってますがここではaptにしておきます。
$ sudo apt install lirc
インストールはこれだけ。次に設定ですが、
$ sudo nano /boot/config.txt 別にnano でなくても好きなエディタで編集してください。
で、以下の部分コメント行のコメント(#)を外します。
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
なお、17と18は原文では逆に設定し直していますが実際に送受信に使うピン番号(BCMの番号)を指定してください。
私は22と23にしています。物理ピン番号では15、16番、GPIO番号だと3と4になりますね。
ちなみに私の場合17と18はサーボモーター用に使っています。問題がない限り先に製作したサーバーで使用した番号を使って、混乱を避ける様にしています。
次がlircのオプション指定。
$ sudo nano /etc/lirc/lirc_options.conf
で次の部分を修正します。
#driver = devinput
#device = auto
driver = default
device = /dev/lirc0
上の2行をコメントアウトして、下の2行を追加します。
$ sudo reboot で再起動すればlircが利用可能になります。
$ sudo systemctl status lircd
コマンドでステータスが見れる様になります。
で、とりあえず赤外線リモコンのコードを読み込んでみます。
$ sudo mode2 -m -d /dev/lirc0
でここで以下の様なエラーに見舞われた方(参考にしているサイトの方も私もエラーが出ました)はとりあえず /boot/config.txt を編集して以下の行をコメントアウトしてください。
#dtoverlay=gpio-ir-tx,gpio_pin=18
$ sudo mode2 -m -d /dev/lirc0
最後にこのファイルを /etc/lirc/lircd.conf.d/適当なファイル名.conf にコピーしてやります。
後もう一つ、同じフォルダに devinput.lircd.conf というファイルがあるのでこの最後の拡張子を適当なものに変更しておきます。
ここのフォルダにある .conf というファイルは全て読み込まれる様です。
で、上記の例だと最初にあるName である TV と各生データの名前、on を組み合わせて送信に使用します。
$ irsend SEND_ONCE TV on
という感じですね。
おっと、受信時にエラーを起こして/boot/config.txt を編集した方は元に戻してリブートするのをお忘れなく。
また編集していなかった方は lircd の再起動をお忘れなく。
いっそリブートしたほうが早いかな?
追記:
忘れかけておりましたが、私は時々時間指定でコマンドを発行します。
通常は Crontab で設定すれば良いのでしょうが、私の場合 Crontab で毎日の日の出・日の入り時刻をチェックし、その日の入り時刻をベースにしたコマンドを実行したりしています。
そのために必要なコマンドが「at」コマンドですが、Rspberry pi では標準ではインストールされておりません。
なので、
$ sudo apt install at
でインストールしています。
普通の方にはあまり縁のない話とは思いますが、備忘録として。
先ほどもatコマンド叩いて「あれ? 動かない」ってなったもので。
続きはまた。
コメント
コメントを投稿