Bouton d’arrêt Raspberry Pi RetroPie

Bouton d'arrêt Raspberry Pi RetroPie

L’arrêt de RetroPie nécessite généralement l’utilisation d’un menu dans l’interface Emulation Station. Ce tutoriel explique comment vous pouvez le faire via un bouton d’arrêt connecté à l’en-tête GPIO du Raspberry Pi. Tout ce dont vous avez besoin est un interrupteur à action momentanée de base, du câblage et un simple script Python. C’est probablement la mise à niveau la plus utile que vous puissiez apporter à un système de jeu Pi.

Pourquoi s’embêter avec un bouton d’arrêt ?

J’ai décidé de mettre en place un bouton d’arrêt sur ma table d’arcade IKEA pour permettre aux enfants d’éteindre correctement le système sans avoir à s’amuser dans les menus. L’utilisation d’un interrupteur séparé sur le côté garantissait qu’il n’était pas activé accidentellement lors de la lecture de jeux avec les boutons du joueur principal.

Bien que ce guide soit particulièrement pertinent pour les systèmes RetroPie, il peut être utilisé dans n’importe quel projet Raspberry Pi.

Le bouton d’arrêt

Vous pouvez utiliser n’importe quel interrupteur à action momentanée pour ce projet. Cela vous permet de le maintenir enfoncé et de ne déclencher l’arrêt que s’il a été maintenu pendant un certain nombre de secondes. Cela évite tout arrêt accidentel surtout si le système est utilisé par des enfants curieux.

L’interrupteur/bouton que j’ai utilisé était un dispositif à action momentanée automobile avec un symbole d’alimentation illuminé.

Interrupteur à action momentanée Interrupteur à action momentanée

Il a été conçu pour 12V mais la LED rouge à l’intérieur fonctionne bien avec 3,3V ou 5V. Deux connexions étaient nécessaires pour la LED et deux pour le commutateur qui sert à changer l’état d’une broche GPIO.

N’oubliez pas que les numéros GPIO sont différents des numéros de broche physiques. GPIO22 est la broche 15.

Brochage du commutateur lumineux 12V

Broche de commutation Broche d’en-tête Pi
DEL + Broche 4 (5V)
LED – Broche 6 (terre)
NON (normalement ouvert) Broche 15 (GPIO22)
C (commun) Broche 17 (3.3V)

La LED est alimentée par l’alimentation 5V du Pi. Les broches GPIO ne doivent jamais être connectées à une tension supérieure à 3,3 V. Vérifiez le câblage pour vous assurer de ne jamais connecter les broches GPIO au 5V. Si votre interrupteur n’est pas de type lumineux, vous pouvez ignorer les références de LED dans le tableau ci-dessus.

Des cosses miniatures ont été utilisées pour attacher les fils à l’interrupteur. Cela a évité de souder quoi que ce soit au commutateur et m’a donné la possibilité de retirer ou de remplacer le commutateur à une date ultérieure.

Bouton d'arrêt RetroPie

Des connecteurs femelles de style « Dupont » ont permis de connecter facilement les fils à l’en-tête GPIO :

Câblage du bouton d'arrêt RetroPie

Le schéma ci-dessous montre comment ces fils ont été attachés à l’en-tête GPIO. J’ai utilisé les broches illustrées ci-dessous car elles étaient côte à côte et facilitaient un peu le câblage.

Câblage du bouton d'arrêt RetroPie

Accéder à la ligne de commande

Pour configurer le script, vous devrez utiliser la ligne de commande. Il existe deux méthodes que vous pouvez utiliser pour ce faire.

Méthode 1

Si vous connectez un clavier à votre système RetroPie, vous pouvez appuyer sur F4 pour afficher la ligne de commande. Lorsque vous devez retourner à EmulationStation, exécutez simplement la commande « emulationstation ».

Méthode 2

Vous pouvez également vous connecter au Pi via SSH. Veuillez consulter le didacticiel Comment activer l’interface SSH RetroPie pour plus de détails sur l’activation de SSH. Une fois activé, vous pouvez vous connecter à l’aide de n’importe quel client SSH sur votre PC, tel que « Putty ».

