Aller au contenu

Ajouter un bouton d’extinction (avec Python)

Tuto Raspberry pi 4 ovh
Publié dans Tutoriels · 14 Mars 2013
Tags: BOUTONOFFARRETSTOPRASPBERRY

Raspberry Pi : Ajouter un bouton d’extinction (avec Python)

1119_LRG

S’il manque une seule chose au Raspberry Pi, c’est un bouton d’extinction. En effet, on a pas toujours un clavier sous la main, ou un ordinateur pour lancer le fameux « sudo halt » en SSH… Parfois il nous arrive même de faire des erreurs, et le Raspberry Pi peut se retrouver bloqué, avec pour seule solution de le débrancher à chaud. Cette dernière méthode est d’ailleurs à proscrire, puisqu’elle peut totalement détruire votre système d’exploitation, voire la carte SD. Nous allons donc connecter un bouton, qui nous servira à éteindre le Pi une fois pressé (pour l’allumage, ce sera le sujet d’un autre article). De cette façon, même si le Pi est planté, on devrait toujours pouvoir l’éteindre proprement.

Prérequis

Nous aurons besoin pour ce guide :

  • d’un Raspberry Pi (la préparation grâce au mini-guide ~4 est idéale)
  • d’une platine d’expérimentation (un petit modèle suffira),
  • d’un bouton de type micro-switch,
  • de deux fils Dupont male-femelle,
  • du guide ~5 : Ajouter un bouton matériel (avec Python) pour le câblage et les explications techniques

Explication

Le code du bouton sera un peu amélioré par rapport à l’exemple du guide. En effet, nous allons utiliser une autre technique, appelée threaded callback, qui permettra à notre script de faire autre chose pendant qu’il attend un appui sur le bouton. En clair, le threaded callback peut par exemple permettre de gérer plusieurs boutons avec un seul et même script !

Le code

En admettant qu’on désire que notre script se trouve dans le dossier /home/pi/, lancer la commande sudo nano /home/pi/bouton_extinction.py. Cela créera le fichier et l’ouvrira pour l’édition.

Coller ce code dans le fichier qu’on vient de créer :

#!/usr/bin/env python2.7

# on importe les modules necessaires
import time
import os
import RPi.GPIO as GPIO

# on met RPi.GPIO en mode notation BCM (numero des pins)
GPIO.setmode(GPIO.BCM)

# on initialise le GPIO 23 en mode ecoute
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# on definit notre fonction qui sera appelee quand on appuiera sur le bouton
def extinction(channel):
     # on affiche un petit message pour confirmer
     print("Appui détecté sur le GPIO 23")
     # on reinitialise les GPIO
     GPIO.cleanup()
     # on lance la commande d extinction
     os.system('sudo halt')

# on met le bouton en ecoute
GPIO.add_event_detect(23, GPIO.FALLING, callback=extinction)

# on lance une boucle infinie, pour garder le script actif
while 1:
     # une petite pause entre chaque boucle, afin de réduire la charge sur le CPU
     time.sleep(0.02)

# on reinitialise les ports GPIO en sortie de script
GPIO.cleanup()

CTRL+O puis ENTREE pour sauvegarder, CTRL+X pour quitter

Il suffit maintenant de lancer notre script au démarrage du Raspberry Pi, et on aura terminé !

  • Rendre le script exécutable avec la commande sudo chmod +x /home/pi/bouton_extinction.py
  • ouvrir le script de démarrage automatique avec la commande sudo nano /etc/rc.local
  • juste avant la ligne # Print the IP address, insérer la commande suivante : sudo python /home/pi/bouton_extinction.py

A l’avenir, si vous devez lancer des commandes au démarrage, veillez à les lancer après le script bouton_extinction.py. De cette façon, le bouton devrait fonctionner quoi qu’il arrive (a part en cas de gros problème de démarrage, mais dans ce cas, le bouton ne sera pas une priorité).

Nous avons terminé avec ce tutoriel, et vous avez maintenant un bouton matériel pour éteindre votre Raspberry Pi… Félicitations !




Mentions Légales - raspberry-pi.ovh 2022 © Copyright- Raspberry Pi est une marque déposée de la Raspberry Foundation - Les contenus rédigés par raspberry-pi.ovh sont distribués sous license open source.
Retourner au contenu