Tutoriels

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.

  1.  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:

 

shutdownBtn.

 

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 INFO

case « $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 🙂

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page