Du behöver inte ta bort strömmen för att starta om Pi. Det finns ett par kuddar nära SD-kortet (jag tror att märkt återställning kan köras - jag kan inte se på min Pi eftersom de alla har strömbrytare lödda på kortet.) Kort för att starta om.
Senaste Rasbpian har en inbyggd process för avstängning (hanteras av systemd-logind
)
Lägg till följande i /boot/config.txt
dtoverlay=gpio-avstängning,gpio_pin=5
Detta möjliggör en växling ansluten mellan stift 29 (GPIO 5) och stift 30 (Gnd) för att initiera en ordnad avstängning av Pi.
Nästan alla stift kan användas - standard är stift 5 (GPIO 3), även om detta ofta används för I²C , gpio_pin = 21 skulle använda samma stift som används i skriptstiftet 40 (GPIO 21) och stift 39 (GND)
Jag rekommenderar sudo poweroff
till stäng Pi. Det är inget fel med vad du gör, men poweroff
får den gröna lysdioden att blinka 10 gånger med 1 sekunders intervall när det är säkert att stänga av.
Jag har ett Python-skript som stänger av Pi med en tryckknapp.
#! / usr / bin / env python2.7 # --------- -------------------------------------------------- -------------------- # Namn: Shutdown Daemon ## Syfte: Detta program aktiveras i slutet av startprocessen av # cron. (@ reboot sudo python /home/pi/shutdown_daemon.py)# Den övervakar en knapptryckning. Om användaren trycker på knappen, stoppar vi Pi genom att utföra poweroff-kommandot. ## Strömmen till Pi kommer sedan att brytas när Pi har nått # poweroff-tillståndet (Halt). # Att aktivera en gpio-pin med poweroff-tillståndet, filen # /boot/config.txt måste ha: # dtoverlay = gpio-poweroff, gpiopin = 27 ## Författare: Paul Versteeg ## Skapad: 15-06-2015, reviderad 18-12-2015
# Copyright: (c) Paul 2015 # https://www.raspberrypi.org/forums/viewtopic.php?p=864409#p864409#------------------- -------------------------------------------------- ---------- importera RPi.GPIO som GPIOimport underprocessimporttidGPIO.setmode (GPIO.BCM) # använd GPIO-numreringGPIO.setwarnings (Falskt) # Jag använder följande två GPIO-stift eftersom de ligger bredvid varandra, # och jag kan använda ett tvåstiftshuvud för att ansluta switchlogiken till Pi. # INT = 17 # GPIO-17-knappen avbryter för avstängningsproceduren # KILL = 27 # GPIO-27 / KILL: denna stift är programmerad i / boot / config.txt och kan inte användas av något annat programINT = 21 # GPIO-knapp avbryt för avstängningsprocedur # använd en svag pull_up för att skapa en highGPIO.setup (INT, GPIO.IN, pull_up_down = GPIO.PUD_UP) def main (): medan Sant: # ställa in ett avbrott på en fallande kant och vänta tills det händer GPIO.wait_for_edge (INT, GPIO.FALLING) # tryck "knappen tryckt" tid. Sov (1) # Vänta 1 sekund för att kontrollera falsk inmatning if (GPIO.input (INT) == 0): subprocess.call (['poweroff'], shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE) if __name__ == '__main__': main ()