Sie müssen die Stromversorgung nicht trennen, um Pi neu zu starten. In der Nähe der SD-Karte befinden sich ein Paar Pads (ich denke, Reset ist möglicherweise aktiv - ich kann es auf meinem Pi nicht sehen, da alle Schalter auf der Platine gelötet sind.) Momentan kurz, um neu zu starten.
Neuere Rasbpianer haben einen eingebauten Prozess zum Herunterfahren (gehandhabt von systemd-logind
)
Fügen Sie Folgendes hinzu zu /boot/config.txt
dtoverlay=gpio-shutdown,gpio_pin=5
Dies ermöglicht es einem zwischen Pin 29 (GPIO 5) und Pin 30 (Gnd) angeschlossenen Schalter, ein ordnungsgemäßes Herunterfahren des Pi auszulösen.
Es kann fast jeder Pin verwendet werden - der Standard ist Pin 5 (GPIO 3), obwohl dieser häufig für I²C
,gpio_pin=21
verwendet wird und die gleichen Pins verwendet werden, die in den Skript-Pins 40 (GPIO 21) und 39 (Gnd) verwendet werden.
Ich empfehle sudo poweroff
, den Pi herunterzufahren. Es ist nichts falsch an dem, was Sie tun, aber poweroff
die grüne LED blinkt 10 Mal im Abstand von 1 Sekunde, wenn das Gerät ausgeschaltet werden kann.
Ich habe ein Python-Skript, das den Pi mit einem Druckknopf herunterfährt.
#!/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()