タイトルの通りRaspberryPiにシャットダウンボタンをつけたいと思います。
機能としては、ボタンを長押し(5秒以上)するとシャットダウン、短く押すとリブートするようにします。
用意するもの
タクトスイッチ
抵抗(1kΩ)(適当に100Ωから1kΩくらいで大丈夫です)
ブレッドボード
ジャンパーコード(オス-メス、オス-オス)
今回は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 &
※ユーザー名は各自読み替えてください。
以上で起動時にプログラムが読み込まれボタンを押すとシャットダウン、リブートできるようになります。
スポンサード・リンク