銀の弾丸

プログラミングに関して、いろいろ書き残していければと思っております。

ラズパイにシャットダウンボタンを付けました

買っててよかったブレッドボード。

↑これで一通りそろいますね。


f:id:takamints:20150613163317p:plain

ブレッドボードに会社の人から頂いたタクトスイッチを乗せ、ジャンパー線でラズパイのGPIOとつないだら、回路(というほどのものではないですが)は完成。 ソフト側では、スイッチ入力を監視して、シャットダウンを行うデーモン作って仕込んで出来上がり。

ブレッドボードの配線図やらコードは、全部GitHub(↓)に置いておりますので、ご自由にどうぞ(MIT LICENSE)。

github.com

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

配線図

GPIOの25番からスイッチを接続。もう一方の端子はGNDへ。

  • この図のラズパイは Model B(R2) です。他のモデルの場合は、ピン配置が違うかもしれませんので気をつけてください。
  • GPIOの25を入力ポートとして使用しています。他のポートに変更する場合は、shutdownd.cを直接書き換えてください。
  • とりあえずブレッドボードとタクトスイッチを使っていますが、なければGPIOの25とGNDをショートさせてもシャットダウンします。
  • GNDはどのGNDでもかまいません。よく見ると25番のとなりにGNDがありますね。ここに直接付けられるスイッチがあれば良いですね。

その他

サブモジュール

以下のサブモジュールを使用しています。


現物写真

まあ、余計なものがいっぱい乗っていますが、こういう感じでやっています。ジャンパーが足りなくて、涙ぐましい創意工夫とかねw。

f:id:takamints:20150613174525j:plain

まとめと反省、所感・雑感

思った以上に便利でした。気軽に電源を入れられるようになりました。

普段、キーボードもディスプレイもつなげていませんから、今まで電源を切るには ssh で入ってから sudo shutdown -h now とやってたわけですが、スイッチ押すだけで電源が切れる(自動では無理ですが)。今まで、シャットダウンするのが手間で、ちょっと出かけてる間、電源入れっぱなしにしてたとか、ブチッと切った事も何度かありますからね。楽は善。

ライセンスについて

ライセンスは例によって、お手軽な MIT LICENCEですが、サブモジュールとして使用している WiringPi が LGPLv3 ですから、ご留意ください。

デーモン化について

デーモン化については、前回記事のGistを、これまたGitHubのリポジトリに昇格(?)させて利用しています。

ブレッドボードの配線について

配線図は、Fritzingというフリーのツールを使って書きました。便利ですね。

入力はいつもプルダウン

シャットダウンスイッチをつなげている、GPIOの入力ポートは、プルダウンしています。つまりスイッチを押したら LOW レベルが読めるということですね。

チャタ取りとか

とにかく簡単にするために、チャタリング対策はやってませんが、本当はやるべきだと思います。それから、長押しでシャットダウンシーケンス発動とか、同じボタンでキャンセルも、できれば良いなと思っては、います。誤動作などで痛い目にあったり、気が向いたらやるかもしれません。

関連リンク・参考

github.com

takamints.hatenablog.jp


ちょっとリッチなこういう(↓)セットも。

Raspberry Pi電子工作エントリーキット(Economy)
TechShare
売り上げランキング: 2,095