RaspberryPiへシャットダウンボタンを設置


タイトルの通りRaspberryPiにシャットダウンボタンをつけたいと思います。
機能としては、ボタンを長押し(5秒以上)するとシャットダウン、短く押すとリブートするようにします。

用意するもの

タクトスイッチ
抵抗(1kΩ)(適当に100Ωから1kΩくらいで大丈夫です)
ブレッドボード
ジャンパーコード(オス-メス、オス-オス)

配線はこんな感じです。
IMG_0582IMG_0583

今回は17番ピンを使用します。
プログラムは以下

#!/usr/bin/env python

import RPi.GPIO as GPIO
import time
import os

PIN = 17
MAXTIME = 5

GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

def shutdown():
    print "shutdown"
    os.system("sudo shutdown -h now")

def reboot():
    print "reboot"
    os.system("sudo shutdown -r now")

try:
    GPIO.wait_for_edge(PIN,GPIO.RISING)
except:
    print "Quit"
finally:
    count = 0
    while GPIO.input(PIN) == 1:
        print "Push", count
        if count >= MAXTIME:
            shutdown()
            break
        count += 1
        time.sleep(1.0)
    else:
            reboot()
    print "FINISH"
    GPIO.cleanup()

このプログラムを保存(switch.py)して実行します。

$ sudo python ./switch.py

ボタンをポチッと押すと再起動、長押しをするとシャットダウンされます。あとで気づいたのですが、LEDかなんかをつけておくとシャットダウンなのか再起動なのかわかりやすいかもしれません。
あとは起動したタイミングでこのプログラムを実行するように/etc/rc.localに以下を記述します。

※exit 0の前に記述
sudo python /home/ユーザー名/switch.py &

※ユーザー名は各自読み替えてください。
以上で起動時にプログラムが読み込まれボタンを押すとシャットダウン、リブートできるようになります。
スポンサード・リンク


日本で一番簡単にビットコインが買える取引所 coincheck bitcoin