Comment ajouter un bouton d'arrêt à votre Raspberry Pi.
Comme il n’y a pas de Bouton pour éteindre votre Raspberry Pi, je vous ai créé une petite technique très utile.
Celle-ci éteindra votre Raspberry proprement sans risque d’endommager votre carte SD ou vos fichiers.
- Prérequis:
- Un Raspberry Pi (model B)
- Un bouton
- Une LED
- Des connecteurs mâles <> Femelles
- Une résistance 220Ω
2. Installation:
Commencez par tout connecter comme sur l’image ci-dessous:
3. Continuons avec un peu de code:
- Mettre à jour la distribution:
sudo apt-get update && apt-get upgrade -y
- Installer les paquets nécessaires (Python)
sudo apt-get install -y python python-rpi.gpio
Nous allons maintenant créer le script Python qui sera automatiquement démarré lors du boot. pour cela:
sudo /etc/init.d/shutdownBtn.py
Ensuite copiez le code suivant et faites un Ctrl+X ; suivi d’un Y et Enter:
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time as time
import os
import signal
# Define mode to access GPIO pins
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# pin id for the shutdown button
GPIO_shutdown=23
# pin id for the LED status
GPIO_led=17# GPIO_shutdown will be an input pin
GPIO.setup(GPIO_shutdown, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# GPIO_led will be an output pin
GPIO.setup(GPIO_led, GPIO.OUT)# Handler to stop the process
def signal_handler(signal, frame):
# Turn off the status LED
GPIO.output(GPIO_led, False)
GPIO.cleanup()
exit(0)# Define what to do when the shutdown button is pressed
def funcShutdown(channel):
start_time = time.time()
intSeconds = 0
# How long to wait for the button
maxWaitPushButton = 2
while intSeconds < maxWaitPushButton and GPIO.input(channel) == GPIO.LOW : intSeconds = time.time() – start_time time.sleep(0.1) if intSeconds >= maxWaitPushButton:
# Turn off the status LED
GPIO.output(GPIO_led, False)
GPIO.cleanup()
os.system(‘sudo halt’)
#exit()# Add a signal handler for the SIGTERM signal
signal.signal(signal.SIGTERM, signal_handler)
# Wait for the shutdown button to be pressed
GPIO.add_event_detect(GPIO_shutdown, GPIO.FALLING, callback=funcShutdown, bouncetime=300)
# Light up the status LED
GPIO.output(GPIO_led, True)
# Loop
while 1:
time.sleep(0.2)
Voici le script qui sera utilisé lors de la séquence de Boot.
sudo /etc/init.d/shutdownBtn.
Copiez-le:
#!/bin/bash
### BEGIN INIT INFO
# Provides: shutdownBtn.
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Script to add the capability to shutdown the Raspberry Pi with a button
# Description: Script to add the capability to shutdown the Raspberry Pi with a button
### END INIT INFOcase « $1 » in
start)
/usr/bin/python /etc/init.d/shutdownBtn.py &
echo $! > /tmp/.shutdownBtn-pid
;;
stop)
kill `cat /tmp/.shutdownBtn-pid`
;;
reload|restart)
$0 stop
$0 start
;;*)
echo « Usage: $0 start|stop|restart|reload »
exit 1
esac
exit 0
Ensuite, nous lui donnons les droits nécessaires:
sudo chmod 755 /etc/init.d/shutdownBtn.
Puis, on ajoute le script dans la séquence de démarrage:
sudo insserv shutdownBtn.
Et voilà, c’est très simple !
La LED indique que tous les processus sont bien démarrés et le bouton sert à lancer le processus d’extinction 🙂