Raspberry Pi にREBOOTとSHUTDOWNのSWを付ける

RaspberryPiでEchoLinkが何とか動きそうだが
ハングアップしたときなどにいちいち電源を引き抜くのは精神衛生上良くないので
RebootとShutdown用のSwitchを付けようとググってみたら結構みなさん同じことを
考えてらっしゃいます。
で、プログラムもそのまま参考にさせていただきました。

sudo nano switch.py  で以下のプログラムを保存する。

 

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(6,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(5,GPIO.OUT)
GPIO.output(5,GPIO.LOW)

button_previous = 1
button_current = 1
brojac = 0
flag_pressed = 0

while True:
button_current = GPIO.input(6)
flag_pressed = button_previous + button_current

if (not(flag_pressed)):
brojac += 1
else:
brojac = 0

if(button_current and (not button_previous)):
GPIO.output(5,GPIO.HIGH)
os.system(“sudo shutdown -r now”)
if((not flag_pressed) and brojac >= 100):
GPIO.output(5,GPIO.HIGH)
os.system(“sudo shutdown -h now”)
break

button_previous = button_current
time.sleep(0.03)

GPIO.cleanup()

これで、保存する。

ここでスイッチを作る。

WS000260

完成したらRaspberryPiに繋いで下記コマンドで動作実験をする。

sudo python switch.py

そして一回ボタンを押すとLEDが数秒点灯してRebootします。
次に長押しすると終了します。
(2回目のとき実行するのを忘れないように)

OKだったら起動プログラムに登録しましょう。

sudo nano /etc/rc.local 本文の最後の exit 0 の前に書きます。

sudo python /home/pi/switch.py &

保存したら再起動して動作確認。

 

以下のサイトを参考にさせて貰いました
ありがとうございました。

Raspberry Piにシャットダウンとリブートボタンを設置する

RaspberryPi ボタン付き3.2インチ液晶

ボタンの設定プログラム
cd /home/pi
sudo nano TFT_button.py
で以下の内容を転記し保存する。

#!/usr/bin/python

import time, sys, os, commands
import RPi.GPIO as GPIO

Button1 = 18
Button2 = 23
Button3 = 24

try:
GPIO.setmode(GPIO.BCM)
GPIO.setup(Button1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Button2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Button3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while 1:
data1 = GPIO.input(Button1)
data2 = GPIO.input(Button2)
data3 = GPIO.input(Button3)

# If the button is pressed, take action.
if data1 == 0:
os.system(“FRAMEBUFFER=/dev/fb1 su -l pi -c startx &”)
time.sleep(10)

if data2 == 0:
os.system(“sudo shutdown -h now”)
time.sleep(99)

if data3 == 0:
os.system(“sudo shutdown -r now”)
time.sleep(99)

time.sleep(0.1)

except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()

保存したら実行権を与え実行する。
sudo chmod +x TFT_button.py
続いて下記コマンドから起動時常駐させるよう変更する。
cd /etc/init.d
sudo nano TFT_button.sh
以下をファイルにコピペし保存する。

#! /bin/sh
### BEGIN INIT INFO
# Provides: TFT_button
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Buttons on the TFT monitor board
# Description: wait button press on the TFT monitor board
### END INIT INFO

# /home/pi/TFT_button.py

PIDFILE=/var/run/TFT_button.pid
case “$1” in
start)
if [ -f $PIDFILE ]; then
echo $PIDFILE exists.
exit 1
fi
start-stop-daemon -S -x /home/pi/TFT_button.py -b -m -p $PIDFILE
;;
stop)
if [ ! -f $PIDFILE ]; then
echo $PIDFILE not found.
exit 1
fi
start-stop-daemon -K -p $PIDFILE
rm $PIDFILE
;;
*)
echo “Usage: /etc/init.d/TFT_button.sh {start|stop}”
exit 1
;;
esac

exit 0
実行可能にする。
sudo chmod +x TFT_button.sh
起動時の実行設定
sudo update-rc.d TFT_button.sh defaults
起動時の実行の取りやめ
sudo update-rc.d TFT_button.sh remove
以上