回路を結線するときに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」をインストール |
---|
$ 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 #終了する |