GPIO-23に繋いだプッシュスイッチを3秒押しっぱなしにするとシャットダウンが始まるようにする

/usr/local/bin/shutdownd.py

#!/usr/bin/python 
# coding:utf-8

#             +-----+
#          3V3| 1  2|5V
#    (SDA)GP02| 3  4|5V
#    (SCL)GP03| 5  6|GND
# (GPCLK0)GP04| 7  8|GP14(TxD)
#          GND| 9 10|GP15(RxD)
#         GP17|11 12|GP18(PCM_CLK)
#         GP27|13 14|GND
#         GP22|15 16|GP23
#          3V3|17 18|GP24
#   (MOSI)GP10|19 20|GND
#   (MISO)GP09|21 22|GP25
#   (SCLK)GP11|23 24|GP08(CE0)
#          GND|25 26|GP07(CE1)
#  (ID_SD)GP00|27 28|GP01(ID_SC)
#         GP05|29 30|GND
#         GP06|31 32|GP12(PWM0)
#   (PWM1)GP13|33 34|GND
# (PCM_FS)GP19|35 36|GP16
#         GP26|37 38|GP20(PCM_DIN)
#          GND|39 40|GP21(PCM_DOUT)
#             +-----+

import time
import RPi.GPIO as GPIO
import os

# 入力GPIO番号で指定する(物理ピン番号では無い)
pinnumber=23
GPIO.setmode(GPIO.BCM)

GPIO.setup(pinnumber,GPIO.IN,pull_up_down=GPIO.PUD_UP)

while True:
    # 立ち下がりエッジを検出したら
    GPIO.wait_for_edge(pinnumber, GPIO.FALLING)
    sw_counter = 0

    while True:
        sw_status = GPIO.input(pinnumber)
        if sw_status == 0:
            sw_counter = sw_counter + 1
            if sw_counter >= 30:
                print("長押し検出")
                #os.system("sudo sudo dd if=/dev/zero of=/dev/fb0")
                os.system("sudo shutdown -h now")
                break
        else:
            print("短押し検出")
            break

        time.sleep(0.1)

    print(sw_counter)

/usr/lib/systemd/system/shutdownbuttond.service

[Unit]
Description=Shutdown Daemon

[Service]
ExecStart =/usr/local/bin/shutdownd.py
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

デーモンを有効化

sudo chmod 755 /usr/local/bin/shutdownd.py
sudo systemctl enable shutdownbuttond.service
sudo systemctl daemon-reload
sudo systemctl start shutdownbuttond.service

shutdoown後に電源抜き差しせずに再起動

GP-3(SCL 5pin)をGNDに落とSWを付けると起動ボタンに使える

参考(引用)元

https://qiita.com/clses/items/e701c1cb6490751a6040


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-27 (月) 23:39:34