ラズパイにシャットダウンボタンを付けました
買っててよかったブレッドボード。
売り上げランキング: 102,134
↑これで一通りそろいますね。
ブレッドボードに会社の人から頂いたタクトスイッチを乗せ、ジャンパー線でラズパイのGPIOとつないだら、回路(というほどのものではないですが)は完成。 ソフト側では、スイッチ入力を監視して、シャットダウンを行うデーモン作って仕込んで出来上がり。
ブレッドボードの配線図やらコードは、全部GitHub(↓)に置いておりますので、ご自由にどうぞ(MIT LICENSE)。
README 抜粋
RapidShutdown - Raspberry Pi Shutdown Daemon
ラズパイのGPIOに接続したボタンからシャットダウンを行うデーモンです。
ボタンは長押しとかではありません。押した瞬間に
shutdown -h now
します。当然のごとく、キャンセルはできません。ビルドとセットアップ
以下を実行してビルドして自動起動のデーモン shutdownd を設定します。
git clone https://github.com/takamin/RapidShutdown.git cd button-down ./init-submodules.sh mkdir build cd build cmake .. make cd .. ./setupdatemon.sh配線図
- この図のラズパイは Model B(R2) です。他のモデルの場合は、ピン配置が違うかもしれませんので気をつけてください。
- GPIOの25を入力ポートとして使用しています。他のポートに変更する場合は、shutdownd.cを直接書き換えてください。
- とりあえずブレッドボードとタクトスイッチを使っていますが、なければGPIOの25とGNDをショートさせてもシャットダウンします。
- GNDはどのGNDでもかまいません。よく見ると25番のとなりにGNDがありますね。ここに直接付けられるスイッチがあれば良いですね。
その他
サブモジュール
以下のサブモジュールを使用しています。
- daemonize - Raspberry Pi デーモン化ライブラリ
- WiringPi - Gordon's Arduino wiring-like WiringPi Library for the Raspberry Pi (LGPLv3)
現物写真
まあ、余計なものがいっぱい乗っていますが、こういう感じでやっています。ジャンパーが足りなくて、涙ぐましい創意工夫とかねw。
まとめと反省、所感・雑感
思った以上に便利でした。気軽に電源を入れられるようになりました。
普段、キーボードもディスプレイもつなげていませんから、今まで電源を切るには ssh で入ってから sudo shutdown -h now
とやってたわけですが、スイッチ押すだけで電源が切れる(自動では無理ですが)。今まで、シャットダウンするのが手間で、ちょっと出かけてる間、電源入れっぱなしにしてたとか、ブチッと切った事も何度かありますからね。楽は善。
ライセンスについて
ライセンスは例によって、お手軽な MIT LICENCEですが、サブモジュールとして使用している WiringPi が LGPLv3 ですから、ご留意ください。
デーモン化について
デーモン化については、前回記事のGistを、これまたGitHubのリポジトリに昇格(?)させて利用しています。
ブレッドボードの配線について
配線図は、Fritzingというフリーのツールを使って書きました。便利ですね。
入力はいつもプルダウン
シャットダウンスイッチをつなげている、GPIOの入力ポートは、プルダウンしています。つまりスイッチを押したら LOW レベルが読めるということですね。
チャタ取りとか
とにかく簡単にするために、チャタリング対策はやってませんが、本当はやるべきだと思います。それから、長押しでシャットダウンシーケンス発動とか、同じボタンでキャンセルも、できれば良いなと思っては、います。誤動作などで痛い目にあったり、気が向いたらやるかもしれません。
関連リンク・参考
ちょっとリッチなこういう(↓)セットも。
売り上げランキング: 2,095
売り上げランキング: 105