Installer GpioZero

Afin de vérifier l’état du bouton, vous devez installer la bibliothèque GpioZero. Ceci est installé par défaut sur l’image Raspbian mais pour RetroPie, il doit être installé manuellement.

Exécutez la commande suivante :

sudo apt-get -y install python3-gpiozero

Ajouter un script d’arrêt à RetroPie

Afin d’effectuer l’arrêt lorsque le bouton est enfoncé, vous aurez besoin d’un simple script Python. Le script est lancé lorsque le Pi démarre et surveille l’état de la broche GPIO. Cela peut être téléchargé directement dans le répertoire personnel de votre utilisateur Pi. Je le fais généralement en me connectant au Pi via SSH depuis mon PC. Vous pouvez activer SSH en suivant le didacticiel Comment activer l’interface SSH RetroPie.

Une fois connecté au Pi, vous pouvez télécharger le script en utilisant la commande suivante :

cd ~
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/retropie_shutdown.py

Maintenant, éditez crontab pour que le script démarre au démarrage du Pi :

sudo crontab -e

Si vous êtes invité à choisir un éditeur, sélectionnez l’option 2.

Ajoutez la ligne suivante :

@reboot python3 /home/pi/retropie_shutdown.py &

Votre crontab devrait maintenant ressembler à :

# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
@reboot python3 /home/pi/retropie_shutdown.py &

Appuyez sur CTRL-X, y et ENTER pour enregistrer le crontab.

Vous devriez être renvoyé à la ligne de commande. Vérifiez le contenu de crontab en utilisant :

sudo crontab -l

Assurez-vous que le nom du script correspond au script que vous avez téléchargé et que vous avez inclus le symbole « & » à la fin.

Enfin avec le bouton connecté à l’en-tête GPIO et le script prêt, vous pouvez redémarrer en utilisant :

sudo reboot

ou en utilisant le menu système RetroPie et en sélectionnant « Quitter » > « Arrêter le système ».

Premier démarrage

Lorsque le système redémarre, vous devriez voir votre interface RetroPie comme prévu. Appuyez sur le bouton d’arrêt RetroPie et maintenez-le enfoncé pendant six secondes et le Pi devrait commencer à s’éteindre.

Vous êtes maintenant libre de couper l’alimentation.

Personnalisation du script Python

La modification du script vous permettra de modifier facilement le nombre de secondes pendant lesquelles le bouton doit être maintenu avant qu’il ne déclenche un arrêt. La valeur par défaut est de 6 secondes. Vous pouvez également modifier le numéro GPIO si votre commutateur est connecté à une autre broche d’en-tête.

Modifiez simplement le script à l’aide de votre éditeur de texte préféré et modifiez les variables « myGPIO » et « myHoldTime ».

Par exemple, en utilisant le type nano :

nano retropie_shutdown.py

apportez vos modifications, puis utilisez CTRL-X, Y et ENTER pour enregistrer et quitter. N’oubliez pas de redémarrer pour que les modifications prennent effet.

sudo reboot

Bouton d’arrêt de ma table d’arcade

Voici quelques photos de mon bouton d’arrêt d’arcade que j’ai installé sur ma table d’arcade.

Un interrupteur lumineux est une touche agréable car il le rend plus facile à trouver dans une pièce sombre.

Dépannage

Enfin, si le bouton ne fonctionne pas comme prévu, voici quelques éléments à prendre en compte :

  • Vérifiez le câblage des boutons. Connectez-vous la bonne broche GPIO via le commutateur à 3,3 V ?
  • As-tu installé GpioZero ?
  • Le script se trouve-t-il dans le répertoire /home/pi ?
  • Avez-vous modifié et vérifié l’entrée crontab ? Pointe-t-il vers le script dans le bon répertoire ?
  • Si vous n’utilisez pas GPIO22, avez-vous modifié le script et mis à jour la référence GPIO ?