RaspberryPiのシャットダウン処理をボタン1つで実行する方法

概要

・コマンドを叩いてシャットダウンさせるのが面倒。
・コンセント側からのON/OFFは基板に良くない。場合によってはmicroSDが破損する。
・自律制御ロボットだとディスプレイがない。
このような状況/環境において、シャットダウン処理をボタン1つで実行できると便利になると思い制作しました。

準備するもの

・Raspberry Pi 一式
・ブレットボード 一式
・ボタン (本記事ではタクトスイッチを使用しています。)

実行環境

・Raspberry Pi 3(Raspbian)
・Python 3

回路

画像1

回路図が読めない方向けにブレットボードの配線図も用意しました。
こちらも参考にしてください。

画像2

ソフトウェア

PythonからGPIOを操作するために、"RPi.GPIO"のパッケージをインストールしてください。1度インストールした場合は必要ありません。
・"RPi.GPIO"のインストール

sudo apt-get install python-rpi.gpio

・Pythonのソースコード

import time
import RPi.GPIO as GPIO
import os

pin=21    # ボタンを接続したGPIO番号の設定
GPIO.setmode(GPIO.BCM)    # ポート番号の指定方法をGPIO番号に指定

GPIO.setup(pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)    # GPIOをプルアップに設定
while True:
   GPIO.wait_for_edge(pin,GPIO.FALLING)    # GPIO入力がON→OFFになるまで待機
   sw_count=0
   while True:
       sw_status=GPIO.input(pin)    # GPIO入力の読み取り
       if sw_status==0:
           sw_count+=1
           if sw_count>=50:
               os.system("sudo shutdown -h now")    # シャットダウン処理の実行
               break
           else:
               break
           time.sleep(0.01)

実行


よろしければサポートお願いします。頂いたサポートは全額制作活動費(機材購入、イベント出展、エナドリ代)に活用させて頂きます。 制作活動の継続/生きる希望になりますので、よろしくお願いします。