Bạn không cần phải tháo nguồn để khởi động lại Pi. Có một cặp miếng đệm gần Thẻ SD (Tôi nghĩ rằng thiết lập lại có nhãn có thể chạy - Tôi không thể nhìn thấy trên Pi của mình vì tất cả chúng đều được hàn trên bảng.) Ngay lập tức để khởi động lại.
Rasbpian gần đây có một quy trình được xây dựng để tắt máy (xử lý bởi systemd-logind
)
Thêm vào đây /boot/config.txt
dtoverlay=gpio-shutdown,gpio_pin=5
Điều này cho phép một công tắc được kết nối giữa chân 29 (GPIO 5) và chân 30 (Gnd) để bắt đầu tắt Pi theo thứ tự.
Hầu như bất kỳ mã pin nào cũng có thể được sử dụng - mặc định là chân 5 (GPIO 3), mặc dù mã này thường được sử dụng cho I²C
,gpio_pin=21
sẽ sử dụng cùng các chân được sử dụng trong mã script 40 (GPIO 21) và chân 39 (Gnd)
Tôi khuyên bạn nên sudo poweroff
tắt Pi. Không có gì sai với những gì bạn đang làm, nhưng poweroff
làm cho đèn LED xanh nhấp nháy 10 lần trong khoảng thời gian 1 giây khi an toàn để tắt nguồn.
Tôi có một tập lệnh Python tắt Pi bằng một nút bấm.
#!/usr/bin/env python2.7
#-------------------------------------------------------------------------------
# Name: Shutdown Daemon
#
# Purpose: This program gets activated at the end of the boot process by
# cron. (@ reboot sudo python /home/pi/shutdown_daemon.py)
# It monitors a button press. If the user presses the button, we
# Halt the Pi, by executing the poweroff command.
#
# The power to the Pi will then be cut when the Pi has reached the
# poweroff state (Halt).
# To activate a gpio pin with the poweroff state, the
# /boot/config.txt file needs to have :
# dtoverlay=gpio-poweroff,gpiopin=27
#
# Author: Paul Versteeg
#
# Created: 15-06-2015, revised on 18-12-2015
# Copyright: (c) Paul 2015
# https://www.raspberrypi.org/forums/viewtopic.php?p=864409#p864409
#-------------------------------------------------------------------------------
import RPi.GPIO as GPIO
import subprocess
import time
GPIO.setmode(GPIO.BCM) # use GPIO numbering
GPIO.setwarnings(False)
# I use the following two GPIO pins because they are next to each other,
# and I can use a two pin header to connect the switch logic to the Pi.
# INT = 17 # GPIO-17 button interrupt to shutdown procedure
# KILL = 27 # GPIO-27 /KILL : this pin is programmed in /boot/config.txt and cannot be used by any other program
INT = 21 # GPIO button interrupt to shutdown procedure
# use a weak pull_up to create a high
GPIO.setup(INT, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def main():
while True:
# set an interrupt on a falling edge and wait for it to happen
GPIO.wait_for_edge(INT, GPIO.FALLING)
# print "button pressed"
time.sleep(1) # Wait 1 second to check for spurious input
if( GPIO.input(INT) == 0 ) :
subprocess.call(['poweroff'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if __name__ == '__main__':
main()