Recherchez et suivez l'évolution des prix sur 140 000 produits

Tutoriel : Ajouter bouton Reset à une Raspberry Pi

0

Ce que l'on va faire

L'un des gros problèmes pour moi avec le Raspberry Pi est qu'il n'est pas possible d'éteindre l'ordinateur sans enlever le cable d'alimentation (ou en tapant une commande dans le terminal ou par le menu de raspbian). Non je parle du bon vrai bouton des famille qui permet de faire un hard reset. Bref Il manque un bouton marche/arrêt comme tout autre appareil électronique digne de ce nom.

Comme vous le savez déjà... ou pas, éteindre le Raspberry Pi "à chaud", en tirant comme un bourrin le cable d'alimentation n'est pas franchement conseillé, car si la méthode est efficace héhé 🙂 celle-ci peut tout simplement corrompre les fichiers système qui sont sur la carte SD. Car en principe un certain nombres de procédures essentielles se déroules lorsqu'on éteind une machine. C'est pourquoi il est intérressant de protéger son raspberry avec un onduleur, pour éviter toute coupure du courant.

Cablage

Pour assembler le bouton, et avant de mettre de l'étain de partout je vous conseille d'utiliser une table de prototypage 🙂 . Dans l'image ci-dessous vous pouvez voir le schéma de câblage, comme vous le verrez j'ai utilisé la broche de sortie 3, une broche V (le +) et une broche GND (le -), ainsi que la broche GPIO nº4 (BCM). Lorsqu'on appuie sur le bouton celui-ci génére un court-circuit entre la broche 3. V et GND il faut donc ajouter une résistant  (330 Ohms) pour éviter de tout cramer.

Script Python

Une fois que les exercices pratiques sont terminés on va faire maintenant un peu de programmation. Une fois que le cablage est terminé et que vous avez tout bien vérifié ;), nous allons créer une petit script Python tout mignon qui va en fait simplement détecter la pression du bouton. Il lancera alors d'arrêt ou de redémarrage de notre Raspberry Pi.

Ce serait le code de notre script d'arrêt. Dans la ligne 11 vous pouvez voir "sudo halt" qui est la commande pour éteindre le Rasp, vous pouvez le changer pour "sudo reboot" ou toute autre commande que vous voulez exécuter quand le bouton est appuyé.

On va donc créer le fichier, pour cela taper la commande ci-dessous :

cd ~/

Puis

nano boutonStart.py

Copier  / Coller ensuite le code ci-dessous (CTRL + SHIFT + V)

import os
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.IN)
prev_input = 0
while True:  
 input = GPIO.input(4)  
 if ((not prev_input) and input):    
  os.system(sudo halt)  
prev_input = input  
#Une petite pause  
time.sleep(0.05)

Enregistrez en faisant CTRL + X et Yes

Pour démarrer le script, il suffit ensuite de taper dans le terminal:

sudo python boutonStart.py

Automatisation

Le problème avec ce système est que nous devrons démarrer manuellement le script à partir de la console à chaque fois que nous démarrons le Raspberry pour que le processus soit "Actif". Et ce n'est pas ce que vous souhaitez j'immagine, vous voulez un truc automatique vous ? Hein ?

On ouvre alors le terminal et on écrit:

sudo vi /etc/rc.local

Una vez abierto escribimos "sudo python shutdown.

sudo python boutonStart.py
exit 0

Nous pouvons maintenant redémarrer ou arrêter notre Raspberry Pi sans aucun problème car la prochaine fois qu'il démarrera, le script démarrera automatiquement avec la carte.

/!\ Une petite update : Le script ci-dessus consomme pas mal de CPU, voici une version plus "légère"

from subprocess import call
import RPi.GPIO as gpio

def loop():
   raw_input()

def shutdown(pin):
   call('halt', shell=False)

gpio.setmode(gpio.BOARD)
gpio.setup(4, gpio.IN)
gpio.add_event_detect(4, gpio.RISING, callback=shutdown, bouncetime=200)

loop()

N'hésitez pas à laisser un commentaire si vous rencontrez un problème où si pour me dire que ça fonctionne 🙂

Partager.

A propos de l'auteur

Créateur du site, passionné par la domotique, le développement Web, Les gadgets Chinois et par plus ou moins tout ce qui existe en fait. Le site a été créé autour de l'impression 3D et de la domotique, mais d'autres briques s'ajoutent eu fil du temps. Car dès que j'ai une nouvelle passion, j'essaye de la faire partager. Vous pouvez aussi découvrir mon blog dédié à la pâtisserie.

Laisser un commentaire