シャットダウンボタンがあると都合がいい


回路を結線するときにVNCでシャットダウンするのが面倒なので愛読の「ラズベリー・パイで遊ぼう 林和孝著 P263」を参考にしてラズパイ単体でシャットダウンできるようにした。

本では自作パソコンで使うスイッチを使用しているが、いつもブレッドボードを使っているのでタクトスイッチを使うことにした。

回路を結線する

Pin 15とPin17に接続したがどこでもOK

シャットダウンボタンを付ける


プログラムを書く

タクトスイッチを押すとラズパイの緑LEDが点滅をはじめて 3秒以上押し続けるとシャットダウンが実行、2秒緑LEDが点灯したら 安心して電源を抜く。(赤LEDは点灯したままで抜いて良い)

shutdown.shで保存
#!/bin/sh
PORT=22               # 使用するGPIOポート
PUSHTIME=3            # 3秒でシャットダウンを実行する

## GPIOをinモードにする
gpio -g mode $PORT in
gpio -g mode $PORT down

## ACT LED制御のサブルーチン
set_led_mode () {
  echo $1 > /sys/class/leds/led0/trigger
}
set_led_value () {
  echo $1 > /sys/class/leds/led0/brightness
}

## 3秒間押されるまで待つ
cnt=0
while [ $cnt -lt $PUSHTIME ] ; do
  if [ `gpio -g read $PORT` -eq "1" ] ; then
    cnt=`expr $cnt + 1`
    [ $cnt -eq 1 ] && set_led_mode heartbeat
  else
    [ $cnt -gt 0 ] && set_led_mode mmc0
    cnt=0
  fi
  sleep 1
done

## ACT LEDでシャットダウンの合図をする
set_led_mode none
set_led_value 1
sleep 2
set_led_value 0
set_led_mode mmc0

## シャットダウンの実行
shutdown -h now


プログラムを実行できるようにターミナルで下を実行。

$ chmod 755 shutdown.sh



Supervisorをインストール

ボタンを押したときにシャットダウンするにはこのプログラムが いつも動いていないとできないので自動起動(常駐)することが 必要で下記をインストール。

「Supervisor」をインストール

$ sudo apt-get install supervisor



このプログラムを自動起動させる設定ファイルを作成。

/etc/supervisor/conf.d/shutdown.confというファイルを作成

$ sudo leafpad /etc/supervisor/conf.d/shutdown.conf


下の3行を入力して保存。

 /home/pi に作成したファイルを保存

[program:shutdown]
command=/home/pi/shutdown.sh
user=root


設定を反映するためSupervisorを再起動。

再起動

$ sudo /etc/init.d/supervisor restart



【参考】手動でSupervisorを起動or終了するコマンド。

手動で起動or終了する

$ sudo /etc/init.d/supervisor start        #起動する
$ sudo /etc/init.d/supervisor stop         #終了する


ラズパイの最初のページへ


home
トップ